<?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>226304</bug_id>
          
          <creation_ts>2021-05-26 16:08:38 -0700</creation_ts>
          <short_desc>Leverage the new Vector(const T*, size_t) constructor</short_desc>
          <delta_ts>2021-05-26 20:18:22 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>msaboff</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>toyoshim</cc>
    
    <cc>tzagallo</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1764102</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-26 16:08:38 -0700</bug_when>
    <thetext>Leverage the new Vector(const T*, size_t) constructor in existing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764103</commentid>
    <comment_count>1</comment_count>
      <attachid>429809</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-26 16:10:58 -0700</bug_when>
    <thetext>Created attachment 429809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764104</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-05-26 16:11:38 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764111</commentid>
    <comment_count>3</comment_count>
      <attachid>429812</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-26 16:31:39 -0700</bug_when>
    <thetext>Created attachment 429812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764156</commentid>
    <comment_count>4</comment_count>
      <attachid>429812</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-05-26 18:08:16 -0700</bug_when>
    <thetext>Comment on attachment 429812
Patch

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

&gt; Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:47
&gt; +    Vector&lt;uint8_t&gt; value { data, length };
&gt;      return Blob::create(context, WTFMove(value), Blob::normalizedContentType(contentType));

Maybe merge this into a single line. We can omit the WTFMove so it won’t necessarily be a super-long line.

&gt; Source/WebCore/Modules/indexeddb/IDBGetResult.cpp:38
&gt; +    Vector&lt;uint8_t&gt; data { reinterpret_cast&lt;const uint8_t*&gt;(buffer.data()), buffer.size() };
&gt;      m_value = ThreadSafeDataBuffer::create(WTFMove(data));

Ditto. Also use dataAsUInt8Ptr() to avoid the reinterpret_cast.

&gt; Source/WebCore/Modules/webauthn/fido/FidoHidPacket.cpp:123
&gt; +    Vector&lt;uint8_t&gt; data = { serialized.begin() + index, dataSize };

No need for the &quot;=&quot; here.

&gt; Source/WebCore/crypto/mac/SerializedCryptoKeyWrapMac.mm:65
&gt;  inline Vector&lt;uint8_t&gt; vectorFromNSData(NSData* data)

Surprised that this is the only place this function is needed.

Also, should be marked static since it’s intended to have internal linkage.

&gt; Source/WebCore/fileapi/Blob.cpp:117
&gt; +    blobParts.append(BlobPart(Vector&lt;uint8_t&gt; { reinterpret_cast&lt;const uint8_t*&gt;(buffer.data()), buffer.size() }));

Use dataAsUInt8Ptr() to avoid the reinterpret_cast.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:296
&gt;  static Vector&lt;uint8_t&gt; vectorFromNSData(NSData* data)

Here it is, another copy of the same function as in SerializedCryptoKeyWrapMac.mm. With the same name.

&gt; Source/WebKit/UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.mm:46
&gt;  static inline Vector&lt;uint8_t&gt; convertBytesToVector(const uint8_t byteArray[], const size_t length)

Don’t really need a function for this any more. Could just put the braces down below.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:91
&gt;  static inline Vector&lt;uint8_t&gt; toVector(NSData *data)

A third copy of the same function as in SerializedCryptoKeyWrapMac.mm. This time with a different name.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:95
&gt; +    return { reinterpret_cast&lt;const uint8_t*&gt;(responseData.bytes), responseData.length };

This could use one of those many &quot;convert NSData to Vector&quot; functions.

&gt; Source/WebKit/UIProcess/WebURLSchemeTask.cpp:224
&gt; +            data = { reinterpret_cast&lt;const uint8_t*&gt;(m_syncData-&gt;data()), m_syncData-&gt;size() };

Use dataAsUInt8Ptr() to avoid the reinterpret_cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764166</commentid>
    <comment_count>5</comment_count>
      <attachid>429823</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-26 18:47:19 -0700</bug_when>
    <thetext>Created attachment 429823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764169</commentid>
    <comment_count>6</comment_count>
      <attachid>429825</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-26 18:56:24 -0700</bug_when>
    <thetext>Created attachment 429825
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764173</commentid>
    <comment_count>7</comment_count>
      <attachid>429827</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-26 19:16:19 -0700</bug_when>
    <thetext>Created attachment 429827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764187</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-26 20:17:35 -0700</bug_when>
    <thetext>Committed r278146 (238190@main): &lt;https://commits.webkit.org/238190@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429827.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1764188</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-26 20:18:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/78548298&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429809</attachid>
            <date>2021-05-26 16:10:58 -0700</date>
            <delta_ts>2021-05-26 16:35:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226304-20210526161057.patch</filename>
            <type>text/plain</type>
            <size>40792</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MmM4ZGQ4NTQ2M2FiZGJjODMzYzMxNzIyZGFmOWY0MzM3NDI0MTg0Li5hNThhODIzOTgxNmU0OWU3
OGVmYjVlNzRkNDVmNDFjNmNhOGU5MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNvbnN0IFQqLCBzaXplX3QpIGNvbnN0
cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjYzMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBM
ZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvciBpbiBl
eGlzdGluZyBjb2RlLgorCisgICAgICAgICogd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2VyOjpjb25zdW1lKToKKwogMjAyMS0w
NS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBVbmNo
ZWNrZWRMb2NrIGV2ZW4gbGVzcyBpbiBKYXZhU2NyaXB0Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAxNWRmOTFlOTc1ZjI5
MjBhZTZhYmY5ODFiM2IwZjIxYjc5Y2VkNDNiLi44ZjZjZmIxMTliNzdhOGY1YjBkODE2MTc1YTAz
MDcwZTAxYWI2MzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA1LTI2ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTGV2ZXJhZ2UgdGhlIG5ldyBWZWN0b3Io
Y29uc3QgVCosIHNpemVfdCkgY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjMwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNvbnN0IFQqLCBz
aXplX3QpIGNvbnN0cnVjdG9yIGluIGV4aXN0aW5nIGNvZGUuCisKKyAgICAgICAgKiB3dGYvdGV4
dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoYXNjaWlEZWJ1Zyk6CisKIDIwMjEtMDUtMjYgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVUkwg
cGF0aCBzZXR0ZXIgbWVzc2VzIHVwIFVURi04IGVuY29kaW5nIGFmdGVyID8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1NWVkYjQ0N2ZmYTMwMmY3YmY2YjMxMzViNDc0N2Y1NDMzNGZkMWM5Li43MWQ5ZTU5NmM0MGYw
ZjYwMjM1MmYwNjJkNTQyYjlkNWYxOTQ5OWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAK
KzIwMjEtMDUtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBM
ZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MzA0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGV2ZXJhZ2UgdGhl
IG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkgY29uc3RydWN0b3IgaW4gZXhpc3RpbmcgY29k
ZS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YmxvYkZyb21EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRh
RnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlv
blV0aWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRCeXRlc1RvVmVjdG9yKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3Bw
OgorICAgICAgICAoZmlkbzo6ZGVjb2RlUmVzcG9uc2VNYXApOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJ
bml0UGFja2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlkbzo6Rmlk
b0hpZENvbnRpbnVhdGlvblBhY2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vUGluLmNwcDoKKyAgICAgICAgKGZpZG86OnBpbjo6
ZW5jb2RlQ09TRVB1YmxpY0tleSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZlJlc3BvbnNlQ29udmVydGVyLmNwcDoKKyAgICAgICAgKGZpZG86OldlYkNvcmU6OmV4dHJhY3RF
Q1B1YmxpY0tleUZyb21VMmZSZWdpc3RyYXRpb25SZXNwb25zZSk6CisgICAgICAgIChmaWRvOjpX
ZWJDb3JlOjpleHRyYWN0Q3JlZGVudGlhbElkRnJvbVUyZlJlZ2lzdHJhdGlvblJlc3BvbnNlKToK
KyAgICAgICAgKGZpZG86OldlYkNvcmU6OmNyZWF0ZUZpZG9BdHRlc3RhdGlvblN0YXRlbWVudEZy
b21VMmZSZWdpc3RlclJlc3BvbnNlKToKKyAgICAgICAgKGZpZG86OnJlYWRVMmZTaWduUmVzcG9u
c2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdGcmFtZSk6Cisg
ICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0tl
eURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Y29weVRvVmVjdG9yKToKKyAgICAgICAgKiBjcnlw
dG8vZ2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0tleUVDOjpwbGF0Zm9ybUFkZEZpZWxkRWxlbWVudHMgY29uc3QpOgorICAgICAgICAqIGNyeXB0
by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6
OnBsYXRmb3JtSW1wb3J0UGtjczgpOgorICAgICAgICAqIGNyeXB0by9tYWMvU2VyaWFsaXplZENy
eXB0b0tleVdyYXBNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp2ZWN0b3JGcm9tTlNEYXRhKToK
KyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNT3BlblNTTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcnlwdERlY3J5cHQpOgorICAgICAgICAqIGZpbGVhcGkv
QmxvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpCbG9iKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCYWNraW5nU3RvcmU6OkltYWdlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3N0TWFwcGVkQnVmZmVyOjpjcmVh
dGVWZWN0b3IgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNUHJveHlDbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcm94eUNsZWFy
S2V5OjpjZW5jU2V0RGVjcnlwdGlvbktleSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFSZWNvcmRlclByaXZhdGVNb2NrOjpmZXRjaERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50Ojpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFwcGVuZERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcDoK
KyAgICAgICAgKE9wZW5TU0w6OkJJTzo6Z2V0RGF0YUFzVmVjdG9yIGNvbnN0KToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmRl
c2VyaWFsaXplQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEt
MDUtMjYgIFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByZXZlcnRpbmcgcjI3ODAyOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGYwMGQ1NWNl
YmFlYWRhZTA3ZDJiMjg0YjA5MmEwM2VmYTM2NDdmN2IuLjdjZDExN2NjZmFjNjI4OGFkNTA4MzU1
NmNiODQ1NDUzNDBiYTFmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDIxLTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTGV2
ZXJhZ2UgdGhlIG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkgY29uc3RydWN0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjMwNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldmVyYWdlIHRoZSBu
ZXcgVmVjdG9yKGNvbnN0IFQqLCBzaXplX3QpIGNvbnN0cnVjdG9yIGluIGV4aXN0aW5nIGNvZGUu
CisKKyAgICAgICAgKiBwYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwOgor
ICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKToKKwogMjAyMS0wNS0yNCAg
U2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0g
Y29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDU2ZDVhMGFlZTc3ZWE3NGQwMTBkZTQxZThmNjkwZjg2OTc5YTk1YTQuLmUwMDc3NTE2MjNh
YTA3OTg0MTA2YmMxNzQ1OTNjNWY2NWUwYzU5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMjEtMDUtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBM
ZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MzA0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGV2ZXJhZ2UgdGhl
IG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkgY29uc3RydWN0b3IgaW4gZXhpc3RpbmcgY29k
ZS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOgorICAgICAgICAo
SVBDOjpBcnJheVJlZmVyZW5jZTo6dmVjdG9yIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgICh2ZWN0b3JG
cm9tTlNEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9y
aXphdGlvblNlc3Npb24ubW06CisgICAgICAgIChXZWJLaXQ6OldlYkNvcmU6OmNvbnZlcnRCeXRl
c1RvVmVjdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVj
dGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6cmVwb3J0UmVjZWl2ZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06Cisg
ICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVybmFsOjp0b1ZlY3Rvcik6Cisg
ICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVybmFsOjphYWd1aWRWZWN0b3Ip
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpOZmNDb25uZWN0aW9uOjp0cmFuc2FjdCBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorCiAyMDIxLTA1LTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVhc2UgbG9nZ2lu
ZyBpbiBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAppbmRl
eCAyODAxMGI4OGNiYmI2ODYyN2JjYzMzODgyYmI0MWQxNjU1OTgyMmE4Li4xZDIyNWM3OGUwM2I4
ZGE5OTQyZjMyMmJhODIzMDM3Y2UwMmY4YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcApAQCAtMTk3LDggKzE5Nyw3IEBAIGF1
dG8gU3RyZWFtaW5nUGFyc2VyOjpjb25zdW1lKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3Qg
Ynl0ZXNTaXplLCBzaXplX3QmIG9mCiAgICAgfQogCiAgICAgaWYgKG1fcmVtYWluaW5nLnNpemUo
KSA+IHJlcXVpcmVkU2l6ZSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KHJlcXVp
cmVkU2l6ZSk7Ci0gICAgICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBtX3JlbWFpbmluZy5kYXRh
KCksIHJlcXVpcmVkU2l6ZSk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQgeyBtX3Jl
bWFpbmluZy5kYXRhKCksIHJlcXVpcmVkU2l6ZSB9OwogICAgICAgICBtX3JlbWFpbmluZy5yZW1v
dmUoMCwgcmVxdWlyZWRTaXplKTsKICAgICAgICAgbV9uZXh0T2Zmc2V0ICs9IHJlcXVpcmVkU2l6
ZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRl
eCAyNDU3Y2VmNmM1M2ZhYWRmNzc0MGM5Yzk2MTg3YmRhYWZiNDk0OGNhLi44NmY5ODM4MGRhMDg1
ZWEzMmJmYmMwMDM3MDEwNjk0Mjk5MmMzYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3Bw
CkBAIC05MDIsOSArOTAyLDcgQEAgVmVjdG9yPGNoYXI+IGFzY2lpRGVidWcoU3RyaW5nSW1wbCog
aW1wbCkKICAgICAgICAgfQogICAgIH0KICAgICBDU3RyaW5nIG5hcnJvd1N0cmluZyA9IGJ1ZmZl
ci50b1N0cmluZygpLmFzY2lpKCk7Ci0gICAgVmVjdG9yPGNoYXI+IHJlc3VsdDsKLSAgICByZXN1
bHQuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5hcnJvd1N0cmluZy5kYXRh
KCkpLCBuYXJyb3dTdHJpbmcubGVuZ3RoKCkgKyAxKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5hcnJvd1N0cmluZy5kYXRh
KCkpLCBuYXJyb3dTdHJpbmcubGVuZ3RoKCkgKyAxIH07CiB9CiAKIFZlY3RvcjxjaGFyPiBhc2Np
aURlYnVnKFN0cmluZyYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCA1NWNmZGFhZDdkYmZjMTE1ZDkyN2ZhZjlh
NGU4MGEzMTZjM2Y1MjYxLi4wMGNkZGM1MmIxZDkwYWIyMWI0MTMxY2Q0NjU1NjhmNWQwYTVkYWZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcApAQCAtNDMsOCArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBp
bmxpbmUgUmVmPEJsb2I+IGJsb2JGcm9tRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlKGxlbmd0aCk7
Ci0gICAgbWVtY3B5KHZhbHVlLmRhdGEoKSwgZGF0YSwgbGVuZ3RoKTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gdmFsdWUgeyBkYXRhLCBsZW5ndGggfTsKICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNv
bnRleHQsIFdURk1vdmUodmFsdWUpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoY29udGVu
dFR5cGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCR2V0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkdldFJlc3VsdC5jcHAKaW5kZXggMmM1OWRlMGNjZTE3ZDMzNTQ1OTMyYmNiMzY1NWIwZWIzZTU1
OGU3ZC4uNWFjZWYyMGQ3Yjk2Mjk1Mjc1NTBiNTFhMmU3ZWZmYzEyM2ZmNTE4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBAIC0z
NCw5ICszNCw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJREJHZXRSZXN1bHQpOwog
CiB2b2lkIElEQkdldFJlc3VsdDo6ZGF0YUZyb21CdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoYnVmZmVyLnNpemUoKSk7Ci0gICAgbWVtY3B5
KGRhdGEuZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLQorICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVy
LmRhdGEoKSksIGJ1ZmZlci5zaXplKCkgfTsKICAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKaW5k
ZXggYmU5MjYxMmQ4MWQzMTc5MDk3Y2JhYmI2NWNhMjIwYjI5MGEwMTVkYy4uMDY4ZmVmNjI1YThl
MjgyMWI0YjhmNGQ2ODk1YzU3ZjA1YzU5MGI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwCkBAIC0z
Nyw5ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVmVjdG9yPHVpbnQ4X3Q+IGNvbnZl
cnRCeXRlc1RvVmVjdG9yKGNvbnN0IHVpbnQ4X3QgYnl0ZUFycmF5W10sIGNvbnN0IHNpemVfdCBs
ZW5ndGgpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5k
KGJ5dGVBcnJheSwgbGVuZ3RoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiB7IGJ5
dGVBcnJheSwgbGVuZ3RoIH07CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBwcm9kdWNlUnBJZEhhc2go
Y29uc3QgU3RyaW5nJiBycElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAKaW5kZXgg
OGQzNGJlOTNkMWJlNDgxM2E3YTliMzg1NWJhNGNhMWYwNGNmNjg4Ny4uODRjMTdiNzczNmM4NWQ2
MTdlZTkyZmNmYzJiNjgyOTk4MzAxZDUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIu
Y3BwCkBAIC01OSw4ICs1OSw3IEBAIE9wdGlvbmFsPGNib3I6OkNCT1JWYWx1ZT4gZGVjb2RlUmVz
cG9uc2VNYXAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcikKICAgICBpZiAoaW5CdWZm
ZXIuc2l6ZSgpIDw9IGtSZXNwb25zZUNvZGVMZW5ndGggfHwgZ2V0UmVzcG9uc2VDb2RlKGluQnVm
ZmVyKSAhPSBDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprU3VjY2VzcykKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgYnVmZmVy
LmFwcGVuZChpbkJ1ZmZlci5kYXRhKCkgKyAxLCBpbkJ1ZmZlci5zaXplKCkgLSAxKTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gYnVmZmVyIHsgaW5CdWZmZXIuZGF0YSgpICsgMSwgaW5CdWZmZXIuc2l6
ZSgpIC0gMSB9OwogICAgIE9wdGlvbmFsPENCT1I+IGRlY29kZWRSZXNwb25zZSA9IGNib3I6OkNC
T1JSZWFkZXI6OnJlYWQoYnVmZmVyKTsKICAgICBpZiAoIWRlY29kZWRSZXNwb25zZSB8fCAhZGVj
b2RlZFJlc3BvbnNlLT5pc01hcCgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNr
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNr
ZXQuY3BwCmluZGV4IDUyMzIyMGExNmZiZmQzNDM5ZTUxMGU1MjcxYjE5YmU2NDY3OTk2Y2YuLjY4
M2Y3NTVjNDVkZmY2MjgyNWI0ZmE4YjExODJjOWQ0N2MzZTY3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKQEAg
LTY3LDkgKzY3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRJbml0UGFja2V0PiBGaWRvSGlk
SW5pdFBhY2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGMKICAgICAvLyBVcGRhdGUgcmVt
YWluaW5nIHNpemUgdG8gZGV0ZXJtaW5lIHRoZSBwYXlsb2FkIHNpemUgb2YgZm9sbG93IG9uIHBh
Y2tldHMuCiAgICAgKnJlbWFpbmluZ1NpemUgPSBwYXlsb2FkU2l6ZSAtIGRhdGFTaXplOwogCi0g
ICAgYXV0byBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+KCk7Ci0gICAgZGF0YS5hcHBlbmQoc2VyaWFs
aXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFTaXplKTsKLQorICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhIHsgc2VyaWFsaXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFTaXplIH07CiAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY29tbWFuZCwgV1RGTW92
ZShkYXRhKSwgcGF5bG9hZFNpemUpOwogfQogCkBAIC0xMjIsOSArMTIwLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+IEZpZG9IaWRDb250aW51YXRpb25QYWNr
ZXQ6OmNyZWF0ZUZyb20KICAgICAvLyBDaGVjayB0byBzZWUgaWYgcGFja2V0IHBheWxvYWQgaXMg
bGVzcyB0aGFuIG1heGltdW0gc2l6ZSBhbmQgcGFkZGVkIHdpdGggMHMuCiAgICAgc2l6ZV90IGRh
dGFTaXplID0gc3RkOjptaW4oKnJlbWFpbmluZ1NpemUsIGtIaWRQYWNrZXRTaXplIC0gaW5kZXgp
OwogICAgICpyZW1haW5pbmdTaXplIC09IGRhdGFTaXplOwotICAgIGF1dG8gZGF0YSA9IFZlY3Rv
cjx1aW50OF90PigpOwotICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4
LCBkYXRhU2l6ZSk7Ci0KKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHsgc2VyaWFsaXplZC5i
ZWdpbigpICsgaW5kZXgsIGRhdGFTaXplIH07CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hp
ZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9Q
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKaW5k
ZXggOTc5ZDQ3NDdiOTNiNTUyZmRmNTIyMmM5MDk2OTQ5NjRhNTNjMTcwZS4uNTgzNzY1MGQzYmYy
MGJhMGIyYjcwODhkZWQ5ZTAzMzZlOTAxNGNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKQEAgLTE4MSwxMCArMTgxLDggQEAgT3B0aW9uYWw8S2V5
QWdyZWVtZW50UmVzcG9uc2U+IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZUZyb21DT1NFKGNv
bnN0IENCT1JWYWwKIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgZW5jb2RlQ09TRVB1YmxpY0tl
eShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd1B1YmxpY0tleSkKIHsKICAgICBBU1NFUlQocmF3
UHVibGljS2V5LnNpemUoKSA9PSA2NSk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHg7Ci0gICAgeC5h
cHBlbmQocmF3UHVibGljS2V5LmRhdGEoKSArIDEsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKTsK
LSAgICBWZWN0b3I8dWludDhfdD4geTsKLSAgICB5LmFwcGVuZChyYXdQdWJsaWNLZXkuZGF0YSgp
ICsgMSArIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoLCBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCk7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHggeyByYXdQdWJsaWNLZXkuZGF0YSgpICsgMSwgRVMyNTZG
aWVsZEVsZW1lbnRMZW5ndGggfTsKKyAgICBWZWN0b3I8dWludDhfdD4geSB7IHJhd1B1YmxpY0tl
eS5kYXRhKCkgKyAxICsgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgsIEVTMjU2RmllbGRFbGVtZW50
TGVuZ3RoIH07CiAKICAgICBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIHB1YmxpY0tleU1hcDsK
ICAgICBwdWJsaWNLZXlNYXBbY2Jvcjo6Q0JPUlZhbHVlKENPU0U6Omt0eSldID0gY2Jvcjo6Q0JP
UlZhbHVlKENPU0U6OkVDMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcAppbmRleCAyYjU0NmQx
NzM3ODM2ZTVmNGM3MzlmODIxNzNiMjE2ZDk4Yjc1YjExLi4xMzQ1NDFkMWVmNTk1NDI5ZjI1MTI4
MjJmMTkzZDUxNTNkNGQwYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKQEAgLTY0LDEz
ICs2NCwxMCBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RFQ1B1YmxpY0tleUZyb21V
MmZSZWdpc3RyYXRpb25SZXNwb25zZShjb25zdCBWZWN0bwogICAgIGlmICh1MmZEYXRhLnNpemUo
KSA8IHBvcyArIDIgKiBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIFZlY3Rvcjx1aW50OF90PiB4OwotICAgIHguYXBwZW5kKHUyZkRhdGEuZGF0YSgp
ICsgcG9zLCBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHgg
eyB1MmZEYXRhLmRhdGEoKSArIHBvcywgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGggfTsKICAgICBw
b3MgKz0gRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGg7CiAKLSAgICBWZWN0b3I8dWludDhfdD4geTsK
LSAgICB5LmFwcGVuZCh1MmZEYXRhLmRhdGEoKSArIHBvcywgRVMyNTZGaWVsZEVsZW1lbnRMZW5n
dGgpOwotCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHkgeyB1MmZEYXRhLmRhdGEoKSArIHBvcywgRVMy
NTZGaWVsZEVsZW1lbnRMZW5ndGggfTsKICAgICByZXR1cm4gZW5jb2RlRVMyNTZQdWJsaWNLZXlB
c0NCT1IoV1RGTW92ZSh4KSwgV1RGTW92ZSh5KSk7CiB9CiAKQEAgLTg0LDkgKzgxLDcgQEAgc3Rh
dGljIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0Q3JlZGVudGlhbElkRnJvbVUyZlJlZ2lzdHJhdGlv
blJlc3BvbnNlKGNvbnN0IFZlY3QKIAogICAgIGlmICh1MmZEYXRhLnNpemUoKSA8IHBvcyArIGNy
ZWRlbnRpYWxJZExlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBWZWN0b3I8dWludDhf
dD4gY3JlZGVudGlhbElkOwotICAgIGNyZWRlbnRpYWxJZC5hcHBlbmQodTJmRGF0YS5kYXRhKCkg
KyBwb3MsIGNyZWRlbnRpYWxJZExlbmd0aCk7Ci0gICAgcmV0dXJuIGNyZWRlbnRpYWxJZDsKKyAg
ICByZXR1cm4geyB1MmZEYXRhLmRhdGEoKSArIHBvcywgY3JlZGVudGlhbElkTGVuZ3RoIH07CiB9
CiAKIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY3JlYXRlQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YUZy
b21VMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwdWJsaWNLZXkpCkBAIC0xMjQsMTIgKzExOSwxMCBAQCBzdGF0
aWMgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBjcmVhdGVGaWRvQXR0ZXN0YXRpb25TdGF0ZW1l
bnRGcm9tVTJmUmVnaXN0ZXJSZQogICAgIGlmICgheDUwOUxlbmd0aCB8fCB1MmZEYXRhLnNpemUo
KSA8IG9mZnNldCArIHg1MDlMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBWZWN0
b3I8dWludDhfdD4geDUwOTsKLSAgICB4NTA5LmFwcGVuZCh1MmZEYXRhLmRhdGEoKSArIG9mZnNl
dCwgeDUwOUxlbmd0aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHg1MDkgeyB1MmZEYXRhLmRhdGEo
KSArIG9mZnNldCwgeDUwOUxlbmd0aCB9OwogICAgIG9mZnNldCArPSB4NTA5TGVuZ3RoOwogCi0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZTsKLSAgICBzaWduYXR1cmUuYXBwZW5kKHUyZkRh
dGEuZGF0YSgpICsgb2Zmc2V0LCB1MmZEYXRhLnNpemUoKSAtIG9mZnNldCk7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHNpZ25hdHVyZSB7IHUyZkRhdGEuZGF0YSgpICsgb2Zmc2V0LCB1MmZEYXRhLnNp
emUoKSAtIG9mZnNldCB9OwogICAgIGlmIChzaWduYXR1cmUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4geyB9OwogCkBAIC0xODQsOSArMTc3LDcgQEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGMK
ICAgICBhdXRvIGF1dGhEYXRhID0gYnVpbGRBdXRoRGF0YShycElkLCBmbGFncywgY291bnRlciwg
eyB9KTsKIAogICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIHJlbW92ZSB0aGUgbmVlZCBvZiBj
b25zdHJ1Y3RpbmcgYSB2ZWN0b3IgaGVyZS4KLSAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJl
OwotICAgIHNpZ25hdHVyZS5hcHBlbmQodTJmRGF0YS5kYXRhKCkgKyBzaWduYXR1cmVJbmRleCwg
dTJmRGF0YS5zaXplKCkgLSBzaWduYXR1cmVJbmRleCk7Ci0KKyAgICBWZWN0b3I8dWludDhfdD4g
c2lnbmF0dXJlIHsgdTJmRGF0YS5kYXRhKCkgKyBzaWduYXR1cmVJbmRleCwgdTJmRGF0YS5zaXpl
KCkgLSBzaWduYXR1cmVJbmRleCB9OwogICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U6OmNyZWF0ZShrZXlIYW5kbGUsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHsgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCBhZmQ3NDBhMWVjMTBhNjQ0ZGU1NzZiZTRmYTg0NDQ4ZjcyNTdk
MzI3Li5lNWUyN2Q0ZjQ1ZjU3MmNkZDYzNjRlNDE0YmJhMzk4ZjlmNDU0NmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCkBAIC03MjAsOSArNzIwLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3
RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIKICAgICBhdXRv
IGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0g
b3BDb2RlOwogICAgIGZyYW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVWZWN0b3I7Ci0g
ICAgZnJhbWUtPnZlY3RvckRhdGEucmVzaXplKGRhdGFMZW5ndGgpOwotICAgIGlmIChkYXRhTGVu
Z3RoKQotICAgICAgICBtZW1jcHkoZnJhbWUtPnZlY3RvckRhdGEuZGF0YSgpLCBkYXRhLCBkYXRh
TGVuZ3RoKTsKKyAgICBmcmFtZS0+dmVjdG9yRGF0YSA9IHsgZGF0YSwgZGF0YUxlbmd0aCB9Owog
ICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKGZyYW1lKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdl
c3RHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0RpZ2VzdEdDcnlwdC5jcHAKaW5kZXggZDI4NTY2YjkxMzM4YmQ4ZDYzOTIzMWU1ODY3ZGI4N2Yy
M2ViNGE5Mi4uZDdkMDIzZjFjYmQ3MjNmMDRhN2NjMjg1ZDcxY2Q3OGIzMGJmY2U0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdD
cnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0RpZ2VzdEdDcnlwdC5jcHAKQEAgLTgyLDExICs4MiwxMCBAQCB2b2lkIENyeXB0b0RpZ2VzdDo6
YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCiAKIFZlY3Rvcjx1aW50
OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKIHsKLSAgICBpbnQgZGlnZXN0TGVuID0g
Z2NyeV9tZF9nZXRfYWxnb19kbGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKLSAgICBWZWN0b3I8
dWludDhfdD4gcmVzdWx0KGRpZ2VzdExlbik7CisgICAgc2l6ZV90IGRpZ2VzdExlbiA9IGdjcnlf
bWRfZ2V0X2FsZ29fZGxlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7CiAKICAgICBnY3J5X21kX2Zp
bmFsKG1fY29udGV4dC0+bWQpOwotICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBnY3J5X21kX3Jl
YWQobV9jb250ZXh0LT5tZCwgMCksIGRpZ2VzdExlbik7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJl
c3VsdCB7IGdjcnlfbWRfcmVhZChtX2NvbnRleHQtPm1kLCAwKSwgZGlnZXN0TGVuIH07CiAgICAg
Z2NyeV9tZF9jbG9zZShtX2NvbnRleHQtPm1kKTsKIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCmluZGV4IGI1NDkxOTFhN2RmMGIzZTI3MTVh
N2MwMjAzY2ZkNjk2ZDExMGYwNDcuLjhlMWU5MmRlZjhlODdmNTk0NWRjNDIyMzgzYzg5ZjFhMDg2
NTg1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCkBAIC00NTgsOSAr
NDU4LDcgQEAgc3RhdGljIE9wdGlvbmFsPEtleURhdGE+IHRvS2V5RGF0YShTdWJ0bGVDcnlwdG86
OktleUZvcm1hdCBmb3JtYXQsIFN1YnRsZUNyeXB0bzoKICAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIFtdIChhdXRvJiBidWZm
ZXJTb3VyY2UpIC0+IE9wdGlvbmFsPEtleURhdGE+IHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8
dWludDhfdD4gcmVzdWx0OwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlclNvdXJjZS0+ZGF0YSgpKSwgYnVmZmVyU291cmNlLT5i
eXRlTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBLZXlEYXRhIHsgcmVzdWx0IH07
CisgICAgICAgICAgICAgICAgcmV0dXJuIEtleURhdGEgeyBWZWN0b3I8dWludDhfdD4geyBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyU291cmNlLT5kYXRhKCkpLCBidWZmZXJTb3Vy
Y2UtPmJ5dGVMZW5ndGgoKSB9IH07CiAgICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAgY2Fz
ZSBTdWJ0bGVDcnlwdG86OktleUZvcm1hdDo6SndrOgpAQCAtNDgxLDkgKzQ3OSw3IEBAIHN0YXRp
YyBPcHRpb25hbDxLZXlEYXRhPiB0b0tleURhdGEoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9y
bWF0LCBTdWJ0bGVDcnlwdG86CiAKIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29weVRvVmVjdG9y
KEJ1ZmZlclNvdXJjZSYmIGRhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFWZWN0b3I7
Ci0gICAgZGF0YVZlY3Rvci5hcHBlbmQoZGF0YS5kYXRhKCksIGRhdGEubGVuZ3RoKCkpOwotICAg
IHJldHVybiBkYXRhVmVjdG9yOworICAgIHJldHVybiB7IGRhdGEuZGF0YSgpLCBkYXRhLmxlbmd0
aCgpIH07CiB9CiAKIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkRXhwb3J0S2V5KENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKaW5kZXggOTY2ODc1MGMwNDA2ZTc4MjBjN2Q3
OTU5NGQ5NDhkOGQyYmMyZDg3My4uNmFkNDAzZjQ1NThhYzg2ODRhODYwNGUwNWZjNDRjN2RlZWJm
ODQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlF
Q0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlF
Q0dDcnlwdC5jcHAKQEAgLTUyMSwxMyArNTIxLDggQEAgYm9vbCBDcnlwdG9LZXlFQzo6cGxhdGZv
cm1BZGRGaWVsZEVsZW1lbnRzKEpzb25XZWJLZXkmIGp3aykgY29uc3QKICAgICBpZiAocU1QSSkg
ewogICAgICAgICBhdXRvIHEgPSBtcGlEYXRhKHFNUEkpOwogICAgICAgICBpZiAocSAmJiBxLT5z
aXplKCkgPT0gY3VydmVVbmNvbXByZXNzZWRQb2ludFNpemUobV9jdXJ2ZSkpIHsKLSAgICAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBhOwotICAgICAgICAgICAgYS5hcHBlbmQocS0+ZGF0YSgpICsg
MSwgdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZSk7Ci0gICAgICAgICAgICBqd2sueCA9IGJh
c2U2NFVSTEVuY29kZVRvU3RyaW5nKGEpOwotCi0gICAgICAgICAgICBWZWN0b3I8dWludDhfdD4g
YjsKLSAgICAgICAgICAgIGIuYXBwZW5kKHEtPmRhdGEoKSArIDEgKyB1bmNvbXByZXNzZWRGaWVs
ZEVsZW1lbnRTaXplLCB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplKTsKLSAgICAgICAgICAg
IGp3ay55ID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYik7CisgICAgICAgICAgICBqd2sueCA9
IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKFZlY3Rvcjx1aW50OF90PiB7IHEtPmRhdGEoKSArIDEs
IHVuY29tcHJlc3NlZEZpZWxkRWxlbWVudFNpemUgfSk7CisgICAgICAgICAgICBqd2sueSA9IGJh
c2U2NFVSTEVuY29kZVRvU3RyaW5nKFZlY3Rvcjx1aW50OF90PiB7IHEtPmRhdGEoKSArIDEgKyB1
bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplLCB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXpl
IH0pOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL0NyeXB0b0tleUVDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvS2V5RUNNYWMuY3BwCmluZGV4IDU0MGYzM2JjYmU0MmFhOWFmNGI3ZmVmOWRjMDBlMjlmNzBh
MTZjNjAuLmY0N2UxZDhhNzM3MGIyNjU2ZjA5OGMxNTNlYzUxZDQ0OGFlYWNlMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwCkBAIC0zNTQsOCArMzU0
LDcgQEAgUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRQa2Nz
OChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGkKICAgICBpbmRleCArPSBieXRlc1VzZWRUb0Vu
Y29kZWRMZW5ndGgoa2V5RGF0YVtpbmRleF0pICsgMTsgLy8gUmVhZCBsZW5ndGgsIEluaXRpYWxP
Y3RldAogCiAgICAgLy8gS2V5QmluYXJ5ID0gdW5jb21wcmVzc2VkIHBvaW50ICsgcHJpdmF0ZSBr
ZXkKLSAgICBWZWN0b3I8dWludDhfdD4ga2V5QmluYXJ5OwotICAgIGtleUJpbmFyeS5hcHBlbmQo
a2V5RGF0YS5kYXRhKCkgKyBpbmRleCwga2V5RGF0YS5zaXplKCkgLSBpbmRleCk7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGtleUJpbmFyeSB7IGtleURhdGEuZGF0YSgpICsgaW5kZXgsIGtleURhdGEu
c2l6ZSgpIC0gaW5kZXggfTsKICAgICBpZiAoIWRvZXNVbmNvbXByZXNzZWRQb2ludE1hdGNoTmFt
ZWRDdXJ2ZShjdXJ2ZSwga2V5QmluYXJ5LnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGtleUJpbmFyeS5hcHBlbmQoa2V5RGF0YS5kYXRhKCkgKyBwcml2YXRlS2V5UG9zLCBn
ZXRLZXlTaXplRnJvbU5hbWVkQ3VydmUoY3VydmUpIC8gOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQppbmRleCA1
NzFkYTQ3YWEyNDM3Y2JmZDY3MzY5NTc0OTg4YTNjMWFhYTE2ODJkLi44Yjg3MjdhYWFkYWYxODhm
MWM1ZjQwNDdkOTY2MzVhZDRlYzNmYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KQEAgLTY0LDkgKzY0LDcg
QEAgY29uc3Qgc2l6ZV90IG1hc3RlcktleVNpemVJbkJ5dGVzID0gMTY7CiAKIGlubGluZSBWZWN0
b3I8dWludDhfdD4gdmVjdG9yRnJvbU5TRGF0YShOU0RhdGEqIGRhdGEpCiB7Ci0gICAgVmVjdG9y
PHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kKChjb25zdCB1aW50OF90KilbZGF0
YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJu
IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEg
bGVuZ3RoXSB9OwogfQogCiBzdGF0aWMgTlNTdHJpbmcqIG1hc3RlcktleUFjY291bnROYW1lRm9y
Q3VycmVudEFwcGxpY2F0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9v
cGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19HQ01PcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19HQ01PcGVuU1NMLmNwcAppbmRleCA0
YzJkYjMxZGQyZTI4Y2JhMGI3MThmMjlhYjQzYTQyNGYzZjI2Zjk4Li4yNzJhNjI0MzM5ZWE0NjQ1
NWQ1NzVjYTA4ZGRhY2Y3ZWVlYmI3NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNT3BlblNTTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU9wZW5TU0wuY3Bw
CkBAIC0xMTUsOCArMTE1LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5
cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgIGludCBjaXBo
ZXJUZXh0TGVuID0gY2lwaGVyVGV4dC5zaXplKCkgLSB0YWdMZW5ndGg7CiAKICAgICBWZWN0b3I8
dWludDhfdD4gcGxhaW5UZXh0KGNpcGhlclRleHQuc2l6ZSgpKTsKLSAgICBWZWN0b3I8dWludDhf
dD4gdGFnKHRhZ0xlbmd0aCk7Ci0gICAgbWVtY3B5KHRhZy5kYXRhKCksIGNpcGhlclRleHQuZGF0
YSgpICsgY2lwaGVyVGV4dExlbiwgdGFnTGVuZ3RoKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdGFn
IHsgY2lwaGVyVGV4dC5kYXRhKCkgKyBjaXBoZXJUZXh0TGVuLCB0YWdMZW5ndGggfTsKIAogICAg
IC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAgIGlmICghKGN0eCA9IEV2
cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKaW5kZXggODE2ZmVkOTRlMTRkYzE3YzFlM2NjMzc5OTI0NzdmZTVmZGIxYWVkYS4uNjcwOGJj
ODc1NmM2MjRmYjQ0M2MzYjJiZWUxOTI3MjViY2MwODMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwCkBAIC0xMTMsMTEgKzExMyw4IEBAIEJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0CiAgICAgLCBt
X3R5cGUoY29udGVudFR5cGUpCiAgICAgLCBtX3NpemUoYnVmZmVyLnNpemUoKSkKIHsKLSAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBkYXRhLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKLQogICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwotICAgIGJsb2JQ
YXJ0cy5hcHBlbmQoQmxvYlBhcnQoV1RGTW92ZShkYXRhKSkpOworICAgIGJsb2JQYXJ0cy5hcHBl
bmQoQmxvYlBhcnQoVmVjdG9yPHVpbnQ4X3Q+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCkgfSkpOwogICAgIG1faW50ZXJuYWxV
UkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyks
IGNvbnRlbnRUeXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IDdhYmRkMzQzODA0OTA2YWZkZGExYzY2YjEz
ZmI2NDJmYTRjNGRkMGMuLjBjNDQxMzI1MGU4ZGU2OTQzNzljZmYwZGVkMGRkYzkyN2ZlYjM5OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNr
aW5nU3RvcmUuaApAQCAtMjA1LDggKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9wcmVt
dWx0aXBseUFscGhhKG90aGVyLm1fcHJlbXVsdGlwbHlBbHBoYSkKICAgICB7CiAgICAgICAgIEFT
U0VSVCghbV9zaXplLmlzRW1wdHkoKSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKLSAgICAgICAg
VmVjdG9yPGNoYXI+IGJ1ZmZlcjsKLSAgICAgICAgYnVmZmVyLmFwcGVuZChvdGhlci5tX3BpeGVs
cy0+ZGF0YSgpLCBvdGhlci5tX3BpeGVscy0+c2l6ZSgpKTsKKyAgICAgICAgVmVjdG9yPGNoYXI+
IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkg
fTsKICAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0
PHVpbnQzMl90Kj4oY29uc3RfY2FzdDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyVXRpbGl0aWVzQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5jcHAKaW5kZXggZDc5NzI4NTU1Yjdk
YjliNTljYjYxNWM1NWE3YTdhNjg1MWNiNTdjOC4uZWE2OTE4NmFiYTJiZTBkM2NkNjhmNDE4MTg0
YjY4YjE0Y2RlZDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5jcHAK
QEAgLTEyMyw5ICsxMjMsNyBAQCBWZWN0b3I8dWludDhfdD4gZGF0YShjYWlyb19zdXJmYWNlX3Qq
IGltYWdlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkbwogICAgIGlmICghZW5j
b2RlSW1hZ2UoaW1hZ2UsIG1pbWVUeXBlLCBxdWFsaXR5LCBidWZmZXIsIGJ1ZmZlclNpemUpKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGltYWdlRGF0YTsKLSAg
ICBpbWFnZURhdGEuYXBwZW5kKGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7Ci0gICAgcmV0dXJu
IGltYWdlRGF0YTsKKyAgICByZXR1cm4geyBidWZmZXIuZ2V0KCksIGJ1ZmZlclNpemUgfTsKIH0K
ICNlbmRpZiAvLyAhUExBVEZPUk0oR1RLKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmlu
ZGV4IGM5YmUyNzg4OWU0ZDJlNTMxMmIzZWM5M2EzMGY0YTdjOGU3NjkzOTMuLjUwNWY4NDVjOWJi
ZmIyZWM5MGQ1YWRmMWVjNDAzNTRjZDUxZGFhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
Y3BwCkBAIC00MTksOSArNDE5LDcgQEAgdm9pZCBjb25uZWN0U2ltcGxlQnVzTWVzc2FnZUNhbGxi
YWNrKEdzdEVsZW1lbnQqIHBpcGVsaW5lKQogCiBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVm
ZmVyOjpjcmVhdGVWZWN0b3IoKSBjb25zdAogewotICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7
Ci0gICAgdmVjdG9yLmFwcGVuZChkYXRhKCksIHNpemUoKSk7Ci0gICAgcmV0dXJuIHZlY3RvcjsK
KyAgICByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCiBSZWY8U2hhcmVkQnVmZmVyPiBH
c3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVh
cktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1l
L0NETVByb3h5Q2xlYXJLZXkuY3BwCmluZGV4IGJlMTU0MjU1ZjNkNzY4MzE1ZTM1Njg3NjkwNDc2
ZjdmOGFlM2JiZjIuLmNmODIwZDE2NWIzZDBkMGU1YjhkMDU4YTU2MmIzNDkxNDEzODgyMGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUv
Q0RNUHJveHlDbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmNwcApAQCAtMTE4LDggKzExOCw3IEBA
IGJvb2wgQ0RNUHJveHlDbGVhcktleTo6Y2VuY1NldERlY3J5cHRpb25LZXkoY2VuY0RlY3J5cHRD
b250ZXh0JiBpbikKICAgICAvLyBGSVhNRTogVW5uZWNlc3NhcnkgY29weSwgY2FuIHdlIGF2b2lk
IHRoaXMgd2hpbGUgc3RpbGwgZXhwb3NpbmcKICAgICAvLyBhIG5vbi1HU3RyZWFtZXItc3BlY2lm
aWMgRGVjcnlwdElucHV0IEFQST8gVGhlc2UgYnVmZmVycyBhcmUKICAgICAvLyBzbWFsbCAoMTYg
Ynl0ZXMpLCBzbyBub3QgYSBodWdlIGRlYWwsIEkgZ3Vlc3MuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+
IGtleUlEVmVjOwotICAgIGtleUlEVmVjLmFwcGVuZChpbi5rZXlJRCwgaW4ua2V5SURTaXplSW5C
eXRlcyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGtleUlEVmVjIHsgaW4ua2V5SUQsIGluLmtleUlE
U2l6ZUluQnl0ZXMgfTsKIAogICAgIGF1dG8ga2V5RGF0YSA9IGdldE9yV2FpdEZvcktleVZhbHVl
KGtleUlEVmVjLCBXVEZNb3ZlKGluLmNkbVByb3h5RGVjcnlwdGlvbkNsaWVudCkpOwogICAgIGlm
ICgha2V5RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAppbmRleCA3YTBl
YmUzOGYyYTIwOTIzMTc5ODVmODQxODc5Y2FhYTg5NzJlNzRhLi5mODIxNWMwZTBlYzkwODkyYmVh
YjU5OGMxYzMxMGE2NDYzNTFiNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2su
Y3BwCkBAIC05Niw4ICs5Niw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpmZXRj
aERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9i
dWZmZXJMb2NrIH07Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZShtX2J1ZmZlci5sZW5n
dGgoKSk7Ci0gICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhKCksIG1fYnVmZmVyLmNoYXJhY3RlcnM4
KCksIG1fYnVmZmVyLmxlbmd0aCgpKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlIHsg
bV9idWZmZXIuY2hhcmFjdGVyczgoKSwgbV9idWZmZXIubGVuZ3RoKCkgfTsKICAgICAgICAgbV9i
dWZmZXIuY2xlYXIoKTsKICAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RG
TW92ZSh2YWx1ZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHAKaW5kZXggNjFjZDM4ZjY3YjFjOGViYTA2ODQ2N2Q0ZDZjNzEyNjRiZjI5YWJk
My4uNjVjNTUwOGIzNWRkNDIyMTIyYzM2ZTI4MWZlMDc1NDRjNDU0MjZmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTE2NSw5ICsxNjUsNyBA
QCBGb3JtRGF0YUVsZW1lbnQgRm9ybURhdGFFbGVtZW50Ojppc29sYXRlZENvcHkoKSBjb25zdAog
ewogICAgIHJldHVybiBzd2l0Y2hPbihkYXRhLAogICAgICAgICBbXSAoY29uc3QgVmVjdG9yPGNo
YXI+JiBieXRlcykgewotICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGNvcHk7Ci0gICAgICAgICAg
ICBjb3B5LmFwcGVuZChieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gRm9ybURhdGFFbGVtZW50KFdURk1vdmUoY29weSkpOworICAgICAgICAgICAgcmV0dXJu
IEZvcm1EYXRhRWxlbWVudChWZWN0b3I8Y2hhcj4geyBieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUo
KSB9KTsKICAgICAgICAgfSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVE
YXRhJiBmaWxlRGF0YSkgewogICAgICAgICAgICAgcmV0dXJuIEZvcm1EYXRhRWxlbWVudChmaWxl
RGF0YS5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgIH0sIFtdIChjb25zdCBGb3JtRGF0YUVsZW1l
bnQ6OkVuY29kZWRCbG9iRGF0YSYgYmxvYkRhdGEpIHsKQEAgLTE4NSw5ICsxODMsNyBAQCB2b2lk
IEZvcm1EYXRhOjphcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIFZlY3RvcjxjaGFyPiB2ZWN0
b3I7Ci0gICAgdmVjdG9yLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRh
KSwgc2l6ZSk7Ci0gICAgbV9lbGVtZW50cy5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IpKTsKKyAgICBt
X2VsZW1lbnRzLmFwcGVuZChWZWN0b3I8Y2hhcj4geyByZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSwgc2l6ZSB9KTsKIH0KIAogdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZShjb25z
dCBTdHJpbmcmIGZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCmluZGV4IGE2MzJhMWMwZTEwMmJiNDI3NmU0
MTM0OGUwMTg3MjhjNzdlYjI5MzEuLmNkZGRhOGIyNGZlNmVmYTZjMmJhZThlODIxMTEwYzgzZmM3
Y2E4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9P
cGVuU1NMSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvT3BlblNTTEhlbHBlci5jcHAKQEAgLTExNiw5ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGlmIChsZW5ndGggPCAwKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAg
ICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAgICAgICByZXN1bHQuYXBwZW5kKGRhdGEs
IGxlbmd0aCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBWZWN0b3I8
dWludDhfdD4geyBkYXRhLCBsZW5ndGggfTsKICAgICB9CiAKICAgICBTdHJpbmcgZ2V0RGF0YUFz
U3RyaW5nKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhYTE0
MWQ4ZWY3NTJiODQ2NmY1ZDdlMTEwZmUyODZiOTE0MTJiZmY4Li44Y2YwMmIxNzllYmZiZGQzNzdh
NmE1NDhkMGM2YTdhZjY5MTc3Zjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0zNzQ5LDggKzM3NDksNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEludGVybmFsczo6c2VyaWFs
aXplT2JqZWN0KGNvbnN0IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JgogCiBSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBJbnRlcm5hbHM6OmRlc2VyaWFsaXplQnVmZmVyKEFycmF5QnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ5dGVzOwotICAgIGJ5
dGVzLmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLmRhdGEoKSksIGJ1
ZmZlci5ieXRlTGVuZ3RoKCkpOworICAgIFZlY3Rvcjx1aW50OF90PiBieXRlcyB7IHN0YXRpY19j
YXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLmJ5dGVMZW5ndGgoKSB9
OwogICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoYnl0ZXMp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVu
dFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDMyNDg0NTU0Y2Y5ZDQ3M2VhMmU5NzFkMWUxZWE5ZGYx
YmMzODAxMjkuLjExNWFiYjFiYmU0MmI5OGI5ZTQwYjdiMTM3YWVkNDZjNGYzZjdkMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGli
eG1sMi5jcHAKQEAgLTQ5MCwxMCArNDkwLDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5jKGNvbnN0
IGNoYXIqIHVyaSkKICAgICAgICAgfQogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBidWZmZXI7
Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIGJ1ZmZlci5hcHBlbmQoZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkpOwotICAgIHJldHVybiBuZXcgT2Zmc2V0QnVmZmVyKFdURk1vdmUoYnVmZmVyKSk7
CisgICAgcmV0dXJuIG5ldyBPZmZzZXRCdWZmZXIoeyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUo
KSB9KTsKIH0KIAogc3RhdGljIGludCByZWFkRnVuYyh2b2lkKiBjb250ZXh0LCBjaGFyKiBidWZm
ZXIsIGludCBsZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJh
eVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2Uu
aAppbmRleCAzNDY3YmRmZGI2YTFjNmVkNDM0MTI1MWJmODhmMDYyMTZkMTg2NjczLi4xODFkNGRl
NTI2ZjlhNzRkMzY2ZmQ4Y2JlNWFhMzVhM2NiYWMwNmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKQEAgLTEwNywxMCArMTA3LDcgQEAgcHVibGljOgog
CiAgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CiAgICAgewotICAgICAgICBWZWN0b3I8VD4g
cmVzdWx0OwotICAgICAgICBpZiAoIWlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQobV9kYXRhLCBFeHRlbnQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1
cm4geyBtX2RhdGEsIEV4dGVudCB9OwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwubW0KaW5kZXggN2E3N2MwYWJjN2Y4MmIyNDA3OGNjYzExYzU0NGQ1NWMzYTE2ZTll
Yi4uZDdlNzlmZmIwYTViZjQ0Mzc5MTU4NzEwZWI2M2RhY2QwMzc3OGI5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwubW0KQEAgLTI5NSw5ICsyOTUsNyBAQCAtICh2b2lkKWNhbmNlbAogI2lm
IEVOQUJMRShXRUJfQVVUSE4pCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvckZyb21OU0Rh
dGEoTlNEYXRhKiBkYXRhKQogewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgcmVz
dWx0LmFwcGVuZCgoY29uc3QgdWludDhfdCopZGF0YS5ieXRlcywgZGF0YS5sZW5ndGgpOwotICAg
IHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH07CiB9CiAKIHN0YXRpYyBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpScEVudGl0eSBwdWJsaWNLZXlDcmVk
ZW50aWFsUnBFbnRpdHkoX1dLUHVibGljS2V5Q3JlZGVudGlhbFJlbHlpbmdQYXJ0eUVudGl0eSAq
cnBFbnRpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmNwcAppbmRleCAzNmFmMTNlNzU5ZmEwNTMzZmRhYzhmYjUzYWJhZjM1MGUzOGIyM2Qw
Li4zYWI4MzNjOGUwN2NmZmZiZDU4NzM0MDczYWFjNzgxYzcwY2JlYWMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTYzOCw5
ICs2MzgsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKgogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGljb25EYXRhU2l6ZSk7Ci0gICAgZGF0YS5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oaWNvbkRhdGEpLCBpY29uRGF0YVNpemUpOworICAgIFZlY3RvcjxjaGFyPiBkYXRh
IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaWNvbkRhdGEpLCBpY29uRGF0YVNpemUg
fTsKICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgaWNvblVSTCA9IGljb25VUkwuaXNvbGF0ZWRDb3B5KCksIGljb25EYXRhID0g
V1RGTW92ZShkYXRhKSwgcGFnZVVSTCA9IHBhZ2VVUkwuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgIGlmIChtX2RiLmlzT3BlbigpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24v
U3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5t
bQppbmRleCAyNjU4OThjZmQ4ZjViN2Y3MDczM2RjNTE4ODhiNTYwOGQ4YjM3YmM3Li5jNjU5ZDIx
NGFiN2RjZGU5NTE3MTg3YTlkZTI5ZmFjNDkyMGQ1YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRp
b25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9y
aXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KQEAgLTQ1LDkgKzQ1LDcg
QEAgY29uc3QgY2hhciogc29BdXRob3JpemF0aW9uUG9zdERpZENhbmNlbE1lc3NhZ2VUb1BhcmVu
dCA9ICI8c2NyaXB0PnBhcmVudC5wb3N0TWUKIAogc3RhdGljIGlubGluZSBWZWN0b3I8dWludDhf
dD4gY29udmVydEJ5dGVzVG9WZWN0b3IoY29uc3QgdWludDhfdCBieXRlQXJyYXlbXSwgY29uc3Qg
c2l6ZV90IGxlbmd0aCkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAgIHJlc3Vs
dC5hcHBlbmQoYnl0ZUFycmF5LCBsZW5ndGgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0
dXJuIHsgYnl0ZUFycmF5LCBsZW5ndGggfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IGI5ZmRh
MjhlYTkwNzI0YWM2ZjVkY2Q1ZmQ5M2YzODQyNmQ3NDIwZTQuLjU5YzhlOTZjMWI5ZTBjOTNlOTlh
MzIxZmNkNzgxMjRjNjA2MGZkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmNwcApAQCAtMTYzLDEwICsxNjMsNyBAQCB2b2lkIFdlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lv
bihjb25zdCBJbgogICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IHJl
dHVybmVkVmFsdWUgfSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhOwotICAgICAgICAgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRhdGFS
ZWZlcmVuY2Uuc2l6ZSgpKTsKLSAgICAgICAgICAgIGRhdGEuYXBwZW5kKGRhdGFSZWZlcmVuY2Uu
ZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IHsgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoZGF0YSkp
LnB0cigpIH0gfSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IHsgQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFZlY3Rvcjx1aW50OF90PiB7IGRhdGFSZWZlcmVuY2Uu
ZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSB9KS5wdHIoKSB9IH0pOwogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLm1tCmluZGV4IGYyZjE5M2M3
NTAxMjRiOGNlNjMwNWMyNzUwYTYyYTFmMzRmYWQ5YjYuLjQ1YWNkY2IyYmQyZTk1ZjNjMTVmYzAw
NjA5YzVkYWFkZTg5NTNjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5tbQpAQCAt
NTEsOSArNTEsNyBAQCBzdGF0aWMgdm9pZCByZXBvcnRSZWNlaXZlZCh2b2lkKiBjb250ZXh0LCBJ
T1JldHVybiBzdGF0dXMsIHZvaWQqLCBJT0hJRFJlcG9ydFR5cAogICAgIEFTU0VSVChyZXBvcnRJ
RCA9PSBrSGlkUmVwb3J0SWQpOwogICAgIEFTU0VSVChyZXBvcnRMZW5ndGggPT0ga0hpZE1heFBh
Y2tldFNpemUpOwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlcG9ydERhdGE7Ci0gICAgcmVwb3J0
RGF0YS5hcHBlbmQocmVwb3J0LCByZXBvcnRMZW5ndGgpOwotICAgIGNvbm5lY3Rpb24tPnJlY2Vp
dmVSZXBvcnQoV1RGTW92ZShyZXBvcnREYXRhKSk7CisgICAgY29ubmVjdGlvbi0+cmVjZWl2ZVJl
cG9ydCh7IHJlcG9ydCwgc3RhdGljX2Nhc3Q8c2l6ZV90PihyZXBvcnRMZW5ndGgpIH0pOwogfQog
CiBIaWRDb25uZWN0aW9uOjpIaWRDb25uZWN0aW9uKElPSElERGV2aWNlUmVmIGRldmljZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQppbmRleCBmMjJmMGY4YjdhZGE5
ZWY4ODA5MjZlMTkyNDRkMjIzMjc4MWQ5NWM5Li5jN2FiMzBlNGRmMGYzYTUyZmYzMjg1ZjQ3NDQy
NmQzZTg0MWMzNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1t
CkBAIC05MCwxNiArOTAsMTMgQEAgc3RhdGljIGlubGluZSBIYXNoU2V0PFN0cmluZz4gcHJvZHVj
ZUhhc2hTZXQoY29uc3QgVmVjdG9yPFB1YmxpY0tleUNyZWRlbnRpYWxEZXMKIAogc3RhdGljIGlu
bGluZSBWZWN0b3I8dWludDhfdD4gdG9WZWN0b3IoTlNEYXRhICpkYXRhKQogewotICAgIFZlY3Rv
cjx1aW50OF90PiByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZChyZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgpOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5i
eXRlcyksIGRhdGEubGVuZ3RoIH07CiB9CiAKIHN0YXRpYyBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+
IGFhZ3VpZFZlY3RvcigpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICByZXN1
bHQuYXBwZW5kKGFhZ3VpZCwgYWFndWlkTGVuZ3RoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8dWludDhfdD4+IGFhZ3VpZFZlY3RvciA9IHsg
YWFndWlkLCBhYWd1aWRMZW5ndGggfTsKKyAgICByZXR1cm4gYWFndWlkVmVjdG9yOwogfQogCiBz
dGF0aWMgaW5saW5lIFJldGFpblB0cjxOU0RhdGE+IHRvTlNEYXRhKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLm1tCmluZGV4IDkxMDQ4NTA3
OTc0MTE3YmY5ZWYzZTM2ZDE4NDJmZWUxOTg0OTU2NzQuLmM2NGIzNWU4MTU2NTY4ZDVlNTEzYzA2
ZjUzZDk3OTZmNDAxN2ZkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5tbQpAQCAt
OTAsMTEgKzkwLDkgQEAgTmZjQ29ubmVjdGlvbjo6fk5mY0Nvbm5lY3Rpb24oKQogCiBWZWN0b3I8
dWludDhfdD4gTmZjQ29ubmVjdGlvbjo6dHJhbnNhY3QoVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkg
Y29uc3QKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzcG9uc2U7CiAgICAgLy8gVGhlIG1ldGhv
ZCB3aWxsIHJldHVybiBhbiBlbXB0eSBOU0RhdGEgaWYgdGhlIHRhZyBpcyBkaXNjb25uZWN0ZWQu
CiAgICAgYXV0byAqcmVzcG9uc2VEYXRhID0gW21fc2Vzc2lvbiB0cmFuc2NlaXZlOmFkb3B0TlMo
W1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEuc2l6
ZSgpXSkuZ2V0KCldOwotICAgIHJlc3BvbnNlLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihyZXNwb25zZURhdGEuYnl0ZXMpLCByZXNwb25zZURhdGEubGVuZ3RoKTsKLSAg
ICByZXR1cm4gcmVzcG9uc2U7CisgICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4ocmVzcG9uc2VEYXRhLmJ5dGVzKSwgcmVzcG9uc2VEYXRhLmxlbmd0aCB9OwogfQog
CiB2b2lkIE5mY0Nvbm5lY3Rpb246OnN0b3AoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCA5NzZjZmI1ZDYzODBlN2Y4ZDM2MmY2MmI1
ZTFiZDE1ZTViZDVhNmMzLi40ZjNiNjk5NmZhZTkwN2UxMTMxY2Q4YjkwMTRkZjcxMDg0YTFhZGEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAt
MjIwLDEwICsyMjAsOCBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgCiAgICAgaWYgKGlz
U3luYygpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwotICAgICAgICBpZiAobV9z
eW5jRGF0YSkgewotICAgICAgICAgICAgZGF0YS5yZXNpemUobV9zeW5jRGF0YS0+c2l6ZSgpKTsK
LSAgICAgICAgICAgIG1lbWNweShkYXRhLmRhdGEoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4obV9zeW5jRGF0YS0+ZGF0YSgpKSwgbV9zeW5jRGF0YS0+c2l6ZSgpKTsKLSAgICAg
ICAgfQorICAgICAgICBpZiAobV9zeW5jRGF0YSkKKyAgICAgICAgICAgIGRhdGEgPSB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fc3luY0RhdGEtPmRhdGEoKSksIG1fc3luY0Rh
dGEtPnNpemUoKSB9OwogCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jl
c3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJM
U2NoZW1lVGFza1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKaW5kZXggNmE4YzYzMjEwZDI3MmFiMzNlOTJjMTFiZWZj
ZGYwMzliNjBmZjdjNS4uNjEwOWRhYmFmODVkYzJjMDVhNjA5NWMxNjFjZjViOTE0ZWY2OWYxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1l
VGFza1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJV
UkxTY2hlbWVUYXNrUHJveHkuY3BwCkBAIC0xNTQsOSArMTU0LDcgQEAgdm9pZCBXZWJVUkxTY2hl
bWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBk
YXRhKQogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAg
IFdFQlVSTFNDSEVNRVRBU0tQUk9YWV9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
RGF0YTogUmVjZWl2ZWQgZGF0YSBkdXJpbmcgcmVzcG9uc2UgcHJvY2Vzc2luZywgcXVldWluZyBp
dC4iKTsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFWZWN0b3I7Ci0gICAgICAgIGRhdGFW
ZWN0b3IuYXBwZW5kKGRhdGEsIHNpemUpOwotICAgICAgICBxdWV1ZVRhc2soW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YVZlY3RvciA9IFdURk1vdmUoZGF0YVZlY3Rv
cildIHsKKyAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGRhdGFWZWN0b3IgPSBWZWN0b3I8dWludDhfdD4geyBkYXRhLCBzaXplIH1dIHsKICAg
ICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGFWZWN0b3Iuc2l6ZSgpLCBkYXRhVmVjdG9yLmRh
dGEoKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47Cg==
</data>
<flag name="commit-queue"
          id="451058"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429812</attachid>
            <date>2021-05-26 16:31:39 -0700</date>
            <delta_ts>2021-05-26 19:01:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226304-20210526163138.patch</filename>
            <type>text/plain</type>
            <size>40826</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MmM4ZGQ4NTQ2M2FiZGJjODMzYzMxNzIyZGFmOWY0MzM3NDI0MTg0Li5hNThhODIzOTgxNmU0OWU3
OGVmYjVlNzRkNDVmNDFjNmNhOGU5MmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNvbnN0IFQqLCBzaXplX3QpIGNvbnN0
cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjYzMDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBM
ZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvciBpbiBl
eGlzdGluZyBjb2RlLgorCisgICAgICAgICogd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2VyOjpjb25zdW1lKToKKwogMjAyMS0w
NS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBVbmNo
ZWNrZWRMb2NrIGV2ZW4gbGVzcyBpbiBKYXZhU2NyaXB0Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAxNWRmOTFlOTc1ZjI5
MjBhZTZhYmY5ODFiM2IwZjIxYjc5Y2VkNDNiLi44ZjZjZmIxMTliNzdhOGY1YjBkODE2MTc1YTAz
MDcwZTAxYWI2MzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA1LTI2ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTGV2ZXJhZ2UgdGhlIG5ldyBWZWN0b3Io
Y29uc3QgVCosIHNpemVfdCkgY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjMwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNvbnN0IFQqLCBz
aXplX3QpIGNvbnN0cnVjdG9yIGluIGV4aXN0aW5nIGNvZGUuCisKKyAgICAgICAgKiB3dGYvdGV4
dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoYXNjaWlEZWJ1Zyk6CisKIDIwMjEtMDUtMjYgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVUkwg
cGF0aCBzZXR0ZXIgbWVzc2VzIHVwIFVURi04IGVuY29kaW5nIGFmdGVyID8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA1NWVkYjQ0N2ZmYTMwMmY3YmY2YjMxMzViNDc0N2Y1NDMzNGZkMWM5Li43MWQ5ZTU5NmM0MGYw
ZjYwMjM1MmYwNjJkNTQyYjlkNWYxOTQ5OWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAK
KzIwMjEtMDUtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBM
ZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MzA0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGV2ZXJhZ2UgdGhl
IG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkgY29uc3RydWN0b3IgaW4gZXhpc3RpbmcgY29k
ZS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YmxvYkZyb21EYXRhKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJHZXRSZXN1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCR2V0UmVzdWx0OjpkYXRh
RnJvbUJ1ZmZlcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlv
blV0aWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRCeXRlc1RvVmVjdG9yKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3Bw
OgorICAgICAgICAoZmlkbzo6ZGVjb2RlUmVzcG9uc2VNYXApOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcDoKKyAgICAgICAgKGZpZG86OkZpZG9IaWRJ
bml0UGFja2V0OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEpOgorICAgICAgICAoZmlkbzo6Rmlk
b0hpZENvbnRpbnVhdGlvblBhY2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vUGluLmNwcDoKKyAgICAgICAgKGZpZG86OnBpbjo6
ZW5jb2RlQ09TRVB1YmxpY0tleSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZlJlc3BvbnNlQ29udmVydGVyLmNwcDoKKyAgICAgICAgKGZpZG86OldlYkNvcmU6OmV4dHJhY3RF
Q1B1YmxpY0tleUZyb21VMmZSZWdpc3RyYXRpb25SZXNwb25zZSk6CisgICAgICAgIChmaWRvOjpX
ZWJDb3JlOjpleHRyYWN0Q3JlZGVudGlhbElkRnJvbVUyZlJlZ2lzdHJhdGlvblJlc3BvbnNlKToK
KyAgICAgICAgKGZpZG86OldlYkNvcmU6OmNyZWF0ZUZpZG9BdHRlc3RhdGlvblN0YXRlbWVudEZy
b21VMmZSZWdpc3RlclJlc3BvbnNlKToKKyAgICAgICAgKGZpZG86OnJlYWRVMmZTaWduUmVzcG9u
c2UpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmVucXVldWVSYXdGcmFtZSk6Cisg
ICAgICAgICogY3J5cHRvL1N1YnRsZUNyeXB0by5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0tl
eURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Y29weVRvVmVjdG9yKToKKyAgICAgICAgKiBjcnlw
dG8vZ2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0tleUVDOjpwbGF0Zm9ybUFkZEZpZWxkRWxlbWVudHMgY29uc3QpOgorICAgICAgICAqIGNyeXB0
by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6
OnBsYXRmb3JtSW1wb3J0UGtjczgpOgorICAgICAgICAqIGNyeXB0by9tYWMvU2VyaWFsaXplZENy
eXB0b0tleVdyYXBNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp2ZWN0b3JGcm9tTlNEYXRhKToK
KyAgICAgICAgKiBjcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNT3BlblNTTC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcnlwdERlY3J5cHQpOgorICAgICAgICAqIGZpbGVhcGkv
QmxvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpCbG9iKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VCYWNraW5nU3RvcmU6OkltYWdlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3N0TWFwcGVkQnVmZmVyOjpjcmVh
dGVWZWN0b3IgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNUHJveHlDbGVhcktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcm94eUNsZWFy
S2V5OjpjZW5jU2V0RGVjcnlwdGlvbktleSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFSZWNvcmRlclByaXZhdGVNb2NrOjpmZXRjaERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGFFbGVtZW50Ojpp
c29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmFwcGVuZERh
dGEpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcDoK
KyAgICAgICAgKE9wZW5TU0w6OkJJTzo6Z2V0RGF0YUFzVmVjdG9yIGNvbnN0KToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmRl
c2VyaWFsaXplQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiB4bWwvcGFyc2VyL1hNTERvY3VtZW50
UGFyc2VyTGlieG1sMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRnVuYyk6CisKIDIwMjEt
MDUtMjYgIFRydWl0dCBTYXZlbGwgIDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByZXZlcnRpbmcgcjI3ODAyOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGYwMGQ1NWNl
YmFlYWRhZTA3ZDJiMjg0YjA5MmEwM2VmYTM2NDdmN2IuLjdjZDExN2NjZmFjNjI4OGFkNTA4MzU1
NmNiODQ1NDUzNDBiYTFmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDIxLTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTGV2
ZXJhZ2UgdGhlIG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkgY29uc3RydWN0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjMwNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldmVyYWdlIHRoZSBu
ZXcgVmVjdG9yKGNvbnN0IFQqLCBzaXplX3QpIGNvbnN0cnVjdG9yIGluIGV4aXN0aW5nIGNvZGUu
CisKKyAgICAgICAgKiBwYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwOgor
ICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKToKKwogMjAyMS0wNS0yNCAg
U2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29udmVydCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UgZnJvbSBhbiBlbnVtIHRvIGNsYXNzIHdyYXBwaW5nIGEgcGxhdGZvcm0g
Y29sb3Igc3BhY2UgKENHQ29sb3JTcGFjZVJlZiBmb3IgQ0cgcG9ydHMsIGV0Yy4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDU2ZDVhMGFlZTc3ZWE3NGQwMTBkZTQxZThmNjkwZjg2OTc5YTk1YTQuLmUwMDc3NTE2MjNh
YTA3OTg0MTA2YmMxNzQ1OTNjNWY2NWUwYzU5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAK
KzIwMjEtMDUtMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBM
ZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MzA0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTGV2ZXJhZ2UgdGhl
IG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkgY29uc3RydWN0b3IgaW4gZXhpc3RpbmcgY29k
ZS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oOgorICAgICAgICAo
SVBDOjpBcnJheVJlZmVyZW5jZTo6dmVjdG9yIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgICh2ZWN0b3JG
cm9tTlNEYXRhKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SWNvbkRhdGFiYXNlOjpzZXRJY29uRm9yUGFnZVVSTCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9y
aXphdGlvblNlc3Npb24ubW06CisgICAgICAgIChXZWJLaXQ6OldlYkNvcmU6OmNvbnZlcnRCeXRl
c1RvVmVjdG9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJ
RXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9u
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVj
dGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6cmVwb3J0UmVjZWl2ZWQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06Cisg
ICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVybmFsOjp0b1ZlY3Rvcik6Cisg
ICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVybmFsOjphYWd1aWRWZWN0b3Ip
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpOZmNDb25uZWN0aW9uOjp0cmFuc2FjdCBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorCiAyMDIxLTA1LTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJlbGVhc2UgbG9nZ2lu
ZyBpbiBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAppbmRl
eCAyODAxMGI4OGNiYmI2ODYyN2JjYzMzODgyYmI0MWQxNjU1OTgyMmE4Li4xZDIyNWM3OGUwM2I4
ZGE5OTQyZjMyMmJhODIzMDM3Y2UwMmY4YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcApAQCAtMTk3LDggKzE5Nyw3IEBAIGF1
dG8gU3RyZWFtaW5nUGFyc2VyOjpjb25zdW1lKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBzaXplX3Qg
Ynl0ZXNTaXplLCBzaXplX3QmIG9mCiAgICAgfQogCiAgICAgaWYgKG1fcmVtYWluaW5nLnNpemUo
KSA+IHJlcXVpcmVkU2l6ZSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KHJlcXVp
cmVkU2l6ZSk7Ci0gICAgICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBtX3JlbWFpbmluZy5kYXRh
KCksIHJlcXVpcmVkU2l6ZSk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQgeyBtX3Jl
bWFpbmluZy5kYXRhKCksIHJlcXVpcmVkU2l6ZSB9OwogICAgICAgICBtX3JlbWFpbmluZy5yZW1v
dmUoMCwgcmVxdWlyZWRTaXplKTsKICAgICAgICAgbV9uZXh0T2Zmc2V0ICs9IHJlcXVpcmVkU2l6
ZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRl
eCAyNDU3Y2VmNmM1M2ZhYWRmNzc0MGM5Yzk2MTg3YmRhYWZiNDk0OGNhLi44NmY5ODM4MGRhMDg1
ZWEzMmJmYmMwMDM3MDEwNjk0Mjk5MmMzYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3Bw
CkBAIC05MDIsOSArOTAyLDcgQEAgVmVjdG9yPGNoYXI+IGFzY2lpRGVidWcoU3RyaW5nSW1wbCog
aW1wbCkKICAgICAgICAgfQogICAgIH0KICAgICBDU3RyaW5nIG5hcnJvd1N0cmluZyA9IGJ1ZmZl
ci50b1N0cmluZygpLmFzY2lpKCk7Ci0gICAgVmVjdG9yPGNoYXI+IHJlc3VsdDsKLSAgICByZXN1
bHQuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5hcnJvd1N0cmluZy5kYXRh
KCkpLCBuYXJyb3dTdHJpbmcubGVuZ3RoKCkgKyAxKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5hcnJvd1N0cmluZy5kYXRh
KCkpLCBuYXJyb3dTdHJpbmcubGVuZ3RoKCkgKyAxIH07CiB9CiAKIFZlY3RvcjxjaGFyPiBhc2Np
aURlYnVnKFN0cmluZyYgc3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCA1NWNmZGFhZDdkYmZjMTE1ZDkyN2ZhZjlh
NGU4MGEzMTZjM2Y1MjYxLi4wMGNkZGM1MmIxZDkwYWIyMWI0MTMxY2Q0NjU1NjhmNWQwYTVkYWZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1
bWVyLmNwcApAQCAtNDMsOCArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBp
bmxpbmUgUmVmPEJsb2I+IGJsb2JGcm9tRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlKGxlbmd0aCk7
Ci0gICAgbWVtY3B5KHZhbHVlLmRhdGEoKSwgZGF0YSwgbGVuZ3RoKTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4gdmFsdWUgeyBkYXRhLCBsZW5ndGggfTsKICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNv
bnRleHQsIFdURk1vdmUodmFsdWUpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoY29udGVu
dFR5cGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCR2V0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkdldFJlc3VsdC5jcHAKaW5kZXggMmM1OWRlMGNjZTE3ZDMzNTQ1OTMyYmNiMzY1NWIwZWIzZTU1
OGU3ZC4uNWFjZWYyMGQ3Yjk2Mjk1Mjc1NTBiNTFhMmU3ZWZmYzEyM2ZmNTE4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCkBAIC0z
NCw5ICszNCw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChJREJHZXRSZXN1bHQpOwog
CiB2b2lkIElEQkdldFJlc3VsdDo6ZGF0YUZyb21CdWZmZXIoU2hhcmVkQnVmZmVyJiBidWZmZXIp
CiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoYnVmZmVyLnNpemUoKSk7Ci0gICAgbWVtY3B5
KGRhdGEuZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLQorICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVy
LmRhdGEoKSksIGJ1ZmZlci5zaXplKCkgfTsKICAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFC
dWZmZXI6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKaW5k
ZXggYmU5MjYxMmQ4MWQzMTc5MDk3Y2JhYmI2NWNhMjIwYjI5MGEwMTVkYy4uMDY4ZmVmNjI1YThl
MjgyMWI0YjhmNGQ2ODk1YzU3ZjA1YzU5MGI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwCkBAIC0z
Nyw5ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogVmVjdG9yPHVpbnQ4X3Q+IGNvbnZl
cnRCeXRlc1RvVmVjdG9yKGNvbnN0IHVpbnQ4X3QgYnl0ZUFycmF5W10sIGNvbnN0IHNpemVfdCBs
ZW5ndGgpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5k
KGJ5dGVBcnJheSwgbGVuZ3RoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiB7IGJ5
dGVBcnJheSwgbGVuZ3RoIH07CiB9CiAKIFZlY3Rvcjx1aW50OF90PiBwcm9kdWNlUnBJZEhhc2go
Y29uc3QgU3RyaW5nJiBycElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAKaW5kZXgg
OGQzNGJlOTNkMWJlNDgxM2E3YTliMzg1NWJhNGNhMWYwNGNmNjg4Ny4uODRjMTdiNzczNmM4NWQ2
MTdlZTkyZmNmYzJiNjgyOTk4MzAxZDUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIu
Y3BwCkBAIC01OSw4ICs1OSw3IEBAIE9wdGlvbmFsPGNib3I6OkNCT1JWYWx1ZT4gZGVjb2RlUmVz
cG9uc2VNYXAoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBpbkJ1ZmZlcikKICAgICBpZiAoaW5CdWZm
ZXIuc2l6ZSgpIDw9IGtSZXNwb25zZUNvZGVMZW5ndGggfHwgZ2V0UmVzcG9uc2VDb2RlKGluQnVm
ZmVyKSAhPSBDdGFwRGV2aWNlUmVzcG9uc2VDb2RlOjprU3VjY2VzcykKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgYnVmZmVy
LmFwcGVuZChpbkJ1ZmZlci5kYXRhKCkgKyAxLCBpbkJ1ZmZlci5zaXplKCkgLSAxKTsKKyAgICBW
ZWN0b3I8dWludDhfdD4gYnVmZmVyIHsgaW5CdWZmZXIuZGF0YSgpICsgMSwgaW5CdWZmZXIuc2l6
ZSgpIC0gMSB9OwogICAgIE9wdGlvbmFsPENCT1I+IGRlY29kZWRSZXNwb25zZSA9IGNib3I6OkNC
T1JSZWFkZXI6OnJlYWQoYnVmZmVyKTsKICAgICBpZiAoIWRlY29kZWRSZXNwb25zZSB8fCAhZGVj
b2RlZFJlc3BvbnNlLT5pc01hcCgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNr
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNr
ZXQuY3BwCmluZGV4IDUyMzIyMGExNmZiZmQzNDM5ZTUxMGU1MjcxYjE5YmU2NDY3OTk2Y2YuLjY4
M2Y3NTVjNDVkZmY2MjgyNWI0ZmE4YjExODJjOWQ0N2MzZTY3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKQEAg
LTY3LDkgKzY3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRJbml0UGFja2V0PiBGaWRvSGlk
SW5pdFBhY2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKGMKICAgICAvLyBVcGRhdGUgcmVt
YWluaW5nIHNpemUgdG8gZGV0ZXJtaW5lIHRoZSBwYXlsb2FkIHNpemUgb2YgZm9sbG93IG9uIHBh
Y2tldHMuCiAgICAgKnJlbWFpbmluZ1NpemUgPSBwYXlsb2FkU2l6ZSAtIGRhdGFTaXplOwogCi0g
ICAgYXV0byBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+KCk7Ci0gICAgZGF0YS5hcHBlbmQoc2VyaWFs
aXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFTaXplKTsKLQorICAgIFZlY3Rvcjx1aW50OF90PiBk
YXRhIHsgc2VyaWFsaXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFTaXplIH07CiAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNrZXQ+KGNoYW5uZWxJZCwgY29tbWFuZCwgV1RGTW92
ZShkYXRhKSwgcGF5bG9hZFNpemUpOwogfQogCkBAIC0xMjIsOSArMTIwLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+IEZpZG9IaWRDb250aW51YXRpb25QYWNr
ZXQ6OmNyZWF0ZUZyb20KICAgICAvLyBDaGVjayB0byBzZWUgaWYgcGFja2V0IHBheWxvYWQgaXMg
bGVzcyB0aGFuIG1heGltdW0gc2l6ZSBhbmQgcGFkZGVkIHdpdGggMHMuCiAgICAgc2l6ZV90IGRh
dGFTaXplID0gc3RkOjptaW4oKnJlbWFpbmluZ1NpemUsIGtIaWRQYWNrZXRTaXplIC0gaW5kZXgp
OwogICAgICpyZW1haW5pbmdTaXplIC09IGRhdGFTaXplOwotICAgIGF1dG8gZGF0YSA9IFZlY3Rv
cjx1aW50OF90PigpOwotICAgIGRhdGEuYXBwZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4
LCBkYXRhU2l6ZSk7Ci0KKyAgICBWZWN0b3I8dWludDhfdD4gZGF0YSA9IHsgc2VyaWFsaXplZC5i
ZWdpbigpICsgaW5kZXgsIGRhdGFTaXplIH07CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hp
ZENvbnRpbnVhdGlvblBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9Q
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKaW5k
ZXggOTc5ZDQ3NDdiOTNiNTUyZmRmNTIyMmM5MDk2OTQ5NjRhNTNjMTcwZS4uNTgzNzY1MGQzYmYy
MGJhMGIyYjcwODhkZWQ5ZTAzMzZlOTAxNGNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKQEAgLTE4MSwxMCArMTgxLDggQEAgT3B0aW9uYWw8S2V5
QWdyZWVtZW50UmVzcG9uc2U+IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZUZyb21DT1NFKGNv
bnN0IENCT1JWYWwKIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgZW5jb2RlQ09TRVB1YmxpY0tl
eShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJhd1B1YmxpY0tleSkKIHsKICAgICBBU1NFUlQocmF3
UHVibGljS2V5LnNpemUoKSA9PSA2NSk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHg7Ci0gICAgeC5h
cHBlbmQocmF3UHVibGljS2V5LmRhdGEoKSArIDEsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKTsK
LSAgICBWZWN0b3I8dWludDhfdD4geTsKLSAgICB5LmFwcGVuZChyYXdQdWJsaWNLZXkuZGF0YSgp
ICsgMSArIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoLCBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCk7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHggeyByYXdQdWJsaWNLZXkuZGF0YSgpICsgMSwgRVMyNTZG
aWVsZEVsZW1lbnRMZW5ndGggfTsKKyAgICBWZWN0b3I8dWludDhfdD4geSB7IHJhd1B1YmxpY0tl
eS5kYXRhKCkgKyAxICsgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgsIEVTMjU2RmllbGRFbGVtZW50
TGVuZ3RoIH07CiAKICAgICBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIHB1YmxpY0tleU1hcDsK
ICAgICBwdWJsaWNLZXlNYXBbY2Jvcjo6Q0JPUlZhbHVlKENPU0U6Omt0eSldID0gY2Jvcjo6Q0JP
UlZhbHVlKENPU0U6OkVDMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcAppbmRleCAyYjU0NmQx
NzM3ODM2ZTVmNGM3MzlmODIxNzNiMjE2ZDk4Yjc1YjExLi4xMzQ1NDFkMWVmNTk1NDI5ZjI1MTI4
MjJmMTkzZDUxNTNkNGQwYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKQEAgLTY0LDEz
ICs2NCwxMCBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RFQ1B1YmxpY0tleUZyb21V
MmZSZWdpc3RyYXRpb25SZXNwb25zZShjb25zdCBWZWN0bwogICAgIGlmICh1MmZEYXRhLnNpemUo
KSA8IHBvcyArIDIgKiBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIFZlY3Rvcjx1aW50OF90PiB4OwotICAgIHguYXBwZW5kKHUyZkRhdGEuZGF0YSgp
ICsgcG9zLCBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHgg
eyB1MmZEYXRhLmRhdGEoKSArIHBvcywgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGggfTsKICAgICBw
b3MgKz0gRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGg7CiAKLSAgICBWZWN0b3I8dWludDhfdD4geTsK
LSAgICB5LmFwcGVuZCh1MmZEYXRhLmRhdGEoKSArIHBvcywgRVMyNTZGaWVsZEVsZW1lbnRMZW5n
dGgpOwotCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHkgeyB1MmZEYXRhLmRhdGEoKSArIHBvcywgRVMy
NTZGaWVsZEVsZW1lbnRMZW5ndGggfTsKICAgICByZXR1cm4gZW5jb2RlRVMyNTZQdWJsaWNLZXlB
c0NCT1IoV1RGTW92ZSh4KSwgV1RGTW92ZSh5KSk7CiB9CiAKQEAgLTg0LDkgKzgxLDcgQEAgc3Rh
dGljIFZlY3Rvcjx1aW50OF90PiBleHRyYWN0Q3JlZGVudGlhbElkRnJvbVUyZlJlZ2lzdHJhdGlv
blJlc3BvbnNlKGNvbnN0IFZlY3QKIAogICAgIGlmICh1MmZEYXRhLnNpemUoKSA8IHBvcyArIGNy
ZWRlbnRpYWxJZExlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBWZWN0b3I8dWludDhf
dD4gY3JlZGVudGlhbElkOwotICAgIGNyZWRlbnRpYWxJZC5hcHBlbmQodTJmRGF0YS5kYXRhKCkg
KyBwb3MsIGNyZWRlbnRpYWxJZExlbmd0aCk7Ci0gICAgcmV0dXJuIGNyZWRlbnRpYWxJZDsKKyAg
ICByZXR1cm4geyB1MmZEYXRhLmRhdGEoKSArIHBvcywgY3JlZGVudGlhbElkTGVuZ3RoIH07CiB9
CiAKIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY3JlYXRlQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YUZy
b21VMmZSZWdpc3RlclJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBwdWJsaWNLZXkpCkBAIC0xMjQsMTIgKzExOSwxMCBAQCBzdGF0
aWMgY2Jvcjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBjcmVhdGVGaWRvQXR0ZXN0YXRpb25TdGF0ZW1l
bnRGcm9tVTJmUmVnaXN0ZXJSZQogICAgIGlmICgheDUwOUxlbmd0aCB8fCB1MmZEYXRhLnNpemUo
KSA8IG9mZnNldCArIHg1MDlMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBWZWN0
b3I8dWludDhfdD4geDUwOTsKLSAgICB4NTA5LmFwcGVuZCh1MmZEYXRhLmRhdGEoKSArIG9mZnNl
dCwgeDUwOUxlbmd0aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHg1MDkgeyB1MmZEYXRhLmRhdGEo
KSArIG9mZnNldCwgeDUwOUxlbmd0aCB9OwogICAgIG9mZnNldCArPSB4NTA5TGVuZ3RoOwogCi0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZTsKLSAgICBzaWduYXR1cmUuYXBwZW5kKHUyZkRh
dGEuZGF0YSgpICsgb2Zmc2V0LCB1MmZEYXRhLnNpemUoKSAtIG9mZnNldCk7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHNpZ25hdHVyZSB7IHUyZkRhdGEuZGF0YSgpICsgb2Zmc2V0LCB1MmZEYXRhLnNp
emUoKSAtIG9mZnNldCB9OwogICAgIGlmIChzaWduYXR1cmUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4geyB9OwogCkBAIC0xODQsOSArMTc3LDcgQEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGMK
ICAgICBhdXRvIGF1dGhEYXRhID0gYnVpbGRBdXRoRGF0YShycElkLCBmbGFncywgY291bnRlciwg
eyB9KTsKIAogICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIHJlbW92ZSB0aGUgbmVlZCBvZiBj
b25zdHJ1Y3RpbmcgYSB2ZWN0b3IgaGVyZS4KLSAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJl
OwotICAgIHNpZ25hdHVyZS5hcHBlbmQodTJmRGF0YS5kYXRhKCkgKyBzaWduYXR1cmVJbmRleCwg
dTJmRGF0YS5zaXplKCkgLSBzaWduYXR1cmVJbmRleCk7Ci0KKyAgICBWZWN0b3I8dWludDhfdD4g
c2lnbmF0dXJlIHsgdTJmRGF0YS5kYXRhKCkgKyBzaWduYXR1cmVJbmRleCwgdTJmRGF0YS5zaXpl
KCkgLSBzaWduYXR1cmVJbmRleCB9OwogICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U6OmNyZWF0ZShrZXlIYW5kbGUsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHsgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCBhZmQ3NDBhMWVjMTBhNjQ0ZGU1NzZiZTRmYTg0NDQ4ZjcyNTdk
MzI3Li5lNWUyN2Q0ZjQ1ZjU3MmNkZDYzNjRlNDE0YmJhMzk4ZjlmNDU0NmQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCkBAIC03MjAsOSArNzIwLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3
RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIKICAgICBhdXRv
IGZyYW1lID0gbWFrZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0g
b3BDb2RlOwogICAgIGZyYW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVWZWN0b3I7Ci0g
ICAgZnJhbWUtPnZlY3RvckRhdGEucmVzaXplKGRhdGFMZW5ndGgpOwotICAgIGlmIChkYXRhTGVu
Z3RoKQotICAgICAgICBtZW1jcHkoZnJhbWUtPnZlY3RvckRhdGEuZGF0YSgpLCBkYXRhLCBkYXRh
TGVuZ3RoKTsKKyAgICBmcmFtZS0+dmVjdG9yRGF0YSA9IHsgZGF0YSwgZGF0YUxlbmd0aCB9Owog
ICAgIG1fb3V0Z29pbmdGcmFtZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKGZyYW1lKSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdl
c3RHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0RpZ2VzdEdDcnlwdC5jcHAKaW5kZXggZDI4NTY2YjkxMzM4YmQ4ZDYzOTIzMWU1ODY3ZGI4N2Yy
M2ViNGE5Mi4uZDdkMDIzZjFjYmQ3MjNmMDRhN2NjMjg1ZDcxY2Q3OGIzMGJmY2U0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdD
cnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0RpZ2VzdEdDcnlwdC5jcHAKQEAgLTgyLDExICs4MiwxMCBAQCB2b2lkIENyeXB0b0RpZ2VzdDo6
YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCiAKIFZlY3Rvcjx1aW50
OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKIHsKLSAgICBpbnQgZGlnZXN0TGVuID0g
Z2NyeV9tZF9nZXRfYWxnb19kbGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKLSAgICBWZWN0b3I8
dWludDhfdD4gcmVzdWx0KGRpZ2VzdExlbik7CisgICAgc2l6ZV90IGRpZ2VzdExlbiA9IGdjcnlf
bWRfZ2V0X2FsZ29fZGxlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7CiAKICAgICBnY3J5X21kX2Zp
bmFsKG1fY29udGV4dC0+bWQpOwotICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBnY3J5X21kX3Jl
YWQobV9jb250ZXh0LT5tZCwgMCksIGRpZ2VzdExlbik7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJl
c3VsdCB7IGdjcnlfbWRfcmVhZChtX2NvbnRleHQtPm1kLCAwKSwgZGlnZXN0TGVuIH07CiAgICAg
Z2NyeV9tZF9jbG9zZShtX2NvbnRleHQtPm1kKTsKIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCmluZGV4IGI1NDkxOTFhN2RmMGIzZTI3MTVh
N2MwMjAzY2ZkNjk2ZDExMGYwNDcuLjhlMWU5MmRlZjhlODdmNTk0NWRjNDIyMzgzYzg5ZjFhMDg2
NTg1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCkBAIC00NTgsOSAr
NDU4LDcgQEAgc3RhdGljIE9wdGlvbmFsPEtleURhdGE+IHRvS2V5RGF0YShTdWJ0bGVDcnlwdG86
OktleUZvcm1hdCBmb3JtYXQsIFN1YnRsZUNyeXB0bzoKICAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIFtdIChhdXRvJiBidWZm
ZXJTb3VyY2UpIC0+IE9wdGlvbmFsPEtleURhdGE+IHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8
dWludDhfdD4gcmVzdWx0OwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlclNvdXJjZS0+ZGF0YSgpKSwgYnVmZmVyU291cmNlLT5i
eXRlTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBLZXlEYXRhIHsgcmVzdWx0IH07
CisgICAgICAgICAgICAgICAgcmV0dXJuIEtleURhdGEgeyBWZWN0b3I8dWludDhfdD4geyBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyU291cmNlLT5kYXRhKCkpLCBidWZmZXJTb3Vy
Y2UtPmJ5dGVMZW5ndGgoKSB9IH07CiAgICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAgY2Fz
ZSBTdWJ0bGVDcnlwdG86OktleUZvcm1hdDo6SndrOgpAQCAtNDgxLDkgKzQ3OSw3IEBAIHN0YXRp
YyBPcHRpb25hbDxLZXlEYXRhPiB0b0tleURhdGEoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9y
bWF0LCBTdWJ0bGVDcnlwdG86CiAKIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29weVRvVmVjdG9y
KEJ1ZmZlclNvdXJjZSYmIGRhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFWZWN0b3I7
Ci0gICAgZGF0YVZlY3Rvci5hcHBlbmQoZGF0YS5kYXRhKCksIGRhdGEubGVuZ3RoKCkpOwotICAg
IHJldHVybiBkYXRhVmVjdG9yOworICAgIHJldHVybiB7IGRhdGEuZGF0YSgpLCBkYXRhLmxlbmd0
aCgpIH07CiB9CiAKIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkRXhwb3J0S2V5KENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKaW5kZXggOTY2ODc1MGMwNDA2ZTc4MjBjN2Q3
OTU5NGQ5NDhkOGQyYmMyZDg3My4uNmFkNDAzZjQ1NThhYzg2ODRhODYwNGUwNWZjNDRjN2RlZWJm
ODQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlF
Q0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlF
Q0dDcnlwdC5jcHAKQEAgLTUyMSwxMyArNTIxLDggQEAgYm9vbCBDcnlwdG9LZXlFQzo6cGxhdGZv
cm1BZGRGaWVsZEVsZW1lbnRzKEpzb25XZWJLZXkmIGp3aykgY29uc3QKICAgICBpZiAocU1QSSkg
ewogICAgICAgICBhdXRvIHEgPSBtcGlEYXRhKHFNUEkpOwogICAgICAgICBpZiAocSAmJiBxLT5z
aXplKCkgPT0gY3VydmVVbmNvbXByZXNzZWRQb2ludFNpemUobV9jdXJ2ZSkpIHsKLSAgICAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBhOwotICAgICAgICAgICAgYS5hcHBlbmQocS0+ZGF0YSgpICsg
MSwgdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZSk7Ci0gICAgICAgICAgICBqd2sueCA9IGJh
c2U2NFVSTEVuY29kZVRvU3RyaW5nKGEpOwotCi0gICAgICAgICAgICBWZWN0b3I8dWludDhfdD4g
YjsKLSAgICAgICAgICAgIGIuYXBwZW5kKHEtPmRhdGEoKSArIDEgKyB1bmNvbXByZXNzZWRGaWVs
ZEVsZW1lbnRTaXplLCB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplKTsKLSAgICAgICAgICAg
IGp3ay55ID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoYik7CisgICAgICAgICAgICBqd2sueCA9
IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKFZlY3Rvcjx1aW50OF90PiB7IHEtPmRhdGEoKSArIDEs
IHVuY29tcHJlc3NlZEZpZWxkRWxlbWVudFNpemUgfSk7CisgICAgICAgICAgICBqd2sueSA9IGJh
c2U2NFVSTEVuY29kZVRvU3RyaW5nKFZlY3Rvcjx1aW50OF90PiB7IHEtPmRhdGEoKSArIDEgKyB1
bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplLCB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXpl
IH0pOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL0NyeXB0b0tleUVDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvS2V5RUNNYWMuY3BwCmluZGV4IDU0MGYzM2JjYmU0MmFhOWFmNGI3ZmVmOWRjMDBlMjlmNzBh
MTZjNjAuLmY0N2UxZDhhNzM3MGIyNjU2ZjA5OGMxNTNlYzUxZDQ0OGFlYWNlMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwCkBAIC0zNTQsOCArMzU0
LDcgQEAgUmVmUHRyPENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRQa2Nz
OChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGkKICAgICBpbmRleCArPSBieXRlc1VzZWRUb0Vu
Y29kZWRMZW5ndGgoa2V5RGF0YVtpbmRleF0pICsgMTsgLy8gUmVhZCBsZW5ndGgsIEluaXRpYWxP
Y3RldAogCiAgICAgLy8gS2V5QmluYXJ5ID0gdW5jb21wcmVzc2VkIHBvaW50ICsgcHJpdmF0ZSBr
ZXkKLSAgICBWZWN0b3I8dWludDhfdD4ga2V5QmluYXJ5OwotICAgIGtleUJpbmFyeS5hcHBlbmQo
a2V5RGF0YS5kYXRhKCkgKyBpbmRleCwga2V5RGF0YS5zaXplKCkgLSBpbmRleCk7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGtleUJpbmFyeSB7IGtleURhdGEuZGF0YSgpICsgaW5kZXgsIGtleURhdGEu
c2l6ZSgpIC0gaW5kZXggfTsKICAgICBpZiAoIWRvZXNVbmNvbXByZXNzZWRQb2ludE1hdGNoTmFt
ZWRDdXJ2ZShjdXJ2ZSwga2V5QmluYXJ5LnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGtleUJpbmFyeS5hcHBlbmQoa2V5RGF0YS5kYXRhKCkgKyBwcml2YXRlS2V5UG9zLCBn
ZXRLZXlTaXplRnJvbU5hbWVkQ3VydmUoY3VydmUpIC8gOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQppbmRleCA1
NzFkYTQ3YWEyNDM3Y2JmZDY3MzY5NTc0OTg4YTNjMWFhYTE2ODJkLi44Yjg3MjdhYWFkYWYxODhm
MWM1ZjQwNDdkOTY2MzVhZDRlYzNmYzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KQEAgLTY0LDkgKzY0LDcg
QEAgY29uc3Qgc2l6ZV90IG1hc3RlcktleVNpemVJbkJ5dGVzID0gMTY7CiAKIGlubGluZSBWZWN0
b3I8dWludDhfdD4gdmVjdG9yRnJvbU5TRGF0YShOU0RhdGEqIGRhdGEpCiB7Ci0gICAgVmVjdG9y
PHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kKChjb25zdCB1aW50OF90KilbZGF0
YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJu
IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEg
bGVuZ3RoXSB9OwogfQogCiBzdGF0aWMgTlNTdHJpbmcqIG1hc3RlcktleUFjY291bnROYW1lRm9y
Q3VycmVudEFwcGxpY2F0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9v
cGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19HQ01PcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19HQ01PcGVuU1NMLmNwcAppbmRleCA0
YzJkYjMxZGQyZTI4Y2JhMGI3MThmMjlhYjQzYTQyNGYzZjI2Zjk4Li4yNzJhNjI0MzM5ZWE0NjQ1
NWQ1NzVjYTA4ZGRhY2Y3ZWVlYmI3NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNT3BlblNTTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU9wZW5TU0wuY3Bw
CkBAIC0xMTUsOCArMTE1LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5
cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgIGludCBjaXBo
ZXJUZXh0TGVuID0gY2lwaGVyVGV4dC5zaXplKCkgLSB0YWdMZW5ndGg7CiAKICAgICBWZWN0b3I8
dWludDhfdD4gcGxhaW5UZXh0KGNpcGhlclRleHQuc2l6ZSgpKTsKLSAgICBWZWN0b3I8dWludDhf
dD4gdGFnKHRhZ0xlbmd0aCk7Ci0gICAgbWVtY3B5KHRhZy5kYXRhKCksIGNpcGhlclRleHQuZGF0
YSgpICsgY2lwaGVyVGV4dExlbiwgdGFnTGVuZ3RoKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdGFn
IHsgY2lwaGVyVGV4dC5kYXRhKCkgKyBjaXBoZXJUZXh0TGVuLCB0YWdMZW5ndGggfTsKIAogICAg
IC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAgIGlmICghKGN0eCA9IEV2
cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5j
cHAKaW5kZXggODE2ZmVkOTRlMTRkYzE3YzFlM2NjMzc5OTI0NzdmZTVmZGIxYWVkYS4uNjcwOGJj
ODc1NmM2MjRmYjQ0M2MzYjJiZWUxOTI3MjViY2MwODMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwCkBAIC0xMTMsMTEgKzExMyw4IEBAIEJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0CiAgICAgLCBt
X3R5cGUoY29udGVudFR5cGUpCiAgICAgLCBtX3NpemUoYnVmZmVyLnNpemUoKSkKIHsKLSAgICBW
ZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBkYXRhLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZm
ZXIuc2l6ZSgpKTsKLQogICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwotICAgIGJsb2JQ
YXJ0cy5hcHBlbmQoQmxvYlBhcnQoV1RGTW92ZShkYXRhKSkpOworICAgIGJsb2JQYXJ0cy5hcHBl
bmQoQmxvYlBhcnQoVmVjdG9yPHVpbnQ4X3Q+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCkgfSkpOwogICAgIG1faW50ZXJuYWxV
UkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyks
IGNvbnRlbnRUeXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmluZGV4IDdhYmRkMzQzODA0OTA2YWZkZGExYzY2YjEz
ZmI2NDJmYTRjNGRkMGMuLjBjNDQxMzI1MGU4ZGU2OTQzNzljZmYwZGVkMGRkYzkyN2ZlYjM5OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2lu
Z1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNr
aW5nU3RvcmUuaApAQCAtMjA1LDggKzIwNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9wcmVt
dWx0aXBseUFscGhhKG90aGVyLm1fcHJlbXVsdGlwbHlBbHBoYSkKICAgICB7CiAgICAgICAgIEFT
U0VSVCghbV9zaXplLmlzRW1wdHkoKSAmJiAhaXNPdmVyU2l6ZShtX3NpemUpKTsKLSAgICAgICAg
VmVjdG9yPGNoYXI+IGJ1ZmZlcjsKLSAgICAgICAgYnVmZmVyLmFwcGVuZChvdGhlci5tX3BpeGVs
cy0+ZGF0YSgpLCBvdGhlci5tX3BpeGVscy0+c2l6ZSgpKTsKKyAgICAgICAgVmVjdG9yPGNoYXI+
IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkg
fTsKICAgICAgICAgbV9waXhlbHMgPSBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUo
V1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgbV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0
PHVpbnQzMl90Kj4oY29uc3RfY2FzdDxjaGFyKj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdl
QnVmZmVyVXRpbGl0aWVzQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5jcHAKaW5kZXggZDc5NzI4NTU1Yjdk
YjliNTljYjYxNWM1NWE3YTdhNjg1MWNiNTdjOC4uNWE0ZDNhNTA4NTlhNWU4NDRjN2Y0MjQxMzA2
OTE3MTQ4MDJiMDFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5jcHAK
QEAgLTEyMyw5ICsxMjMsNyBAQCBWZWN0b3I8dWludDhfdD4gZGF0YShjYWlyb19zdXJmYWNlX3Qq
IGltYWdlLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkbwogICAgIGlmICghZW5j
b2RlSW1hZ2UoaW1hZ2UsIG1pbWVUeXBlLCBxdWFsaXR5LCBidWZmZXIsIGJ1ZmZlclNpemUpKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGltYWdlRGF0YTsKLSAg
ICBpbWFnZURhdGEuYXBwZW5kKGJ1ZmZlci5nZXQoKSwgYnVmZmVyU2l6ZSk7Ci0gICAgcmV0dXJu
IGltYWdlRGF0YTsKKyAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihidWZmZXIuZ2V0KCkpLCBidWZmZXJTaXplIH07CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKEdU
SykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCBjOWJlMjc4ODllNGQyZTUzMTJi
M2VjOTNhMzBmNGE3YzhlNzY5MzkzLi41MDVmODQ1YzliYmZiMmVjOTBkNWFkZjFlYzQwMzU0Y2Q1
MWRhYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNDE5LDkgKzQxOSw3IEBA
IHZvaWQgY29ubmVjdFNpbXBsZUJ1c01lc3NhZ2VDYWxsYmFjayhHc3RFbGVtZW50KiBwaXBlbGlu
ZSkKIAogVmVjdG9yPHVpbnQ4X3Q+IEdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29u
c3QKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yOwotICAgIHZlY3Rvci5hcHBlbmQoZGF0
YSgpLCBzaXplKCkpOwotICAgIHJldHVybiB2ZWN0b3I7CisgICAgcmV0dXJuIHsgZGF0YSgpLCBz
aXplKCkgfTsKIH0KIAogUmVmPFNoYXJlZEJ1ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNy
ZWF0ZVNoYXJlZEJ1ZmZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmNwcApp
bmRleCBiZTE1NDI1NWYzZDc2ODMxNWUzNTY4NzY5MDQ3NmY3ZjhhZTNiYmYyLi5jZjgyMGQxNjVi
M2QwZDBlNWI4ZDA1OGE1NjJiMzQ5MTQxMzg4MjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJv
eHlDbGVhcktleS5jcHAKQEAgLTExOCw4ICsxMTgsNyBAQCBib29sIENETVByb3h5Q2xlYXJLZXk6
OmNlbmNTZXREZWNyeXB0aW9uS2V5KGNlbmNEZWNyeXB0Q29udGV4dCYgaW4pCiAgICAgLy8gRklY
TUU6IFVubmVjZXNzYXJ5IGNvcHksIGNhbiB3ZSBhdm9pZCB0aGlzIHdoaWxlIHN0aWxsIGV4cG9z
aW5nCiAgICAgLy8gYSBub24tR1N0cmVhbWVyLXNwZWNpZmljIERlY3J5cHRJbnB1dCBBUEk/IFRo
ZXNlIGJ1ZmZlcnMgYXJlCiAgICAgLy8gc21hbGwgKDE2IGJ5dGVzKSwgc28gbm90IGEgaHVnZSBk
ZWFsLCBJIGd1ZXNzLgotICAgIFZlY3Rvcjx1aW50OF90PiBrZXlJRFZlYzsKLSAgICBrZXlJRFZl
Yy5hcHBlbmQoaW4ua2V5SUQsIGluLmtleUlEU2l6ZUluQnl0ZXMpOworICAgIFZlY3Rvcjx1aW50
OF90PiBrZXlJRFZlYyB7IGluLmtleUlELCBpbi5rZXlJRFNpemVJbkJ5dGVzIH07CiAKICAgICBh
dXRvIGtleURhdGEgPSBnZXRPcldhaXRGb3JLZXlWYWx1ZShrZXlJRFZlYywgV1RGTW92ZShpbi5j
ZG1Qcm94eURlY3J5cHRpb25DbGllbnQpKTsKICAgICBpZiAoIWtleURhdGEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlh
UmVjb3JkZXJQcml2YXRlTW9jay5jcHAKaW5kZXggN2EwZWJlMzhmMmEyMDkyMzE3OTg1Zjg0MTg3
OWNhYWE4OTcyZTc0YS4uZjgyMTVjMGUwZWM5MDg5MmJlYWI1OThjMWMzMTBhNjQ2MzUxYjQ5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJl
Y29yZGVyUHJpdmF0ZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcApAQCAtOTYsOCArOTYsNyBAQCB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6ZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNr
JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwog
ICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyTG9jayB9OwotICAgICAgICBW
ZWN0b3I8dWludDhfdD4gdmFsdWUobV9idWZmZXIubGVuZ3RoKCkpOwotICAgICAgICBtZW1jcHko
dmFsdWUuZGF0YSgpLCBtX2J1ZmZlci5jaGFyYWN0ZXJzOCgpLCBtX2J1ZmZlci5sZW5ndGgoKSk7
CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZSB7IG1fYnVmZmVyLmNoYXJhY3RlcnM4KCks
IG1fYnVmZmVyLmxlbmd0aCgpIH07CiAgICAgICAgIG1fYnVmZmVyLmNsZWFyKCk7CiAgICAgICAg
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFdURk1vdmUodmFsdWUpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDYxY2Qz
OGY2N2IxYzhlYmEwNjg0NjdkNGQ2YzcxMjY0YmYyOWFiZDMuLjY1YzU1MDhiMzVkZDQyMjEyMmMz
NmUyODFmZTA3NTQ0YzQ1NDI2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCkBAIC0xNjUsOSArMTY1LDcgQEAgRm9ybURhdGFFbGVtZW50IEZvcm1E
YXRhRWxlbWVudDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gc3dpdGNoT24o
ZGF0YSwKICAgICAgICAgW10gKGNvbnN0IFZlY3RvcjxjaGFyPiYgYnl0ZXMpIHsKLSAgICAgICAg
ICAgIFZlY3RvcjxjaGFyPiBjb3B5OwotICAgICAgICAgICAgY29weS5hcHBlbmQoYnl0ZXMuZGF0
YSgpLCBieXRlcy5zaXplKCkpOwotICAgICAgICAgICAgcmV0dXJuIEZvcm1EYXRhRWxlbWVudChX
VEZNb3ZlKGNvcHkpKTsKKyAgICAgICAgICAgIHJldHVybiBGb3JtRGF0YUVsZW1lbnQoVmVjdG9y
PGNoYXI+IHsgYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkgfSk7CiAgICAgICAgIH0sIFtdIChj
b25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0YSYgZmlsZURhdGEpIHsKICAgICAg
ICAgICAgIHJldHVybiBGb3JtRGF0YUVsZW1lbnQoZmlsZURhdGEuaXNvbGF0ZWRDb3B5KCkpOwog
ICAgICAgICB9LCBbXSAoY29uc3QgRm9ybURhdGFFbGVtZW50OjpFbmNvZGVkQmxvYkRhdGEmIGJs
b2JEYXRhKSB7CkBAIC0xODUsOSArMTgzLDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5kRGF0YShj
b25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KLSAgICBWZWN0b3I8Y2hhcj4gdmVjdG9yOwotICAgIHZlY3Rvci5hcHBlbmQo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUpOwotICAgIG1fZWxlbWVu
dHMuYXBwZW5kKFdURk1vdmUodmVjdG9yKSk7CisgICAgbV9lbGVtZW50cy5hcHBlbmQoVmVjdG9y
PGNoYXI+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSksIHNpemUgfSk7CiB9
CiAKIHZvaWQgRm9ybURhdGE6OmFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVs
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVs
cGVyLmNwcAppbmRleCBhNjMyYTFjMGUxMDJiYjQyNzZlNDEzNDhlMDE4NzI4Yzc3ZWIyOTMxLi5j
ZGRkYThiMjRmZTZlZmE2YzJiYWU4ZTgyMTExMGM4M2ZjN2NhOGZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBA
IC0xMTYsOSArMTE2LDcgQEAgcHVibGljOgogICAgICAgICBpZiAobGVuZ3RoIDwgMCkKICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJl
c3VsdDsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChkYXRhLCBsZW5ndGgpOwotICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgICAgICByZXR1cm4gVmVjdG9yPHVpbnQ4X3Q+IHsgZGF0YSwgbGVuZ3Ro
IH07CiAgICAgfQogCiAgICAgU3RyaW5nIGdldERhdGFBc1N0cmluZygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYWExNDFkOGVmNzUyYjg0NjZmNWQ3ZTExMGZl
Mjg2YjkxNDEyYmZmOC4uOGNmMDJiMTc5ZWJmYmRkMzc3YTZhNTQ4ZDBjNmE3YWY2OTE3N2Y5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzc0OSw4ICszNzQ5LDcgQEAg
UmVmPEFycmF5QnVmZmVyPiBJbnRlcm5hbHM6OnNlcmlhbGl6ZU9iamVjdChjb25zdCBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYKIAogUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW50
ZXJuYWxzOjpkZXNlcmlhbGl6ZUJ1ZmZlcihBcnJheUJ1ZmZlciYgYnVmZmVyKSBjb25zdAogewot
ICAgIFZlY3Rvcjx1aW50OF90PiBieXRlczsKLSAgICBieXRlcy5hcHBlbmQoc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuYnl0ZUxlbmd0aCgpKTsKKyAg
ICBWZWN0b3I8dWludDhfdD4gYnl0ZXMgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVm
ZmVyLmRhdGEoKSksIGJ1ZmZlci5ieXRlTGVuZ3RoKCkgfTsKICAgICByZXR1cm4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjphZG9wdChXVEZNb3ZlKGJ5dGVzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRl
eCAzMjQ4NDU1NGNmOWQ0NzNlYTJlOTcxZDFlMWVhOWRmMWJjMzgwMTI5Li4xMTVhYmIxYmJlNDJi
OThiOWU0MGI3YjEzN2FlZDQ2YzRmM2Y3ZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBAIC00OTAsMTAgKzQ5
MCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVuYyhjb25zdCBjaGFyKiB1cmkpCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyOwotICAgIGlmIChkYXRhKQotICAgICAg
ICBidWZmZXIuYXBwZW5kKGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKLSAgICByZXR1cm4g
bmV3IE9mZnNldEJ1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpOworICAgIHJldHVybiBuZXcgT2Zmc2V0
QnVmZmVyKHsgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkgfSk7CiB9CiAKIHN0YXRpYyBpbnQg
cmVhZEZ1bmModm9pZCogY29udGV4dCwgY2hhciogYnVmZmVyLCBpbnQgbGVuKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKaW5kZXggMzQ2N2JkZmRiNmExYzZl
ZDQzNDEyNTFiZjg4ZjA2MjE2ZDE4NjY3My4uMTgxZDRkZTUyNmY5YTc0ZDM2NmZkOGNiZTVhYTM1
YTNjYmFjMDZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlS
ZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5j
ZS5oCkBAIC0xMDcsMTAgKzEwNyw3IEBAIHB1YmxpYzoKIAogICAgIFZlY3RvcjxUPiB2ZWN0b3Io
KSBjb25zdAogICAgIHsKLSAgICAgICAgVmVjdG9yPFQ+IHJlc3VsdDsKLSAgICAgICAgaWYgKCFp
c0VtcHR5KCkpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1fZGF0YSwgRXh0ZW50KTsKLSAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHsgbV9kYXRhLCBFeHRlbnQgfTsK
ICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDdhNzdj
MGFiYzdmODJiMjQwNzhjY2MxMWM1NDRkNTVjM2ExNmU5ZWIuLmQ3ZTc5ZmZiMGE1YmY0NDM3OTE1
ODcxMGViNjNkYWNkMDM3NzhiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0y
OTUsOSArMjk1LDcgQEAgLSAodm9pZCljYW5jZWwKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogc3Rh
dGljIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3JGcm9tTlNEYXRhKE5TRGF0YSogZGF0YSkKIHsKLSAg
ICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmQoKGNvbnN0IHVpbnQ4
X3QqKWRhdGEuYnl0ZXMsIGRhdGEubGVuZ3RoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJl
dHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRh
Lmxlbmd0aCB9OwogfQogCiBzdGF0aWMgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9uczo6UnBFbnRpdHkgcHVibGljS2V5Q3JlZGVudGlhbFJwRW50aXR5KF9XS1B1Ymxp
Y0tleUNyZWRlbnRpYWxSZWx5aW5nUGFydHlFbnRpdHkgKnJwRW50aXR5KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKaW5kZXggMzZhZjEz
ZTc1OWZhMDUzM2ZkYWM4ZmI1M2FiYWYzNTBlMzhiMjNkMC4uM2FiODMzYzhlMDdjZmZmYmQ1ODcz
NDA3M2FhYzc4MWM3MGNiZWFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCkBAIC02MzgsOSArNjM4LDcgQEAgdm9pZCBJY29uRGF0
YWJhc2U6OnNldEljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgdW5z
aWduZWQgY2hhcioKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBk
YXRhOwotICAgIGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpY29uRGF0YVNpemUpOwotICAg
IGRhdGEuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGljb25EYXRhKSwgaWNv
bkRhdGFTaXplKTsKKyAgICBWZWN0b3I8Y2hhcj4gZGF0YSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgY2hhcio+KGljb25EYXRhKSwgaWNvbkRhdGFTaXplIH07CiAgICAgbV93b3JrUXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGljb25VUkwgPSBp
Y29uVVJMLmlzb2xhdGVkQ29weSgpLCBpY29uRGF0YSA9IFdURk1vdmUoZGF0YSksIHBhZ2VVUkwg
PSBwYWdlVVJMLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwogICAgICAgICBpZiAobV9kYi5pc09wZW4oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9u
U2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlv
bi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KaW5kZXggMjY1ODk4Y2ZkOGY1Yjdm
NzA3MzNkYzUxODg4YjU2MDhkOGIzN2JjNy4uYzY1OWQyMTRhYjdkY2RlOTUxNzE4N2E5ZGUyOWZh
YzQ5MjBkNWE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09B
dXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhv
cml6YXRpb25TZXNzaW9uLm1tCkBAIC00NSw5ICs0NSw3IEBAIGNvbnN0IGNoYXIqIHNvQXV0aG9y
aXphdGlvblBvc3REaWRDYW5jZWxNZXNzYWdlVG9QYXJlbnQgPSAiPHNjcmlwdD5wYXJlbnQucG9z
dE1lCiAKIHN0YXRpYyBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRCeXRlc1RvVmVjdG9y
KGNvbnN0IHVpbnQ4X3QgYnl0ZUFycmF5W10sIGNvbnN0IHNpemVfdCBsZW5ndGgpCiB7Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kKGJ5dGVBcnJheSwgbGVu
Z3RoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiB7IGJ5dGVBcnJheSwgbGVuZ3Ro
IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmNwcAppbmRleCBiOWZkYTI4ZWE5MDcyNGFjNmY1ZGNkNWZkOTNm
Mzg0MjZkNzQyMGU0Li41OWM4ZTk2YzFiOWUwYzkzZTk5YTMyMWZjZDc4MTI0YzYwNjBmZGExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAK
QEAgLTE2MywxMCArMTYzLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW4KICAgICAgICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyByZXR1cm5lZFZhbHVlIH0pOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgICAg
IGRhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0gICAg
ICAgICAgICBkYXRhLmFwcGVuZChkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5z
aXplKCkpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB7IEFQSTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjphZG9wdChXVEZNb3ZlKGRhdGEpKS5wdHIoKSB9IH0pOworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB7IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9w
dChWZWN0b3I8dWludDhfdD4geyBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5z
aXplKCkgfSkucHRyKCkgfSB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25u
ZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvSGlkQ29ubmVjdGlvbi5tbQppbmRleCBmMmYxOTNjNzUwMTI0YjhjZTYzMDVjMjc1MGE2MmEx
ZjM0ZmFkOWI2Li40NWFjZGNiMmJkMmU5NWYzYzE1ZmMwMDYwOWM1ZGFhZGU4OTUzYzUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9I
aWRDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24ubW0KQEAgLTUxLDkgKzUxLDcgQEAgc3RhdGljIHZv
aWQgcmVwb3J0UmVjZWl2ZWQodm9pZCogY29udGV4dCwgSU9SZXR1cm4gc3RhdHVzLCB2b2lkKiwg
SU9ISURSZXBvcnRUeXAKICAgICBBU1NFUlQocmVwb3J0SUQgPT0ga0hpZFJlcG9ydElkKTsKICAg
ICBBU1NFUlQocmVwb3J0TGVuZ3RoID09IGtIaWRNYXhQYWNrZXRTaXplKTsKIAotICAgIFZlY3Rv
cjx1aW50OF90PiByZXBvcnREYXRhOwotICAgIHJlcG9ydERhdGEuYXBwZW5kKHJlcG9ydCwgcmVw
b3J0TGVuZ3RoKTsKLSAgICBjb25uZWN0aW9uLT5yZWNlaXZlUmVwb3J0KFdURk1vdmUocmVwb3J0
RGF0YSkpOworICAgIGNvbm5lY3Rpb24tPnJlY2VpdmVSZXBvcnQoeyByZXBvcnQsIHN0YXRpY19j
YXN0PHNpemVfdD4ocmVwb3J0TGVuZ3RoKSB9KTsKIH0KIAogSGlkQ29ubmVjdGlvbjo6SGlkQ29u
bmVjdGlvbihJT0hJRERldmljZVJlZiBkZXZpY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IubW0KaW5kZXggZjIyZjBmOGI3YWRhOWVmODgwOTI2ZTE5MjQ0ZDIyMzI3ODFk
OTVjOS4uYzdhYjMwZTRkZjBmM2E1MmZmMzI4NWY0NzQ0MjZkM2U4NDFjMzQ4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxB
dXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQpAQCAtOTAsMTYgKzkwLDEzIEBAIHN0
YXRpYyBpbmxpbmUgSGFzaFNldDxTdHJpbmc+IHByb2R1Y2VIYXNoU2V0KGNvbnN0IFZlY3RvcjxQ
dWJsaWNLZXlDcmVkZW50aWFsRGVzCiAKIHN0YXRpYyBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IHRv
VmVjdG9yKE5TRGF0YSAqZGF0YSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAg
IHJlc3VsdC5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRl
cyksIGRhdGEubGVuZ3RoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9Owog
fQogCiBzdGF0aWMgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBhYWd1aWRWZWN0b3IoKQogewotICAg
IFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZChhYWd1aWQsIGFhZ3Vp
ZExlbmd0aCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VmVjdG9yPHVpbnQ4X3Q+PiBhYWd1aWRWZWN0b3IgPSB7IGFhZ3VpZCwgYWFndWlkTGVuZ3RoIH07
CisgICAgcmV0dXJuIGFhZ3VpZFZlY3RvcjsKIH0KIAogc3RhdGljIGlubGluZSBSZXRhaW5QdHI8
TlNEYXRhPiB0b05TRGF0YShjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25u
ZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTmZjQ29ubmVjdGlvbi5tbQppbmRleCA5MTA0ODUwNzk3NDExN2JmOWVmM2UzNmQxODQyZmVl
MTk4NDk1Njc0Li5jNjRiMzVlODE1NjU2OGQ1ZTUxM2MwNmY1M2Q5Nzk2ZjQwMTdmZDA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9O
ZmNDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24ubW0KQEAgLTkwLDExICs5MCw5IEBAIE5mY0Nvbm5l
Y3Rpb246On5OZmNDb25uZWN0aW9uKCkKIAogVmVjdG9yPHVpbnQ4X3Q+IE5mY0Nvbm5lY3Rpb246
OnRyYW5zYWN0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPHVp
bnQ4X3Q+IHJlc3BvbnNlOwogICAgIC8vIFRoZSBtZXRob2Qgd2lsbCByZXR1cm4gYW4gZW1wdHkg
TlNEYXRhIGlmIHRoZSB0YWcgaXMgZGlzY29ubmVjdGVkLgogICAgIGF1dG8gKnJlc3BvbnNlRGF0
YSA9IFttX3Nlc3Npb24gdHJhbnNjZWl2ZTphZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0pLmdldCgpXTsKLSAgICByZXNw
b25zZS5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzcG9uc2VEYXRh
LmJ5dGVzKSwgcmVzcG9uc2VEYXRhLmxlbmd0aCk7Ci0gICAgcmV0dXJuIHJlc3BvbnNlOworICAg
IHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlc3BvbnNlRGF0YS5i
eXRlcyksIHJlc3BvbnNlRGF0YS5sZW5ndGggfTsKIH0KIAogdm9pZCBOZmNDb25uZWN0aW9uOjpz
dG9wKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAKaW5kZXggOTc2Y2ZiNWQ2MzgwZTdmOGQzNjJmNjJiNWUxYmQxNWU1YmQ1YTZjMy4uNGYzYjY5
OTZmYWU5MDdlMTEzMWNkOGI5MDE0ZGY3MTA4NGExYWRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTIyMCwxMCArMjIwLDggQEAgYXV0byBX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikg
LT4gRXhjZXB0aW9uVHlwZQogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewogICAgICAgICBWZWN0
b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKG1fc3luY0RhdGEpIHsKLSAgICAgICAgICAg
IGRhdGEucmVzaXplKG1fc3luY0RhdGEtPnNpemUoKSk7Ci0gICAgICAgICAgICBtZW1jcHkoZGF0
YS5kYXRhKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fc3luY0RhdGEtPmRh
dGEoKSksIG1fc3luY0RhdGEtPnNpemUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1fc3lu
Y0RhdGEpCisgICAgICAgICAgICBkYXRhID0geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihtX3N5bmNEYXRhLT5kYXRhKCkpLCBtX3N5bmNEYXRhLT5zaXplKCkgfTsKIAogICAgICAg
ICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIFdURk1vdmUo
ZGF0YSkpOwogICAgICAgICBtX3N5bmNEYXRhID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3Bw
CmluZGV4IDZhOGM2MzIxMGQyNzJhYjMzZTkyYzExYmVmY2RmMDM5YjYwZmY3YzUuLjYxMDlkYWJh
Zjg1ZGMyYzA1YTYwOTVjMTYxY2Y1YjkxNGVmNjlmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcApA
QCAtMTU0LDkgKzE1NCw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZl
RGF0YShzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0YSkKIAogICAgIGlmIChtX3dhaXRp
bmdGb3JDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBXRUJVUkxTQ0hFTUVUQVNLUFJPWFlf
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZURhdGE6IFJlY2VpdmVkIGRhdGEgZHVy
aW5nIHJlc3BvbnNlIHByb2Nlc3NpbmcsIHF1ZXVpbmcgaXQuIik7Ci0gICAgICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhVmVjdG9yOwotICAgICAgICBkYXRhVmVjdG9yLmFwcGVuZChkYXRhLCBzaXpl
KTsKLSAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGRhdGFWZWN0b3IgPSBXVEZNb3ZlKGRhdGFWZWN0b3IpXSB7CisgICAgICAgIHF1ZXVlVGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhVmVjdG9yID0gVmVj
dG9yPHVpbnQ4X3Q+IHsgZGF0YSwgc2l6ZSB9XSB7CiAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0
YShkYXRhVmVjdG9yLnNpemUoKSwgZGF0YVZlY3Rvci5kYXRhKCkpOwogICAgICAgICB9KTsKICAg
ICAgICAgcmV0dXJuOwo=
</data>
<flag name="commit-queue"
          id="451082"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429823</attachid>
            <date>2021-05-26 18:47:19 -0700</date>
            <delta_ts>2021-05-26 19:07:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226304-20210526184718.patch</filename>
            <type>text/plain</type>
            <size>46141</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OTNiZWEyNWE3ZWZkMDViM2M0Nzk2MmY2ZmJlZWUzYTQ0N2QwNTllLi45MTQ4YjU0NGY4MGU5Njc1
MWNiNDMxZTYxZDYyZGU3YmEyMDcxMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNvbnN0IFQqLCBzaXplX3QpIGNvbnN0
cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjYzMDQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBMZXZl
cmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvciBpbiBleGlz
dGluZyBjb2RlLgorCisgICAgICAgICogd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2VyOjpjb25zdW1lKToKKwogMjAyMS0wNS0y
NiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OOiBBU1NFUlRJT04gRkFJTEVEOiAhaXNDb21waWxhdGlvblRocmVhZCgpIGluIEpTQzo6UHJv
ZmlsZXI6OkRhdGFiYXNlOjphZGRDb21waWxhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJjYTVhOTk3MmUyMGNiM2Nl
Njk5NWY5NjEzYTE0YjZjNWZjNjYxMTguLjYzYzMwODUwZThkMGI5MGFmZTUyNGZjNGNjZTgyZjM5
YmZmMTczMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMjYgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBMZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25z
dCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MzA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgTGV2ZXJhZ2UgdGhlIG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkg
Y29uc3RydWN0b3IgaW4gZXhpc3RpbmcgY29kZS4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0
cmluZy5jcHA6CisgICAgICAgIChhc2NpaURlYnVnKToKKwogMjAyMS0wNS0yNiAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSB0aW1pbmdzYWZlX2JjbXAoKSBp
biBXVEY6OmNvbnN0YW50VGltZU1lbWNtcCgpIHdoZW4gYXZhaWxhYmxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjczMzdjMDVhYThkNGYwODg3MWI3NjgyOGJkNzI1NGRmYTFlMDY2Mi4uMTJiY2RiYWJlZDhmYjY0
M2VjMmU1YzhhYzg5MjUyMjQzMDhlMTZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisy
MDIxLTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTGV2
ZXJhZ2UgdGhlIG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkgY29uc3RydWN0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjMwNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIExldmVyYWdlIHRoZSBuZXcg
VmVjdG9yKGNvbnN0IFQqLCBzaXplX3QpIGNvbnN0cnVjdG9yIGluIGV4aXN0aW5nIGNvZGUuCisK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
R2V0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZGF0YUZyb21C
dWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGls
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcDoKKyAg
ICAgICAgKGZpZG86OmRlY29kZVJlc3BvbnNlTWFwKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkSW5pdFBh
Y2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKGZpZG86OkZpZG9IaWRD
b250aW51YXRpb25QYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHA6CisgICAgICAgIChmaWRvOjpwaW46OmVuY29k
ZUNPU0VQdWJsaWNLZXkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNw
b25zZUNvbnZlcnRlci5jcHA6CisgICAgICAgIChmaWRvOjpXZWJDb3JlOjpleHRyYWN0RUNQdWJs
aWNLZXlGcm9tVTJmUmVnaXN0cmF0aW9uUmVzcG9uc2UpOgorICAgICAgICAoZmlkbzo6V2ViQ29y
ZTo6ZXh0cmFjdENyZWRlbnRpYWxJZEZyb21VMmZSZWdpc3RyYXRpb25SZXNwb25zZSk6CisgICAg
ICAgIChmaWRvOjpXZWJDb3JlOjpjcmVhdGVGaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnRGcm9tVTJm
UmVnaXN0ZXJSZXNwb25zZSk6CisgICAgICAgIChmaWRvOjpyZWFkVTJmU2lnblJlc3BvbnNlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgorICAgICAg
ICAqIGNyeXB0by9TdWJ0bGVDcnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9LZXlEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlUb1ZlY3Rvcik6CisgICAgICAgICogY3J5cHRvL2dj
cnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlF
Qzo6cGxhdGZvcm1BZGRGaWVsZEVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBjcnlwdG8vbWFj
L0NyeXB0b0tleUVDTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0
Zm9ybUltcG9ydFBrY3M4KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9L
ZXlXcmFwTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6dmVjdG9yRnJvbU5TRGF0YSk6CisgICAg
ICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU9wZW5TU0wuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3J5cHREZWNyeXB0KToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6QmxvYik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFj
a2luZ1N0b3JlOjpJbWFnZUJhY2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpkYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVj
dG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVByb3h5Q2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJveHlDbGVhcktleTo6
Y2VuY1NldERlY3J5cHRpb25LZXkpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlTW9jazo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6aXNvbGF0
ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmREYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHA6CisgICAg
ICAgIChPcGVuU1NMOjpCSU86OmdldERhdGFBc1ZlY3RvciBjb25zdCk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpkZXNlcmlh
bGl6ZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTA1LTI2
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBh
IFBBTCBzb2Z0bGlua2luZyBoZWFkZXIgZm9yIHRoZSBSZXZlYWwgZnJhbWV3b3JrCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwppbmRleCA2NjRiNDRhMDlkZmU0NDViMjJmZjA4NzA2NDkwNDUyODMxOTkxMGYyLi40
NGJiZjZmNWNlYjA3YWM4OTkwODIzOWQ2NWU4ZGExNzZjMmIxMzI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNvbnN0IFQqLCBzaXpl
X3QpIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjYzMDQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICBMZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3Rv
ciBpbiBleGlzdGluZyBjb2RlLgorCisgICAgICAgICogcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRv
RGlnZXN0R0NyeXB0LmNwcDoKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFz
aCk6CisKIDIwMjEtMDUtMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIGEgUEFMIHNvZnRsaW5raW5nIGhlYWRlciBmb3IgdGhlIFJldmVhbCBm
cmFtZXdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggYjE3YWEyY2IxNjVmNTM5YzY1MDU2NWRiZDVmMTIyNzI3ZGVm
ODY1OC4uOGQwMzY0OTk1YzE2ZmEyZTUyYzgyNjMwN2M0YjVkOGExZmRkNjg2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNCBAQAorMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNvbnN0IFQqLCBzaXplX3Qp
IGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjYzMDQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBMZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvciBp
biBleGlzdGluZyBjb2RlLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNl
Lmg6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAg
ICAgICAgKHZlY3RvckZyb21OU0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNldEljb25G
b3JQYWdlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1
YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29y
ZTo6Y29udmVydEJ5dGVzVG9WZWN0b3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3Jp
cHRGb3JFeHRlbnNpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9IaWRDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpyZXBvcnRSZWNlaXZlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw6
OnRvVmVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw6
OmFhZ3VpZFZlY3Rvcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL05mY0Nvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6Ok5mY0Nvbm5lY3Rpb246OnRy
YW5zYWN0IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YSk6CisKIDIw
MjEtMDUtMjYgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAg
ICBbQ01ha2VdIFN1cHBvcnQgVVNFX0FOR0xFX0VHTCBvbiBhZGRpdGlvbmFsIHBsYXRmb3Jtcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNw
cAppbmRleCAyODAxMGI4OGNiYmI2ODYyN2JjYzMzODgyYmI0MWQxNjU1OTgyMmE4Li4xZDIyNWM3
OGUwM2I4ZGE5OTQyZjMyMmJhODIzMDM3Y2UwMmY4YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcApAQCAtMTk3LDggKzE5Nyw3
IEBAIGF1dG8gU3RyZWFtaW5nUGFyc2VyOjpjb25zdW1lKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBz
aXplX3QgYnl0ZXNTaXplLCBzaXplX3QmIG9mCiAgICAgfQogCiAgICAgaWYgKG1fcmVtYWluaW5n
LnNpemUoKSA+IHJlcXVpcmVkU2l6ZSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0
KHJlcXVpcmVkU2l6ZSk7Ci0gICAgICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBtX3JlbWFpbmlu
Zy5kYXRhKCksIHJlcXVpcmVkU2l6ZSk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQg
eyBtX3JlbWFpbmluZy5kYXRhKCksIHJlcXVpcmVkU2l6ZSB9OwogICAgICAgICBtX3JlbWFpbmlu
Zy5yZW1vdmUoMCwgcmVxdWlyZWRTaXplKTsKICAgICAgICAgbV9uZXh0T2Zmc2V0ICs9IHJlcXVp
cmVkU2l6ZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL2NvY29hL1ZlY3RvckNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oCmluZGV4IDIyMTQxYTM2ZmQxZjYwMjUzMzg3MjQ4ODM1ZmEzMjA3YmMyMGY4YzcuLjY3Y2I2
OTVlOTExOTJhNjdhZThlMDJmODRlYmQwMzAzY2Q4Y2Q2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmgKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvVmVj
dG9yQ29jb2EuaApAQCAtMTA3LDcgKzEwNywxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXBGdW5j
dGlvblR5cGU+IFZlY3Rvcjx0eXBlbmFtZSBzdGQ6Omludm9rZV9yZXN1bHRfdDxNYXBGdW5jdAog
ICAgIHJldHVybiB2ZWN0b3I7CiB9CiAKK2lubGluZSBWZWN0b3I8dWludDhfdD4gdmVjdG9yRnJv
bU5TRGF0YShOU0RhdGEqIGRhdGEpCit7CisgICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH07Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmNyZWF0ZU5TQXJyYXk7CiB1c2luZyBXVEY6Om1ha2VW
ZWN0b3I7Cit1c2luZyBXVEY6OnZlY3RvckZyb21OU0RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5jcHAKaW5kZXggMjQ1N2NlZjZjNTNmYWFkZjc3NDBjOWM5NjE4N2JkYWFmYjQ5NDhjYS4uODZm
OTgzODBkYTA4NWVhMzJiZmJjMDAzNzAxMDY5NDI5OTJjM2ExNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmNwcApAQCAtOTAyLDkgKzkwMiw3IEBAIFZlY3RvcjxjaGFyPiBhc2NpaURlYnVnKFN0
cmluZ0ltcGwqIGltcGwpCiAgICAgICAgIH0KICAgICB9CiAgICAgQ1N0cmluZyBuYXJyb3dTdHJp
bmcgPSBidWZmZXIudG9TdHJpbmcoKS5hc2NpaSgpOwotICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7
Ci0gICAgcmVzdWx0LmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihuYXJyb3dT
dHJpbmcuZGF0YSgpKSwgbmFycm93U3RyaW5nLmxlbmd0aCgpICsgMSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihuYXJyb3dT
dHJpbmcuZGF0YSgpKSwgbmFycm93U3RyaW5nLmxlbmd0aCgpICsgMSB9OwogfQogCiBWZWN0b3I8
Y2hhcj4gYXNjaWlEZWJ1ZyhTdHJpbmcmIHN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVjZmRhYWQ3ZGJmYzEx
NWQ5MjdmYWY5YTRlODBhMzE2YzNmNTI2MS4uMTgxYmFiOWY2YjczNjk3ODhhZWY0NTEzYjUxMTVk
NTQ2YjdlZThlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAKQEAgLTQzLDkgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9iRnJvbURhdGEoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1
ZShsZW5ndGgpOwotICAgIG1lbWNweSh2YWx1ZS5kYXRhKCksIGRhdGEsIGxlbmd0aCk7Ci0gICAg
cmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBXVEZNb3ZlKHZhbHVlKSwgQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKSk7CisgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShj
b250ZXh0LCBWZWN0b3I8dWludDhfdD4geyBkYXRhLCBsZW5ndGggfSwgQmxvYjo6bm9ybWFsaXpl
ZENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKSk7CiB9CiAKIC8vIGh0dHBzOi8vbWltZXNuaWZmLnNw
ZWMud2hhdHdnLm9yZy8jaHR0cC1xdW90ZWQtc3RyaW5nLXRva2VuLWNvZGUtcG9pbnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCmluZGV4
IDJjNTlkZTBjY2UxN2QzMzU0NTkzMmJjYjM2NTViMGViM2U1NThlN2QuLmU4M2NkZDcwNmJhMjU5
ZThlZGU2N2VjMTA0NTIwYjE5NDY3YWNiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcApAQCAtMzQsMTAgKzM0LDcgQEAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKElEQkdldFJlc3VsdCk7CiAKIHZvaWQgSURCR2V0UmVzdWx0
OjpkYXRhRnJvbUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YShidWZmZXIuc2l6ZSgpKTsKLSAgICBtZW1jcHkoZGF0YS5kYXRhKCksIGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOwotCi0gICAgbV92YWx1ZSA9IFRocmVhZFNhZmVEYXRh
QnVmZmVyOjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgbV92YWx1ZSA9IFRocmVhZFNhZmVE
YXRhQnVmZmVyOjpjcmVhdGUoeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNpemUo
KSB9KTsKIH0KIAogSURCR2V0UmVzdWx0OjpJREJHZXRSZXN1bHQoY29uc3QgSURCR2V0UmVzdWx0
JiB0aGF0LCBJc29sYXRlZENvcHlUYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcAppbmRleCBiZTkyNjEy
ZDgxZDMxNzkwOTdjYmFiYjY1Y2EyMjBiMjkwYTAxNWRjLi4wNjhmZWY2MjVhOGUyODIxYjRiOGY0
ZDY4OTVjNTdmMDVjNTkwYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKQEAgLTM3LDkgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBWZWN0b3I8dWludDhfdD4gY29udmVydEJ5dGVzVG9W
ZWN0b3IoY29uc3QgdWludDhfdCBieXRlQXJyYXlbXSwgY29uc3Qgc2l6ZV90IGxlbmd0aCkKIHsK
LSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmQoYnl0ZUFycmF5
LCBsZW5ndGgpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHsgYnl0ZUFycmF5LCBs
ZW5ndGggfTsKIH0KIAogVmVjdG9yPHVpbnQ4X3Q+IHByb2R1Y2VScElkSGFzaChjb25zdCBTdHJp
bmcmIHJwSWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcAppbmRleCA4ZDM0YmU5M2Qx
YmU0ODEzYTdhOWIzODU1YmE0Y2ExZjA0Y2Y2ODg3Li44NGMxN2I3NzM2Yzg1ZDYxN2VlOTJmY2Zj
MmI2ODI5OTgzMDFkNTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAKQEAgLTU5
LDggKzU5LDcgQEAgT3B0aW9uYWw8Y2Jvcjo6Q0JPUlZhbHVlPiBkZWNvZGVSZXNwb25zZU1hcChj
b25zdCBWZWN0b3I8dWludDhfdD4mIGluQnVmZmVyKQogICAgIGlmIChpbkJ1ZmZlci5zaXplKCkg
PD0ga1Jlc3BvbnNlQ29kZUxlbmd0aCB8fCBnZXRSZXNwb25zZUNvZGUoaW5CdWZmZXIpICE9IEN0
YXBEZXZpY2VSZXNwb25zZUNvZGU6OmtTdWNjZXNzKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICBidWZmZXIuYXBwZW5kKGlu
QnVmZmVyLmRhdGEoKSArIDEsIGluQnVmZmVyLnNpemUoKSAtIDEpOworICAgIFZlY3Rvcjx1aW50
OF90PiBidWZmZXIgeyBpbkJ1ZmZlci5kYXRhKCkgKyAxLCBpbkJ1ZmZlci5zaXplKCkgLSAxIH07
CiAgICAgT3B0aW9uYWw8Q0JPUj4gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJlYWRlcjo6
cmVhZChidWZmZXIpOwogICAgIGlmICghZGVjb2RlZFJlc3BvbnNlIHx8ICFkZWNvZGVkUmVzcG9u
c2UtPmlzTWFwKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKaW5k
ZXggNTIzMjIwYTE2ZmJmZDM0MzllNTEwZTUyNzFiMTliZTY0Njc5OTZjZi4uYTJjYmEzMDliZmI2
MDVjMzNhZDhjN2MxMTMyNjY4N2U4ZjI3MmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcApAQCAtNjcsOSArNjcs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZEluaXRQYWNrZXQ+IEZpZG9IaWRJbml0UGFja2V0
OjpjcmVhdGVGcm9tU2VyaWFsaXplZERhdGEoYwogICAgIC8vIFVwZGF0ZSByZW1haW5pbmcgc2l6
ZSB0byBkZXRlcm1pbmUgdGhlIHBheWxvYWQgc2l6ZSBvZiBmb2xsb3cgb24gcGFja2V0cy4KICAg
ICAqcmVtYWluaW5nU2l6ZSA9IHBheWxvYWRTaXplIC0gZGF0YVNpemU7CiAKLSAgICBhdXRvIGRh
dGEgPSBWZWN0b3I8dWludDhfdD4oKTsKLSAgICBkYXRhLmFwcGVuZChzZXJpYWxpemVkLmJlZ2lu
KCkgKyBpbmRleCwgZGF0YVNpemUpOwotCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgeyBzZXJp
YWxpemVkLmJlZ2luKCkgKyBpbmRleCwgZGF0YVNpemUgfTsKICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxGaWRvSGlkSW5pdFBhY2tldD4oY2hhbm5lbElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBw
YXlsb2FkU2l6ZSk7CiB9CiAKQEAgLTEyMiw5ICsxMjAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlk
b0hpZENvbnRpbnVhdGlvblBhY2tldD4gRmlkb0hpZENvbnRpbnVhdGlvblBhY2tldDo6Y3JlYXRl
RnJvbQogICAgIC8vIENoZWNrIHRvIHNlZSBpZiBwYWNrZXQgcGF5bG9hZCBpcyBsZXNzIHRoYW4g
bWF4aW11bSBzaXplIGFuZCBwYWRkZWQgd2l0aCAwcy4KICAgICBzaXplX3QgZGF0YVNpemUgPSBz
dGQ6Om1pbigqcmVtYWluaW5nU2l6ZSwga0hpZFBhY2tldFNpemUgLSBpbmRleCk7CiAgICAgKnJl
bWFpbmluZ1NpemUgLT0gZGF0YVNpemU7Ci0gICAgYXV0byBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+
KCk7Ci0gICAgZGF0YS5hcHBlbmQoc2VyaWFsaXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFTaXpl
KTsKLQorICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsgc2VyaWFsaXplZC5iZWdpbigpICsgaW5k
ZXgsIGRhdGFTaXplIH07CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlv
blBhY2tldD4oY2hhbm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKaW5kZXggOTc5ZDQ3NDdi
OTNiNTUyZmRmNTIyMmM5MDk2OTQ5NjRhNTNjMTcwZS4uNTgzNzY1MGQzYmYyMGJhMGIyYjcwODhk
ZWQ5ZTAzMzZlOTAxNGNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9maWRvL1Bpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL1Bpbi5jcHAKQEAgLTE4MSwxMCArMTgxLDggQEAgT3B0aW9uYWw8S2V5QWdyZWVtZW50UmVz
cG9uc2U+IEtleUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZUZyb21DT1NFKGNvbnN0IENCT1JWYWwK
IGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgZW5jb2RlQ09TRVB1YmxpY0tleShjb25zdCBWZWN0
b3I8dWludDhfdD4mIHJhd1B1YmxpY0tleSkKIHsKICAgICBBU1NFUlQocmF3UHVibGljS2V5LnNp
emUoKSA9PSA2NSk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHg7Ci0gICAgeC5hcHBlbmQocmF3UHVi
bGljS2V5LmRhdGEoKSArIDEsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKTsKLSAgICBWZWN0b3I8
dWludDhfdD4geTsKLSAgICB5LmFwcGVuZChyYXdQdWJsaWNLZXkuZGF0YSgpICsgMSArIEVTMjU2
RmllbGRFbGVtZW50TGVuZ3RoLCBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCk7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHggeyByYXdQdWJsaWNLZXkuZGF0YSgpICsgMSwgRVMyNTZGaWVsZEVsZW1lbnRM
ZW5ndGggfTsKKyAgICBWZWN0b3I8dWludDhfdD4geSB7IHJhd1B1YmxpY0tleS5kYXRhKCkgKyAx
ICsgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoIH07CiAK
ICAgICBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIHB1YmxpY0tleU1hcDsKICAgICBwdWJsaWNL
ZXlNYXBbY2Jvcjo6Q0JPUlZhbHVlKENPU0U6Omt0eSldID0gY2Jvcjo6Q0JPUlZhbHVlKENPU0U6
OkVDMik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
VTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcAppbmRleCAyYjU0NmQxNzM3ODM2ZTVmNGM3
MzlmODIxNzNiMjE2ZDk4Yjc1YjExLi4xMzQ1NDFkMWVmNTk1NDI5ZjI1MTI4MjJmMTkzZDUxNTNk
NGQwYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
VTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKQEAgLTY0LDEzICs2NCwxMCBAQCBz
dGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RFQ1B1YmxpY0tleUZyb21VMmZSZWdpc3RyYXRp
b25SZXNwb25zZShjb25zdCBWZWN0bwogICAgIGlmICh1MmZEYXRhLnNpemUoKSA8IHBvcyArIDIg
KiBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFZl
Y3Rvcjx1aW50OF90PiB4OwotICAgIHguYXBwZW5kKHUyZkRhdGEuZGF0YSgpICsgcG9zLCBFUzI1
NkZpZWxkRWxlbWVudExlbmd0aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHggeyB1MmZEYXRhLmRh
dGEoKSArIHBvcywgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGggfTsKICAgICBwb3MgKz0gRVMyNTZG
aWVsZEVsZW1lbnRMZW5ndGg7CiAKLSAgICBWZWN0b3I8dWludDhfdD4geTsKLSAgICB5LmFwcGVu
ZCh1MmZEYXRhLmRhdGEoKSArIHBvcywgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpOwotCisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHkgeyB1MmZEYXRhLmRhdGEoKSArIHBvcywgRVMyNTZGaWVsZEVsZW1l
bnRMZW5ndGggfTsKICAgICByZXR1cm4gZW5jb2RlRVMyNTZQdWJsaWNLZXlBc0NCT1IoV1RGTW92
ZSh4KSwgV1RGTW92ZSh5KSk7CiB9CiAKQEAgLTg0LDkgKzgxLDcgQEAgc3RhdGljIFZlY3Rvcjx1
aW50OF90PiBleHRyYWN0Q3JlZGVudGlhbElkRnJvbVUyZlJlZ2lzdHJhdGlvblJlc3BvbnNlKGNv
bnN0IFZlY3QKIAogICAgIGlmICh1MmZEYXRhLnNpemUoKSA8IHBvcyArIGNyZWRlbnRpYWxJZExl
bmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICBWZWN0b3I8dWludDhfdD4gY3JlZGVudGlh
bElkOwotICAgIGNyZWRlbnRpYWxJZC5hcHBlbmQodTJmRGF0YS5kYXRhKCkgKyBwb3MsIGNyZWRl
bnRpYWxJZExlbmd0aCk7Ci0gICAgcmV0dXJuIGNyZWRlbnRpYWxJZDsKKyAgICByZXR1cm4geyB1
MmZEYXRhLmRhdGEoKSArIHBvcywgY3JlZGVudGlhbElkTGVuZ3RoIH07CiB9CiAKIHN0YXRpYyBW
ZWN0b3I8dWludDhfdD4gY3JlYXRlQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YUZyb21VMmZSZWdpc3Rl
clJlc3BvbnNlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBwdWJsaWNLZXkpCkBAIC0xMjQsMTIgKzExOSwxMCBAQCBzdGF0aWMgY2Jvcjo6Q0JP
UlZhbHVlOjpNYXBWYWx1ZSBjcmVhdGVGaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnRGcm9tVTJmUmVn
aXN0ZXJSZQogICAgIGlmICgheDUwOUxlbmd0aCB8fCB1MmZEYXRhLnNpemUoKSA8IG9mZnNldCAr
IHg1MDlMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBWZWN0b3I8dWludDhfdD4g
eDUwOTsKLSAgICB4NTA5LmFwcGVuZCh1MmZEYXRhLmRhdGEoKSArIG9mZnNldCwgeDUwOUxlbmd0
aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHg1MDkgeyB1MmZEYXRhLmRhdGEoKSArIG9mZnNldCwg
eDUwOUxlbmd0aCB9OwogICAgIG9mZnNldCArPSB4NTA5TGVuZ3RoOwogCi0gICAgVmVjdG9yPHVp
bnQ4X3Q+IHNpZ25hdHVyZTsKLSAgICBzaWduYXR1cmUuYXBwZW5kKHUyZkRhdGEuZGF0YSgpICsg
b2Zmc2V0LCB1MmZEYXRhLnNpemUoKSAtIG9mZnNldCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNp
Z25hdHVyZSB7IHUyZkRhdGEuZGF0YSgpICsgb2Zmc2V0LCB1MmZEYXRhLnNpemUoKSAtIG9mZnNl
dCB9OwogICAgIGlmIChzaWduYXR1cmUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9Owog
CkBAIC0xODQsOSArMTc3LDcgQEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGMKICAgICBhdXRvIGF1
dGhEYXRhID0gYnVpbGRBdXRoRGF0YShycElkLCBmbGFncywgY291bnRlciwgeyB9KTsKIAogICAg
IC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIHJlbW92ZSB0aGUgbmVlZCBvZiBjb25zdHJ1Y3Rpbmcg
YSB2ZWN0b3IgaGVyZS4KLSAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlOwotICAgIHNpZ25h
dHVyZS5hcHBlbmQodTJmRGF0YS5kYXRhKCkgKyBzaWduYXR1cmVJbmRleCwgdTJmRGF0YS5zaXpl
KCkgLSBzaWduYXR1cmVJbmRleCk7Ci0KKyAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlIHsg
dTJmRGF0YS5kYXRhKCkgKyBzaWduYXR1cmVJbmRleCwgdTJmRGF0YS5zaXplKCkgLSBzaWduYXR1
cmVJbmRleCB9OwogICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNy
ZWF0ZShrZXlIYW5kbGUsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHsgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cAppbmRleCBhZmQ3NDBhMWVjMTBhNjQ0ZGU1NzZiZTRmYTg0NDQ4ZjcyNTdkMzI3Li5lNWUyN2Q0
ZjQ1ZjU3MmNkZDYzNjRlNDE0YmJhMzk4ZjlmNDU0NmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC03MjAs
OSArNzIwLDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUoV2ViU29j
a2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIKICAgICBhdXRvIGZyYW1lID0gbWFr
ZVVuaXF1ZTxRdWV1ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gb3BDb2RlOwogICAg
IGZyYW1lLT5mcmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVWZWN0b3I7Ci0gICAgZnJhbWUtPnZl
Y3RvckRhdGEucmVzaXplKGRhdGFMZW5ndGgpOwotICAgIGlmIChkYXRhTGVuZ3RoKQotICAgICAg
ICBtZW1jcHkoZnJhbWUtPnZlY3RvckRhdGEuZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAg
ICBmcmFtZS0+dmVjdG9yRGF0YSA9IHsgZGF0YSwgZGF0YUxlbmd0aCB9OwogICAgIG1fb3V0Z29p
bmdGcmFtZVF1ZXVlLmFwcGVuZChXVEZNb3ZlKGZyYW1lKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlw
dC5jcHAKaW5kZXggZDI4NTY2YjkxMzM4YmQ4ZDYzOTIzMWU1ODY3ZGI4N2YyM2ViNGE5Mi4uZDdk
MDIzZjFjYmQ3MjNmMDRhN2NjMjg1ZDcxY2Q3OGIzMGJmY2U0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlw
dC5jcHAKQEAgLTgyLDExICs4MiwxMCBAQCB2b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29u
c3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCiAKIFZlY3Rvcjx1aW50OF90PiBDcnlwdG9E
aWdlc3Q6OmNvbXB1dGVIYXNoKCkKIHsKLSAgICBpbnQgZGlnZXN0TGVuID0gZ2NyeV9tZF9nZXRf
YWxnb19kbGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVz
dWx0KGRpZ2VzdExlbik7CisgICAgc2l6ZV90IGRpZ2VzdExlbiA9IGdjcnlfbWRfZ2V0X2FsZ29f
ZGxlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7CiAKICAgICBnY3J5X21kX2ZpbmFsKG1fY29udGV4
dC0+bWQpOwotICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBnY3J5X21kX3JlYWQobV9jb250ZXh0
LT5tZCwgMCksIGRpZ2VzdExlbik7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdCB7IGdjcnlf
bWRfcmVhZChtX2NvbnRleHQtPm1kLCAwKSwgZGlnZXN0TGVuIH07CiAgICAgZ2NyeV9tZF9jbG9z
ZShtX2NvbnRleHQtPm1kKTsKIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9TdWJ0bGVDcnlwdG8uY3BwCmluZGV4IGI1NDkxOTFhN2RmMGIzZTI3MTVhN2MwMjAzY2ZkNjk2
ZDExMGYwNDcuLjhlMWU5MmRlZjhlODdmNTk0NWRjNDIyMzgzYzg5ZjFhMDg2NTg1MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCkBAIC00NTgsOSArNDU4LDcgQEAgc3Rh
dGljIE9wdGlvbmFsPEtleURhdGE+IHRvS2V5RGF0YShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBm
b3JtYXQsIFN1YnRsZUNyeXB0bzoKICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIFtdIChhdXRvJiBidWZmZXJTb3VyY2UpIC0+
IE9wdGlvbmFsPEtleURhdGE+IHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVz
dWx0OwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGJ1ZmZlclNvdXJjZS0+ZGF0YSgpKSwgYnVmZmVyU291cmNlLT5ieXRlTGVuZ3RoKCkp
OwotICAgICAgICAgICAgICAgIHJldHVybiBLZXlEYXRhIHsgcmVzdWx0IH07CisgICAgICAgICAg
ICAgICAgcmV0dXJuIEtleURhdGEgeyBWZWN0b3I8dWludDhfdD4geyBzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oYnVmZmVyU291cmNlLT5kYXRhKCkpLCBidWZmZXJTb3VyY2UtPmJ5dGVMZW5n
dGgoKSB9IH07CiAgICAgICAgICAgICB9CiAgICAgICAgICk7CiAgICAgY2FzZSBTdWJ0bGVDcnlw
dG86OktleUZvcm1hdDo6SndrOgpAQCAtNDgxLDkgKzQ3OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxL
ZXlEYXRhPiB0b0tleURhdGEoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBTdWJ0bGVD
cnlwdG86CiAKIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29weVRvVmVjdG9yKEJ1ZmZlclNvdXJj
ZSYmIGRhdGEpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFWZWN0b3I7Ci0gICAgZGF0YVZl
Y3Rvci5hcHBlbmQoZGF0YS5kYXRhKCksIGRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBkYXRh
VmVjdG9yOworICAgIHJldHVybiB7IGRhdGEuZGF0YSgpLCBkYXRhLmxlbmd0aCgpIH07CiB9CiAK
IHN0YXRpYyBib29sIGlzU3VwcG9ydGVkRXhwb3J0S2V5KENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgaWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvS2V5RUNHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9LZXlFQ0dDcnlwdC5jcHAKaW5kZXggOTY2ODc1MGMwNDA2ZTc4MjBjN2Q3OTU5NGQ5NDhkOGQy
YmMyZDg3My4uNmFkNDAzZjQ1NThhYzg2ODRhODYwNGUwNWZjNDRjN2RlZWJmODQ4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAK
QEAgLTUyMSwxMyArNTIxLDggQEAgYm9vbCBDcnlwdG9LZXlFQzo6cGxhdGZvcm1BZGRGaWVsZEVs
ZW1lbnRzKEpzb25XZWJLZXkmIGp3aykgY29uc3QKICAgICBpZiAocU1QSSkgewogICAgICAgICBh
dXRvIHEgPSBtcGlEYXRhKHFNUEkpOwogICAgICAgICBpZiAocSAmJiBxLT5zaXplKCkgPT0gY3Vy
dmVVbmNvbXByZXNzZWRQb2ludFNpemUobV9jdXJ2ZSkpIHsKLSAgICAgICAgICAgIFZlY3Rvcjx1
aW50OF90PiBhOwotICAgICAgICAgICAgYS5hcHBlbmQocS0+ZGF0YSgpICsgMSwgdW5jb21wcmVz
c2VkRmllbGRFbGVtZW50U2l6ZSk7Ci0gICAgICAgICAgICBqd2sueCA9IGJhc2U2NFVSTEVuY29k
ZVRvU3RyaW5nKGEpOwotCi0gICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYjsKLSAgICAgICAg
ICAgIGIuYXBwZW5kKHEtPmRhdGEoKSArIDEgKyB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXpl
LCB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplKTsKLSAgICAgICAgICAgIGp3ay55ID0gYmFz
ZTY0VVJMRW5jb2RlVG9TdHJpbmcoYik7CisgICAgICAgICAgICBqd2sueCA9IGJhc2U2NFVSTEVu
Y29kZVRvU3RyaW5nKFZlY3Rvcjx1aW50OF90PiB7IHEtPmRhdGEoKSArIDEsIHVuY29tcHJlc3Nl
ZEZpZWxkRWxlbWVudFNpemUgfSk7CisgICAgICAgICAgICBqd2sueSA9IGJhc2U2NFVSTEVuY29k
ZVRvU3RyaW5nKFZlY3Rvcjx1aW50OF90PiB7IHEtPmRhdGEoKSArIDEgKyB1bmNvbXByZXNzZWRG
aWVsZEVsZW1lbnRTaXplLCB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplIH0pOwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0tleUVDTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMu
Y3BwCmluZGV4IDU0MGYzM2JjYmU0MmFhOWFmNGI3ZmVmOWRjMDBlMjlmNzBhMTZjNjAuLmY0N2Ux
ZDhhNzM3MGIyNjU2ZjA5OGMxNTNlYzUxZDQ0OGFlYWNlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwCkBAIC0zNTQsOCArMzU0LDcgQEAgUmVmUHRy
PENyeXB0b0tleUVDPiBDcnlwdG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRQa2NzOChDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyIGkKICAgICBpbmRleCArPSBieXRlc1VzZWRUb0VuY29kZWRMZW5ndGgo
a2V5RGF0YVtpbmRleF0pICsgMTsgLy8gUmVhZCBsZW5ndGgsIEluaXRpYWxPY3RldAogCiAgICAg
Ly8gS2V5QmluYXJ5ID0gdW5jb21wcmVzc2VkIHBvaW50ICsgcHJpdmF0ZSBrZXkKLSAgICBWZWN0
b3I8dWludDhfdD4ga2V5QmluYXJ5OwotICAgIGtleUJpbmFyeS5hcHBlbmQoa2V5RGF0YS5kYXRh
KCkgKyBpbmRleCwga2V5RGF0YS5zaXplKCkgLSBpbmRleCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IGtleUJpbmFyeSB7IGtleURhdGEuZGF0YSgpICsgaW5kZXgsIGtleURhdGEuc2l6ZSgpIC0gaW5k
ZXggfTsKICAgICBpZiAoIWRvZXNVbmNvbXByZXNzZWRQb2ludE1hdGNoTmFtZWRDdXJ2ZShjdXJ2
ZSwga2V5QmluYXJ5LnNpemUoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGtleUJp
bmFyeS5hcHBlbmQoa2V5RGF0YS5kYXRhKCkgKyBwcml2YXRlS2V5UG9zLCBnZXRLZXlTaXplRnJv
bU5hbWVkQ3VydmUoY3VydmUpIC8gOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQppbmRleCA1NzFkYTQ3YWEyNDM3
Y2JmZDY3MzY5NTc0OTg4YTNjMWFhYTE2ODJkLi5hN2YwOGZkMTc3NDMzZmYyYmY2NTQwN2ZjZGRh
MjY4MjNkY2U0ZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL1Nlcmlh
bGl6ZWRDcnlwdG9LZXlXcmFwTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
U2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQg
PHd0Zi9PcHRpb25hbC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgog
I2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQv
QmFzZTY0Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC02MiwxMyArNjMsNiBA
QCBjb25zdCBOU1N0cmluZyogdGFnS2V5ID0gQCJ0YWciOwogCiBjb25zdCBzaXplX3QgbWFzdGVy
S2V5U2l6ZUluQnl0ZXMgPSAxNjsKIAotaW5saW5lIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3JGcm9t
TlNEYXRhKE5TRGF0YSogZGF0YSkKLXsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAg
IHJlc3VsdC5hcHBlbmQoKGNvbnN0IHVpbnQ4X3QqKVtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3Ro
XSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogc3RhdGljIE5TU3RyaW5nKiBtYXN0ZXJLZXlB
Y2NvdW50TmFtZUZvckN1cnJlbnRBcHBsaWNhdGlvbigpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0Fs
Z29yaXRobUFFU19HQ01PcGVuU1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3Ns
L0NyeXB0b0FsZ29yaXRobUFFU19HQ01PcGVuU1NMLmNwcAppbmRleCA0YzJkYjMxZGQyZTI4Y2Jh
MGI3MThmMjlhYjQzYTQyNGYzZjI2Zjk4Li4yNzJhNjI0MzM5ZWE0NjQ1NWQ1NzVjYTA4ZGRhY2Y3
ZWVlYmI3NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9Dcnlw
dG9BbGdvcml0aG1BRVNfR0NNT3BlblNTTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU9wZW5TU0wuY3BwCkBAIC0xMTUsOCArMTE1
LDcgQEAgc3RhdGljIE9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHREZWNyeXB0KGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYga2V5LCBjb25zdAogICAgIGludCBjaXBoZXJUZXh0TGVuID0gY2lw
aGVyVGV4dC5zaXplKCkgLSB0YWdMZW5ndGg7CiAKICAgICBWZWN0b3I8dWludDhfdD4gcGxhaW5U
ZXh0KGNpcGhlclRleHQuc2l6ZSgpKTsKLSAgICBWZWN0b3I8dWludDhfdD4gdGFnKHRhZ0xlbmd0
aCk7Ci0gICAgbWVtY3B5KHRhZy5kYXRhKCksIGNpcGhlclRleHQuZGF0YSgpICsgY2lwaGVyVGV4
dExlbiwgdGFnTGVuZ3RoKTsKKyAgICBWZWN0b3I8dWludDhfdD4gdGFnIHsgY2lwaGVyVGV4dC5k
YXRhKCkgKyBjaXBoZXJUZXh0TGVuLCB0YWdMZW5ndGggfTsKIAogICAgIC8vIENyZWF0ZSBhbmQg
aW5pdGlhbGl6ZSB0aGUgY29udGV4dAogICAgIGlmICghKGN0eCA9IEV2cENpcGhlckN0eFB0cihF
VlBfQ0lQSEVSX0NUWF9uZXcoKSkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggODE2ZmVk
OTRlMTRkYzE3YzFlM2NjMzc5OTI0NzdmZTVmZGIxYWVkYS4uMmM4NWI2Zjc2M2FiMzQyODdlZmEy
NDBjYWU3MzFlM2Y5MDViODcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9C
bG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC0xMTMsMTEg
KzExMyw4IEBAIEJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0CiAgICAgLCBtX3R5cGUoY29udGVudFR5
cGUpCiAgICAgLCBtX3NpemUoYnVmZmVyLnNpemUoKSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4g
ZGF0YTsKLSAgICBkYXRhLmFwcGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLQog
ICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwotICAgIGJsb2JQYXJ0cy5hcHBlbmQoQmxv
YlBhcnQoV1RGTW92ZShkYXRhKSkpOworICAgIGJsb2JQYXJ0cy5hcHBlbmQoVmVjdG9yPHVpbnQ4
X3Q+IHsgYnVmZmVyLmRhdGFBc1VJbnQ4UHRyKCksIGJ1ZmZlci5zaXplKCkgfSk7CiAgICAgbV9p
bnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0ZUludGVybmFsVVJMKCk7CiAgICAgVGhyZWFkYWJs
ZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxv
YlBhcnRzKSwgY29udGVudFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKaW5kZXggN2FiZGQzNDM4MDQ5MDZhZmRk
YTFjNjZiMTNmYjY0MmZhNGM0ZGQwYy4uMGM0NDEzMjUwZThkZTY5NDM3OWNmZjBkZWQwZGRjOTI3
ZmViMzk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJhY2tpbmdTdG9yZS5oCkBAIC0yMDUsOCArMjA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
LCBtX3ByZW11bHRpcGx5QWxwaGEob3RoZXIubV9wcmVtdWx0aXBseUFscGhhKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKCFtX3NpemUuaXNFbXB0eSgpICYmICFpc092ZXJTaXplKG1fc2l6ZSkpOwot
ICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyOwotICAgICAgICBidWZmZXIuYXBwZW5kKG90aGVy
Lm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkpOworICAgICAgICBWZWN0
b3I8Y2hhcj4gYnVmZmVyIHsgb3RoZXIubV9waXhlbHMtPmRhdGEoKSwgb3RoZXIubV9waXhlbHMt
PnNpemUoKSB9OwogICAgICAgICBtX3BpeGVscyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwogICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9jYXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmNwcAppbmRleCBkNzk3
Mjg1NTViN2RiOWI1OWNiNjE1YzU1YTdhN2E2ODUxY2I1N2M4Li41YTRkM2E1MDg1OWE1ZTg0NGM3
ZjQyNDEzMDY5MTcxNDgwMmIwMWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0Nh
aXJvLmNwcApAQCAtMTIzLDkgKzEyMyw3IEBAIFZlY3Rvcjx1aW50OF90PiBkYXRhKGNhaXJvX3N1
cmZhY2VfdCogaW1hZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvCiAgICAg
aWYgKCFlbmNvZGVJbWFnZShpbWFnZSwgbWltZVR5cGUsIHF1YWxpdHksIGJ1ZmZlciwgYnVmZmVy
U2l6ZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBWZWN0b3I8dWludDhfdD4gaW1hZ2VE
YXRhOwotICAgIGltYWdlRGF0YS5hcHBlbmQoYnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKLSAg
ICByZXR1cm4gaW1hZ2VEYXRhOworICAgIHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGJ1ZmZlci5nZXQoKSksIGJ1ZmZlclNpemUgfTsKIH0KICNlbmRpZiAvLyAhUExB
VEZPUk0oR1RLKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGM5YmUyNzg4OWU0
ZDJlNTMxMmIzZWM5M2EzMGY0YTdjOGU3NjkzOTMuLjUwNWY4NDVjOWJiZmIyZWM5MGQ1YWRmMWVj
NDAzNTRjZDUxZGFhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC00MTksOSAr
NDE5LDcgQEAgdm9pZCBjb25uZWN0U2ltcGxlQnVzTWVzc2FnZUNhbGxiYWNrKEdzdEVsZW1lbnQq
IHBpcGVsaW5lKQogCiBWZWN0b3I8dWludDhfdD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0
b3IoKSBjb25zdAogewotICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7Ci0gICAgdmVjdG9yLmFw
cGVuZChkYXRhKCksIHNpemUoKSk7Ci0gICAgcmV0dXJuIHZlY3RvcjsKKyAgICByZXR1cm4geyBk
YXRhKCksIHNpemUoKSB9OwogfQogCiBSZWY8U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1
ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJL
ZXkuY3BwCmluZGV4IGJlMTU0MjU1ZjNkNzY4MzE1ZTM1Njg3NjkwNDc2ZjdmOGFlM2JiZjIuLmNm
ODIwZDE2NWIzZDBkMGU1YjhkMDU4YTU2MmIzNDkxNDEzODgyMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktl
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9DRE1Qcm94eUNsZWFyS2V5LmNwcApAQCAtMTE4LDggKzExOCw3IEBAIGJvb2wgQ0RNUHJveHlD
bGVhcktleTo6Y2VuY1NldERlY3J5cHRpb25LZXkoY2VuY0RlY3J5cHRDb250ZXh0JiBpbikKICAg
ICAvLyBGSVhNRTogVW5uZWNlc3NhcnkgY29weSwgY2FuIHdlIGF2b2lkIHRoaXMgd2hpbGUgc3Rp
bGwgZXhwb3NpbmcKICAgICAvLyBhIG5vbi1HU3RyZWFtZXItc3BlY2lmaWMgRGVjcnlwdElucHV0
IEFQST8gVGhlc2UgYnVmZmVycyBhcmUKICAgICAvLyBzbWFsbCAoMTYgYnl0ZXMpLCBzbyBub3Qg
YSBodWdlIGRlYWwsIEkgZ3Vlc3MuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGtleUlEVmVjOwotICAg
IGtleUlEVmVjLmFwcGVuZChpbi5rZXlJRCwgaW4ua2V5SURTaXplSW5CeXRlcyk7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IGtleUlEVmVjIHsgaW4ua2V5SUQsIGluLmtleUlEU2l6ZUluQnl0ZXMgfTsK
IAogICAgIGF1dG8ga2V5RGF0YSA9IGdldE9yV2FpdEZvcktleVZhbHVlKGtleUlEVmVjLCBXVEZN
b3ZlKGluLmNkbVByb3h5RGVjcnlwdGlvbkNsaWVudCkpOwogICAgIGlmICgha2V5RGF0YSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAppbmRleCA3YTBlYmUzOGYyYTIwOTIzMTc5
ODVmODQxODc5Y2FhYTg5NzJlNzRhLi5mODIxNWMwZTBlYzkwODkyYmVhYjU5OGMxYzMxMGE2NDYz
NTFiNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCkBAIC05Niw4ICs5
Niw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpmZXRjaERhdGEoRmV0Y2hEYXRh
Q2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2NrIH07Ci0g
ICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZShtX2J1ZmZlci5sZW5ndGgoKSk7Ci0gICAgICAg
IG1lbWNweSh2YWx1ZS5kYXRhKCksIG1fYnVmZmVyLmNoYXJhY3RlcnM4KCksIG1fYnVmZmVyLmxl
bmd0aCgpKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVlIHsgbV9idWZmZXIuY2hhcmFj
dGVyczgoKSwgbV9idWZmZXIubGVuZ3RoKCkgfTsKICAgICAgICAgbV9idWZmZXIuY2xlYXIoKTsK
ICAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5k
ZXggNjFjZDM4ZjY3YjFjOGViYTA2ODQ2N2Q0ZDZjNzEyNjRiZjI5YWJkMy4uNjVjNTUwOGIzNWRk
NDIyMTIyYzM2ZTI4MWZlMDc1NDRjNDU0MjZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAgLTE2NSw5ICsxNjUsNyBAQCBGb3JtRGF0YUVsZW1l
bnQgRm9ybURhdGFFbGVtZW50Ojppc29sYXRlZENvcHkoKSBjb25zdAogewogICAgIHJldHVybiBz
d2l0Y2hPbihkYXRhLAogICAgICAgICBbXSAoY29uc3QgVmVjdG9yPGNoYXI+JiBieXRlcykgewot
ICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGNvcHk7Ci0gICAgICAgICAgICBjb3B5LmFwcGVuZChi
eXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7Ci0gICAgICAgICAgICByZXR1cm4gRm9ybURhdGFF
bGVtZW50KFdURk1vdmUoY29weSkpOworICAgICAgICAgICAgcmV0dXJuIEZvcm1EYXRhRWxlbWVu
dChWZWN0b3I8Y2hhcj4geyBieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSB9KTsKICAgICAgICAg
fSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkg
ewogICAgICAgICAgICAgcmV0dXJuIEZvcm1EYXRhRWxlbWVudChmaWxlRGF0YS5pc29sYXRlZENv
cHkoKSk7CiAgICAgICAgIH0sIFtdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9i
RGF0YSYgYmxvYkRhdGEpIHsKQEAgLTE4NSw5ICsxODMsNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBl
bmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQotICAgIFZlY3RvcjxjaGFyPiB2ZWN0b3I7Ci0gICAgdmVjdG9y
LmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgc2l6ZSk7Ci0gICAg
bV9lbGVtZW50cy5hcHBlbmQoV1RGTW92ZSh2ZWN0b3IpKTsKKyAgICBtX2VsZW1lbnRzLmFwcGVu
ZChWZWN0b3I8Y2hhcj4geyByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgc2l6
ZSB9KTsKIH0KIAogdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVu
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09w
ZW5TU0xIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09w
ZW5TU0xIZWxwZXIuY3BwCmluZGV4IGE2MzJhMWMwZTEwMmJiNDI3NmU0MTM0OGUwMTg3MjhjNzdl
YjI5MzEuLjkyNmVjNDQ3OTZkNjcyZjZkOTFmY2NlYzE3MGNjNTllMGU3Yjg0MjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBl
ci5jcHAKQEAgLTExNiw5ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChsZW5ndGggPCAw
KQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gcmVzdWx0OwotICAgICAgICByZXN1bHQuYXBwZW5kKGRhdGEsIGxlbmd0aCk7Ci0gICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBWZWN0b3I8dWludDhfdD4geyBkYXRh
LCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgfTsKICAgICB9CiAKICAgICBTdHJpbmcgZ2V0
RGF0YUFzU3RyaW5nKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRl
eCBhYTE0MWQ4ZWY3NTJiODQ2NmY1ZDdlMTEwZmUyODZiOTE0MTJiZmY4Li44Y2YwMmIxNzllYmZi
ZGQzNzdhNmE1NDhkMGM2YTdhZjY5MTc3Zjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCkBAIC0zNzQ5LDggKzM3NDksNyBAQCBSZWY8QXJyYXlCdWZmZXI+IEludGVybmFsczo6
c2VyaWFsaXplT2JqZWN0KGNvbnN0IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JgogCiBS
ZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJbnRlcm5hbHM6OmRlc2VyaWFsaXplQnVmZmVyKEFy
cmF5QnVmZmVyJiBidWZmZXIpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ5dGVzOwot
ICAgIGJ5dGVzLmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLmRhdGEo
KSksIGJ1ZmZlci5ieXRlTGVuZ3RoKCkpOworICAgIFZlY3Rvcjx1aW50OF90PiBieXRlcyB7IHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVyLmJ5dGVMZW5n
dGgoKSB9OwogICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUo
Ynl0ZXMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDMyNDg0NTU0Y2Y5ZDQ3M2VhMmU5NzFkMWUx
ZWE5ZGYxYmMzODAxMjkuLjExNWFiYjFiYmU0MmI5OGI5ZTQwYjdiMTM3YWVkNDZjNGYzZjdkMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJM
aWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAKQEAgLTQ5MCwxMCArNDkwLDcgQEAgc3RhdGljIHZvaWQqIG9wZW5GdW5j
KGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgfQogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBi
dWZmZXI7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIGJ1ZmZlci5hcHBlbmQoZGF0YS0+ZGF0YSgp
LCBkYXRhLT5zaXplKCkpOwotICAgIHJldHVybiBuZXcgT2Zmc2V0QnVmZmVyKFdURk1vdmUoYnVm
ZmVyKSk7CisgICAgcmV0dXJuIG5ldyBPZmZzZXRCdWZmZXIoeyBkYXRhLT5kYXRhKCksIGRhdGEt
PnNpemUoKSB9KTsKIH0KIAogc3RhdGljIGludCByZWFkRnVuYyh2b2lkKiBjb250ZXh0LCBjaGFy
KiBidWZmZXIsIGludCBsZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9BcnJheVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZl
cmVuY2UuaAppbmRleCAzNDY3YmRmZGI2YTFjNmVkNDM0MTI1MWJmODhmMDYyMTZkMTg2NjczLi4x
ODFkNGRlNTI2ZjlhNzRkMzY2ZmQ4Y2JlNWFhMzVhM2NiYWMwNmQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKQEAgLTEwNywxMCArMTA3LDcgQEAgcHVi
bGljOgogCiAgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CiAgICAgewotICAgICAgICBWZWN0
b3I8VD4gcmVzdWx0OwotICAgICAgICBpZiAoIWlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQobV9kYXRhLCBFeHRlbnQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAg
ICByZXR1cm4geyBtX2RhdGEsIEV4dGVudCB9OwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwubW0KaW5kZXggN2E3N2MwYWJjN2Y4MmIyNDA3OGNjYzExYzU0NGQ1NWMz
YTE2ZTllYi4uMGJhNjEzODBlMWM4ZmRjNzMyZWMyYzI2YmJiNjc1NGQ5YzgxNjhjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTUxLDYgKzUxLDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVP
YmpDRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQg
PHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTI5MywxMiArMjk0LDYgQEAgLSAodm9pZCljYW5j
ZWwKIH0KIAogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi1zdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IHZl
Y3RvckZyb21OU0RhdGEoTlNEYXRhKiBkYXRhKQotewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1
bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZCgoY29uc3QgdWludDhfdCopZGF0YS5ieXRlcywgZGF0YS5s
ZW5ndGgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19CiAKIHN0YXRpYyBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpScEVudGl0eSBwdWJsaWNLZXlDcmVkZW50aWFs
UnBFbnRpdHkoX1dLUHVibGljS2V5Q3JlZGVudGlhbFJlbHlpbmdQYXJ0eUVudGl0eSAqcnBFbnRp
dHkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29u
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFi
YXNlLmNwcAppbmRleCAzNmFmMTNlNzU5ZmEwNTMzZmRhYzhmYjUzYWJhZjM1MGUzOGIyM2QwLi4z
YWI4MzNjOGUwN2NmZmZiZDU4NzM0MDczYWFjNzgxYzcwY2JlYWMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAKQEAgLTYzOCw5ICs2
MzgsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
JiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFyKgogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KGljb25EYXRhU2l6ZSk7Ci0gICAgZGF0YS5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBj
aGFyKj4oaWNvbkRhdGEpLCBpY29uRGF0YVNpemUpOworICAgIFZlY3RvcjxjaGFyPiBkYXRhIHsg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaWNvbkRhdGEpLCBpY29uRGF0YVNpemUgfTsK
ICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgaWNvblVSTCA9IGljb25VUkwuaXNvbGF0ZWRDb3B5KCksIGljb25EYXRhID0gV1RG
TW92ZShkYXRhKSwgcGFnZVVSTCA9IHBhZ2VVUkwuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgIGlmIChtX2RiLmlzT3BlbigpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3Vi
RnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQpp
bmRleCAyNjU4OThjZmQ4ZjViN2Y3MDczM2RjNTE4ODhiNTYwOGQ4YjM3YmM3Li4yMDEzNWFkODg2
NDY3OWE2MzAyMzBiMDJlOTYxYmRkZWRlMmEwNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25T
ZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXph
dGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KQEAgLTQzLDEzICs0Myw2IEBA
IG5hbWVzcGFjZSB7CiBjb25zdCBjaGFyKiBzb0F1dGhvcml6YXRpb25Qb3N0RGlkU3RhcnRNZXNz
YWdlVG9QYXJlbnQgPSAiPHNjcmlwdD5wYXJlbnQucG9zdE1lc3NhZ2UoJ1NPQXV0aG9yaXphdGlv
bkRpZFN0YXJ0JywgJyonKTs8L3NjcmlwdD4iOwogY29uc3QgY2hhciogc29BdXRob3JpemF0aW9u
UG9zdERpZENhbmNlbE1lc3NhZ2VUb1BhcmVudCA9ICI8c2NyaXB0PnBhcmVudC5wb3N0TWVzc2Fn
ZSgnU09BdXRob3JpemF0aW9uRGlkQ2FuY2VsJywgJyonKTs8L3NjcmlwdD4iOwogCi1zdGF0aWMg
aW5saW5lIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcihjb25zdCB1aW50OF90
IGJ5dGVBcnJheVtdLCBjb25zdCBzaXplX3QgbGVuZ3RoKQotewotICAgIFZlY3Rvcjx1aW50OF90
PiByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZChieXRlQXJyYXksIGxlbmd0aCk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQogfSAvLyBuYW1lc3BhY2UKIAogUmVmPFNPQXV0aG9yaXphdGlvblNl
c3Npb24+IFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y3JlYXRlKFNPQXV0aG9yaXph
dGlvbiAqc29BdXRob3JpemF0aW9uLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmln
YXRpb25BY3Rpb24sIFdlYlBhZ2VQcm94eSYgcGFnZSwgQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFu
ZGxlciwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQpCkBAIC03Nyw3ICs3MCw3IEBAIFN1YkZyYW1l
U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6flN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbigp
CiB2b2lkIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZmFsbEJhY2tUb1dlYlBhdGhJ
bnRlcm5hbCgpCiB7CiAgICAgQVNTRVJUKG5hdmlnYXRpb25BY3Rpb24oKSk7Ci0gICAgYXBwZW5k
UmVxdWVzdFRvTG9hZChVUkwobmF2aWdhdGlvbkFjdGlvbigpLT5yZXF1ZXN0KCkudXJsKCkpLCBj
b252ZXJ0Qnl0ZXNUb1ZlY3RvcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb0F1
dGhvcml6YXRpb25Qb3N0RGlkQ2FuY2VsTWVzc2FnZVRvUGFyZW50KSwgc3RybGVuKHNvQXV0aG9y
aXphdGlvblBvc3REaWRDYW5jZWxNZXNzYWdlVG9QYXJlbnQpKSk7CisgICAgYXBwZW5kUmVxdWVz
dFRvTG9hZChVUkwobmF2aWdhdGlvbkFjdGlvbigpLT5yZXF1ZXN0KCkudXJsKCkpLCBWZWN0b3Ig
eyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb0F1dGhvcml6YXRpb25Qb3N0RGlk
Q2FuY2VsTWVzc2FnZVRvUGFyZW50KSwgc3RybGVuKHNvQXV0aG9yaXphdGlvblBvc3REaWRDYW5j
ZWxNZXNzYWdlVG9QYXJlbnQpIH0pOwogICAgIGFwcGVuZFJlcXVlc3RUb0xvYWQoVVJMKG5hdmln
YXRpb25BY3Rpb24oKS0+cmVxdWVzdCgpLnVybCgpKSwgU3RyaW5nKG5hdmlnYXRpb25BY3Rpb24o
KS0+cmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpKSk7CiB9CiAKQEAgLTkyLDcgKzg1LDcgQEAgdm9p
ZCBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbXBsZXRlSW50ZXJuYWwoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXMKICAgICAgICAgZmFsbEJhY2tUb1dlYlBhdGhJbnRlcm5hbCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGFwcGVuZFJlcXVlc3RUb0xvYWQoVVJMKHJl
c3BvbnNlLnVybCgpKSwgY29udmVydEJ5dGVzVG9WZWN0b3IocmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoKSk7CisgICAgYXBwZW5kUmVxdWVz
dFRvTG9hZChVUkwocmVzcG9uc2UudXJsKCkpLCBWZWN0b3IgeyByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSk7CiB9CiAKIHZvaWQgU3Vi
RnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpiZWZvcmVTdGFydCgpCkBAIC0xMDAsNyArOTMs
NyBAQCB2b2lkIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6YmVmb3JlU3RhcnQoKQog
ICAgIC8vIENhbmNlbGxlZCB0aGUgY3VycmVudCBsb2FkIGJlZm9yZSBsb2FkaW5nIHRoZSBkYXRh
IHRvIHBvc3QgU09BdXRob3JpemF0aW9uRGlkU3RhcnQgdG8gdGhlIHBhcmVudCBmcmFtZS4KICAg
ICBpbnZva2VDYWxsYmFjayh0cnVlKTsKICAgICBBU1NFUlQobmF2aWdhdGlvbkFjdGlvbigpKTsK
LSAgICBhcHBlbmRSZXF1ZXN0VG9Mb2FkKFVSTChuYXZpZ2F0aW9uQWN0aW9uKCktPnJlcXVlc3Qo
KS51cmwoKSksIGNvbnZlcnRCeXRlc1RvVmVjdG9yKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHNvQXV0aG9yaXphdGlvblBvc3REaWRTdGFydE1lc3NhZ2VUb1BhcmVudCksIHN0cmxl
bihzb0F1dGhvcml6YXRpb25Qb3N0RGlkU3RhcnRNZXNzYWdlVG9QYXJlbnQpKSk7CisgICAgYXBw
ZW5kUmVxdWVzdFRvTG9hZChVUkwobmF2aWdhdGlvbkFjdGlvbigpLT5yZXF1ZXN0KCkudXJsKCkp
LCBWZWN0b3IgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb0F1dGhvcml6YXRp
b25Qb3N0RGlkU3RhcnRNZXNzYWdlVG9QYXJlbnQpLCBzdHJsZW4oc29BdXRob3JpemF0aW9uUG9z
dERpZFN0YXJ0TWVzc2FnZVRvUGFyZW50KSB9KTsKIH0KIAogdm9pZCBTdWJGcmFtZVNPQXV0aG9y
aXphdGlvblNlc3Npb246OmRpZEZpbmlzaExvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggYjlmZGEyOGVhOTA3MjRhYzZmNWRj
ZDVmZDkzZjM4NDI2ZDc0MjBlNC4uNTljOGU5NmMxYjllMGM5M2U5OWEzMjFmY2Q3ODEyNGM2MDYw
ZmRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJv
eHkuY3BwCkBAIC0xNjMsMTAgKzE2Myw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgcmV0dXJuZWRWYWx1ZSB9KTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAg
ICAgICAgICBkYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoZGF0YVJlZmVyZW5jZS5zaXplKCkp
OwotICAgICAgICAgICAgZGF0YS5hcHBlbmQoZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZl
cmVuY2Uuc2l6ZSgpKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgeyBBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoV1RGTW92ZShkYXRhKSkucHRyKCkgfSB9KTsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgeyBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6YWRvcHQoVmVjdG9yPHVpbnQ4X3Q+IHsgZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZl
cmVuY2Uuc2l6ZSgpIH0pLnB0cigpIH0gfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
SGlkQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0hpZENvbm5lY3Rpb24ubW0KaW5kZXggZjJmMTkzYzc1MDEyNGI4Y2U2MzA1YzI3
NTBhNjJhMWYzNGZhZDliNi4uNDVhY2RjYjJiZDJlOTVmM2MxNWZjMDA2MDljNWRhYWRlODk1M2M1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvSGlkQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLm1tCkBAIC01MSw5ICs1MSw3IEBAIHN0
YXRpYyB2b2lkIHJlcG9ydFJlY2VpdmVkKHZvaWQqIGNvbnRleHQsIElPUmV0dXJuIHN0YXR1cywg
dm9pZCosIElPSElEUmVwb3J0VHlwCiAgICAgQVNTRVJUKHJlcG9ydElEID09IGtIaWRSZXBvcnRJ
ZCk7CiAgICAgQVNTRVJUKHJlcG9ydExlbmd0aCA9PSBrSGlkTWF4UGFja2V0U2l6ZSk7CiAKLSAg
ICBWZWN0b3I8dWludDhfdD4gcmVwb3J0RGF0YTsKLSAgICByZXBvcnREYXRhLmFwcGVuZChyZXBv
cnQsIHJlcG9ydExlbmd0aCk7Ci0gICAgY29ubmVjdGlvbi0+cmVjZWl2ZVJlcG9ydChXVEZNb3Zl
KHJlcG9ydERhdGEpKTsKKyAgICBjb25uZWN0aW9uLT5yZWNlaXZlUmVwb3J0KHsgcmVwb3J0LCBz
dGF0aWNfY2FzdDxzaXplX3Q+KHJlcG9ydExlbmd0aCkgfSk7CiB9CiAKIEhpZENvbm5lY3Rpb246
OkhpZENvbm5lY3Rpb24oSU9ISUREZXZpY2VSZWYgZGV2aWNlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNh
dG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IGYyMmYwZjhiN2FkYTllZjg4MDkyNmUxOTI0NGQy
MjMyNzgxZDk1YzkuLmEyMWVmMDBjYTFhZGQxYTdiODYxYTM3ZmFlNWYzZDgzYzM0NzRhZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTQzLDYgKzQzLDcg
QEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CiAj
aW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
ICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgpAQCAtODgsMTggKzg5
LDEwIEBAIHN0YXRpYyBpbmxpbmUgSGFzaFNldDxTdHJpbmc+IHByb2R1Y2VIYXNoU2V0KGNvbnN0
IFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
c3RhdGljIGlubGluZSBWZWN0b3I8dWludDhfdD4gdG9WZWN0b3IoTlNEYXRhICpkYXRhKQotewot
ICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZChyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IGFhZ3VpZFZl
Y3RvcigpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5k
KGFhZ3VpZCwgYWFndWlkTGVuZ3RoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxWZWN0b3I8dWludDhfdD4+IGFhZ3VpZFZlY3RvciA9IHsgYWFndWlkLCBh
YWd1aWRMZW5ndGggfTsKKyAgICByZXR1cm4gYWFndWlkVmVjdG9yOwogfQogCiBzdGF0aWMgaW5s
aW5lIFJldGFpblB0cjxOU0RhdGE+IHRvTlNEYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0
YSkKQEAgLTE1Myw3ICsxNDYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPFJlZjxBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Pj4gZ2V0RXhpc3RpbmdDcmVkZW50aQogICAgIFZlY3Rv
cjxSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4gcmVzdWx0OwogICAgIHJlc3Vs
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvcnRlZEF0dHJpYnV0ZXNBcnJheS5jb3VudCk7CiAg
ICAgZm9yIChOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgaW4gc29ydGVkQXR0cmlidXRlc0FycmF5
KSB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVh
ZCh0b1ZlY3RvcihhdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXSkpOworICAg
ICAgICBhdXRvIGRlY29kZWRSZXNwb25zZSA9IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQodmVjdG9y
RnJvbU5TRGF0YShhdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXSkpOwogICAg
ICAgICBpZiAoIWRlY29kZWRSZXNwb25zZSB8fCAhZGVjb2RlZFJlc3BvbnNlLT5pc01hcCgpKSB7
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CkBAIC00NzEsNyArNDY0LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6
OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFZlY3Rvcjx1aW50OF90PiYmIGMK
ICAgICB7CiAgICAgICAgIFZlY3RvcjxjYm9yOjpDQk9SVmFsdWU+IGNib3JBcnJheTsKICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBbY2VydGlmaWNhdGVzIGNvdW50XTsgaSsrKQotICAg
ICAgICAgICAgY2JvckFycmF5LmFwcGVuZChjYm9yOjpDQk9SVmFsdWUodG9WZWN0b3IoKE5TRGF0
YSAqKWFkb3B0Q0YoU2VjQ2VydGlmaWNhdGVDb3B5RGF0YSgoX19icmlkZ2UgU2VjQ2VydGlmaWNh
dGVSZWYpY2VydGlmaWNhdGVzW2ldKSkuZ2V0KCkpKSk7CisgICAgICAgICAgICBjYm9yQXJyYXku
YXBwZW5kKGNib3I6OkNCT1JWYWx1ZSh2ZWN0b3JGcm9tTlNEYXRhKChOU0RhdGEgKilhZG9wdENG
KFNlY0NlcnRpZmljYXRlQ29weURhdGEoKF9fYnJpZGdlIFNlY0NlcnRpZmljYXRlUmVmKWNlcnRp
ZmljYXRlc1tpXSkpLmdldCgpKSkpOwogICAgICAgICBhdHRlc3RhdGlvblN0YXRlbWVudE1hcFtj
Ym9yOjpDQk9SVmFsdWUoIng1YyIpXSA9IGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKGNib3JBcnJh
eSkpOwogICAgIH0KICAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3RhdGlv
bk9iamVjdChXVEZNb3ZlKGF1dGhEYXRhKSwgImFwcGxlIiwgV1RGTW92ZShhdHRlc3RhdGlvblN0
YXRlbWVudE1hcCksIGNyZWF0aW9uT3B0aW9ucy5hdHRlc3RhdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TmZjQ29ubmVjdGlvbi5tbQppbmRleCA5MTA0ODUwNzk3NDExN2JmOWVmM2UzNmQxODQyZmVlMTk4
NDk1Njc0Li4xZTcwYTMxNTQxZjNhNjMwOGMzZTMxYzRiZDJiNmExNmFkN2U5ZDljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmND
b25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24ubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIk5m
Y1NlcnZpY2UuaCIKICNpbXBvcnQgIldLTkZSZWFkZXJTZXNzaW9uRGVsZWdhdGUuaCIKICNpbXBv
cnQgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNv
Y29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CkBAIC05MCwxMSArOTEsOSBAQCBOZmNDb25uZWN0aW9uOjp+TmZjQ29ubmVjdGlvbigpCiAKIFZl
Y3Rvcjx1aW50OF90PiBOZmNDb25uZWN0aW9uOjp0cmFuc2FjdChWZWN0b3I8dWludDhfdD4mJiBk
YXRhKSBjb25zdAogewotICAgIFZlY3Rvcjx1aW50OF90PiByZXNwb25zZTsKICAgICAvLyBUaGUg
bWV0aG9kIHdpbGwgcmV0dXJuIGFuIGVtcHR5IE5TRGF0YSBpZiB0aGUgdGFnIGlzIGRpc2Nvbm5l
Y3RlZC4KICAgICBhdXRvICpyZXNwb25zZURhdGEgPSBbbV9zZXNzaW9uIHRyYW5zY2VpdmU6YWRv
cHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0
YS5zaXplKCldKS5nZXQoKV07Ci0gICAgcmVzcG9uc2UuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHJlc3BvbnNlRGF0YS5ieXRlcyksIHJlc3BvbnNlRGF0YS5sZW5ndGgp
OwotICAgIHJldHVybiByZXNwb25zZTsKKyAgICByZXR1cm4gdmVjdG9yRnJvbU5TRGF0YShyZXNw
b25zZURhdGEpOwogfQogCiB2b2lkIE5mY0Nvbm5lY3Rpb246OnN0b3AoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAppbmRleCA5NzZjZmI1ZDYz
ODBlN2Y4ZDM2MmY2MmI1ZTFiZDE1ZTViZDVhNmMzLi5lNzM1N2QxMTI1MGQ2MGVjOGM4MzhhODcw
ODE3MGUxZjJjNjhmNWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmNwcApAQCAtMjIwLDEwICsyMjAsOCBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRp
ZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAg
ICAgCiAgICAgaWYgKGlzU3luYygpKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwot
ICAgICAgICBpZiAobV9zeW5jRGF0YSkgewotICAgICAgICAgICAgZGF0YS5yZXNpemUobV9zeW5j
RGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG1lbWNweShkYXRhLmRhdGEoKSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9zeW5jRGF0YS0+ZGF0YSgpKSwgbV9zeW5jRGF0YS0+
c2l6ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAobV9zeW5jRGF0YSkKKyAgICAgICAgICAg
IGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGFBc1VJbnQ4UHRyKCksIG1fc3luY0RhdGEtPnNpemUo
KSB9OwogCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKG1fc3luY1Jlc3BvbnNlLCBl
cnJvciwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFz
a1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZVRhc2tQcm94eS5jcHAKaW5kZXggNmE4YzYzMjEwZDI3MmFiMzNlOTJjMTFiZWZjZGYwMzliNjBm
ZjdjNS4uNjEwOWRhYmFmODVkYzJjMDVhNjA5NWMxNjFjZjViOTE0ZWY2OWYxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVU
YXNrUHJveHkuY3BwCkBAIC0xNTQsOSArMTU0LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJv
eHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQogCiAg
ICAgaWYgKG1fd2FpdGluZ0ZvckNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIFdFQlVSTFND
SEVNRVRBU0tQUk9YWV9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0YTogUmVj
ZWl2ZWQgZGF0YSBkdXJpbmcgcmVzcG9uc2UgcHJvY2Vzc2luZywgcXVldWluZyBpdC4iKTsKLSAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFWZWN0b3I7Ci0gICAgICAgIGRhdGFWZWN0b3IuYXBw
ZW5kKGRhdGEsIHNpemUpOwotICAgICAgICBxdWV1ZVRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZGF0YVZlY3RvciA9IFdURk1vdmUoZGF0YVZlY3RvcildIHsKKyAg
ICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRh
dGFWZWN0b3IgPSBWZWN0b3I8dWludDhfdD4geyBkYXRhLCBzaXplIH1dIHsKICAgICAgICAgICAg
IGRpZFJlY2VpdmVEYXRhKGRhdGFWZWN0b3Iuc2l6ZSgpLCBkYXRhVmVjdG9yLmRhdGEoKSk7CiAg
ICAgICAgIH0pOwogICAgICAgICByZXR1cm47Cg==
</data>
<flag name="commit-queue"
          id="451083"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429825</attachid>
            <date>2021-05-26 18:56:24 -0700</date>
            <delta_ts>2021-05-26 19:16:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226304-20210526185623.patch</filename>
            <type>text/plain</type>
            <size>45987</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OTNiZWEyNWE3ZWZkMDViM2M0Nzk2MmY2ZmJlZWUzYTQ0N2QwNTllLi45MTQ4YjU0NGY4MGU5Njc1
MWNiNDMxZTYxZDYyZGU3YmEyMDcxMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNvbnN0IFQqLCBzaXplX3QpIGNvbnN0
cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjYzMDQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBMZXZl
cmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvciBpbiBleGlz
dGluZyBjb2RlLgorCisgICAgICAgICogd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2VyOjpjb25zdW1lKToKKwogMjAyMS0wNS0y
NiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OOiBBU1NFUlRJT04gRkFJTEVEOiAhaXNDb21waWxhdGlvblRocmVhZCgpIGluIEpTQzo6UHJv
ZmlsZXI6OkRhdGFiYXNlOjphZGRDb21waWxhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJjYTVhOTk3MmUyMGNiM2Nl
Njk5NWY5NjEzYTE0YjZjNWZjNjYxMTguLjYzYzMwODUwZThkMGI5MGFmZTUyNGZjNGNjZTgyZjM5
YmZmMTczMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMjYgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBMZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25z
dCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MzA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgTGV2ZXJhZ2UgdGhlIG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkg
Y29uc3RydWN0b3IgaW4gZXhpc3RpbmcgY29kZS4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0
cmluZy5jcHA6CisgICAgICAgIChhc2NpaURlYnVnKToKKwogMjAyMS0wNS0yNiAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSB0aW1pbmdzYWZlX2JjbXAoKSBp
biBXVEY6OmNvbnN0YW50VGltZU1lbWNtcCgpIHdoZW4gYXZhaWxhYmxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjczMzdjMDVhYThkNGYwODg3MWI3NjgyOGJkNzI1NGRmYTFlMDY2Mi4uMTJiY2RiYWJlZDhmYjY0
M2VjMmU1YzhhYzg5MjUyMjQzMDhlMTZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisy
MDIxLTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTGV2
ZXJhZ2UgdGhlIG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkgY29uc3RydWN0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjMwNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIExldmVyYWdlIHRoZSBuZXcg
VmVjdG9yKGNvbnN0IFQqLCBzaXplX3QpIGNvbnN0cnVjdG9yIGluIGV4aXN0aW5nIGNvZGUuCisK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
R2V0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZGF0YUZyb21C
dWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGls
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcDoKKyAg
ICAgICAgKGZpZG86OmRlY29kZVJlc3BvbnNlTWFwKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkSW5pdFBh
Y2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKGZpZG86OkZpZG9IaWRD
b250aW51YXRpb25QYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHA6CisgICAgICAgIChmaWRvOjpwaW46OmVuY29k
ZUNPU0VQdWJsaWNLZXkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNw
b25zZUNvbnZlcnRlci5jcHA6CisgICAgICAgIChmaWRvOjpXZWJDb3JlOjpleHRyYWN0RUNQdWJs
aWNLZXlGcm9tVTJmUmVnaXN0cmF0aW9uUmVzcG9uc2UpOgorICAgICAgICAoZmlkbzo6V2ViQ29y
ZTo6ZXh0cmFjdENyZWRlbnRpYWxJZEZyb21VMmZSZWdpc3RyYXRpb25SZXNwb25zZSk6CisgICAg
ICAgIChmaWRvOjpXZWJDb3JlOjpjcmVhdGVGaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnRGcm9tVTJm
UmVnaXN0ZXJSZXNwb25zZSk6CisgICAgICAgIChmaWRvOjpyZWFkVTJmU2lnblJlc3BvbnNlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgorICAgICAg
ICAqIGNyeXB0by9TdWJ0bGVDcnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9LZXlEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlUb1ZlY3Rvcik6CisgICAgICAgICogY3J5cHRvL2dj
cnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlF
Qzo6cGxhdGZvcm1BZGRGaWVsZEVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBjcnlwdG8vbWFj
L0NyeXB0b0tleUVDTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0
Zm9ybUltcG9ydFBrY3M4KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9L
ZXlXcmFwTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6dmVjdG9yRnJvbU5TRGF0YSk6CisgICAg
ICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU9wZW5TU0wuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3J5cHREZWNyeXB0KToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6QmxvYik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFj
a2luZ1N0b3JlOjpJbWFnZUJhY2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpkYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVj
dG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVByb3h5Q2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJveHlDbGVhcktleTo6
Y2VuY1NldERlY3J5cHRpb25LZXkpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlTW9jazo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6aXNvbGF0
ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmREYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHA6CisgICAg
ICAgIChPcGVuU1NMOjpCSU86OmdldERhdGFBc1ZlY3RvciBjb25zdCk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpkZXNlcmlh
bGl6ZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTA1LTI2
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBh
IFBBTCBzb2Z0bGlua2luZyBoZWFkZXIgZm9yIHRoZSBSZXZlYWwgZnJhbWV3b3JrCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwppbmRleCA2NjRiNDRhMDlkZmU0NDViMjJmZjA4NzA2NDkwNDUyODMxOTkxMGYyLi40
NGJiZjZmNWNlYjA3YWM4OTkwODIzOWQ2NWU4ZGExNzZjMmIxMzI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNvbnN0IFQqLCBzaXpl
X3QpIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjYzMDQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICBMZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3Rv
ciBpbiBleGlzdGluZyBjb2RlLgorCisgICAgICAgICogcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRv
RGlnZXN0R0NyeXB0LmNwcDoKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFz
aCk6CisKIDIwMjEtMDUtMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIGEgUEFMIHNvZnRsaW5raW5nIGhlYWRlciBmb3IgdGhlIFJldmVhbCBm
cmFtZXdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggYjE3YWEyY2IxNjVmNTM5YzY1MDU2NWRiZDVmMTIyNzI3ZGVm
ODY1OC4uOGQwMzY0OTk1YzE2ZmEyZTUyYzgyNjMwN2M0YjVkOGExZmRkNjg2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNCBAQAorMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNvbnN0IFQqLCBzaXplX3Qp
IGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjYzMDQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBMZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvciBp
biBleGlzdGluZyBjb2RlLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNl
Lmg6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAg
ICAgICAgKHZlY3RvckZyb21OU0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNldEljb25G
b3JQYWdlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1
YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29y
ZTo6Y29udmVydEJ5dGVzVG9WZWN0b3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3Jp
cHRGb3JFeHRlbnNpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9IaWRDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpyZXBvcnRSZWNlaXZlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw6
OnRvVmVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw6
OmFhZ3VpZFZlY3Rvcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL05mY0Nvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6Ok5mY0Nvbm5lY3Rpb246OnRy
YW5zYWN0IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YSk6CisKIDIw
MjEtMDUtMjYgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAg
ICBbQ01ha2VdIFN1cHBvcnQgVVNFX0FOR0xFX0VHTCBvbiBhZGRpdGlvbmFsIHBsYXRmb3Jtcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNw
cAppbmRleCAyODAxMGI4OGNiYmI2ODYyN2JjYzMzODgyYmI0MWQxNjU1OTgyMmE4Li4xZDIyNWM3
OGUwM2I4ZGE5OTQyZjMyMmJhODIzMDM3Y2UwMmY4YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcApAQCAtMTk3LDggKzE5Nyw3
IEBAIGF1dG8gU3RyZWFtaW5nUGFyc2VyOjpjb25zdW1lKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBz
aXplX3QgYnl0ZXNTaXplLCBzaXplX3QmIG9mCiAgICAgfQogCiAgICAgaWYgKG1fcmVtYWluaW5n
LnNpemUoKSA+IHJlcXVpcmVkU2l6ZSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0
KHJlcXVpcmVkU2l6ZSk7Ci0gICAgICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBtX3JlbWFpbmlu
Zy5kYXRhKCksIHJlcXVpcmVkU2l6ZSk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQg
eyBtX3JlbWFpbmluZy5kYXRhKCksIHJlcXVpcmVkU2l6ZSB9OwogICAgICAgICBtX3JlbWFpbmlu
Zy5yZW1vdmUoMCwgcmVxdWlyZWRTaXplKTsKICAgICAgICAgbV9uZXh0T2Zmc2V0ICs9IHJlcXVp
cmVkU2l6ZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL2NvY29hL1ZlY3RvckNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oCmluZGV4IDIyMTQxYTM2ZmQxZjYwMjUzMzg3MjQ4ODM1ZmEzMjA3YmMyMGY4YzcuLjY3Y2I2
OTVlOTExOTJhNjdhZThlMDJmODRlYmQwMzAzY2Q4Y2Q2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmgKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvVmVj
dG9yQ29jb2EuaApAQCAtMTA3LDcgKzEwNywxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXBGdW5j
dGlvblR5cGU+IFZlY3Rvcjx0eXBlbmFtZSBzdGQ6Omludm9rZV9yZXN1bHRfdDxNYXBGdW5jdAog
ICAgIHJldHVybiB2ZWN0b3I7CiB9CiAKK2lubGluZSBWZWN0b3I8dWludDhfdD4gdmVjdG9yRnJv
bU5TRGF0YShOU0RhdGEqIGRhdGEpCit7CisgICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH07Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmNyZWF0ZU5TQXJyYXk7CiB1c2luZyBXVEY6Om1ha2VW
ZWN0b3I7Cit1c2luZyBXVEY6OnZlY3RvckZyb21OU0RhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5jcHAKaW5kZXggMjQ1N2NlZjZjNTNmYWFkZjc3NDBjOWM5NjE4N2JkYWFmYjQ5NDhjYS4uODZm
OTgzODBkYTA4NWVhMzJiZmJjMDAzNzAxMDY5NDI5OTJjM2ExNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmNwcApAQCAtOTAyLDkgKzkwMiw3IEBAIFZlY3RvcjxjaGFyPiBhc2NpaURlYnVnKFN0
cmluZ0ltcGwqIGltcGwpCiAgICAgICAgIH0KICAgICB9CiAgICAgQ1N0cmluZyBuYXJyb3dTdHJp
bmcgPSBidWZmZXIudG9TdHJpbmcoKS5hc2NpaSgpOwotICAgIFZlY3RvcjxjaGFyPiByZXN1bHQ7
Ci0gICAgcmVzdWx0LmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihuYXJyb3dT
dHJpbmcuZGF0YSgpKSwgbmFycm93U3RyaW5nLmxlbmd0aCgpICsgMSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihuYXJyb3dT
dHJpbmcuZGF0YSgpKSwgbmFycm93U3RyaW5nLmxlbmd0aCgpICsgMSB9OwogfQogCiBWZWN0b3I8
Y2hhcj4gYXNjaWlEZWJ1ZyhTdHJpbmcmIHN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggNTVjZmRhYWQ3ZGJmYzEx
NWQ5MjdmYWY5YTRlODBhMzE2YzNmNTI2MS4uOWI2OTU2MDMwMGFiNjk5MjM1M2EzYTljMTk3MDQy
MTc0ZmM2NmQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5jcHAKQEAgLTQzLDkgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgaW5saW5lIFJlZjxCbG9iPiBibG9iRnJvbURhdGEoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1
ZShsZW5ndGgpOwotICAgIG1lbWNweSh2YWx1ZS5kYXRhKCksIGRhdGEsIGxlbmd0aCk7Ci0gICAg
cmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBXVEZNb3ZlKHZhbHVlKSwgQmxvYjo6bm9ybWFs
aXplZENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKSk7CisgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShj
b250ZXh0LCBWZWN0b3IgeyBkYXRhLCBsZW5ndGggfSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRU
eXBlKGNvbnRlbnRUeXBlKSk7CiB9CiAKIC8vIGh0dHBzOi8vbWltZXNuaWZmLnNwZWMud2hhdHdn
Lm9yZy8jaHR0cC1xdW90ZWQtc3RyaW5nLXRva2VuLWNvZGUtcG9pbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCmluZGV4IDJjNTlkZTBj
Y2UxN2QzMzU0NTkzMmJjYjM2NTViMGViM2U1NThlN2QuLmU4M2NkZDcwNmJhMjU5ZThlZGU2N2Vj
MTA0NTIwYjE5NDY3YWNiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCR2V0UmVzdWx0LmNwcApAQCAtMzQsMTAgKzM0LDcgQEAgV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKElEQkdldFJlc3VsdCk7CiAKIHZvaWQgSURCR2V0UmVzdWx0OjpkYXRhRnJv
bUJ1ZmZlcihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gZGF0
YShidWZmZXIuc2l6ZSgpKTsKLSAgICBtZW1jcHkoZGF0YS5kYXRhKCksIGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOwotCi0gICAgbV92YWx1ZSA9IFRocmVhZFNhZmVEYXRhQnVmZmVyOjpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgbV92YWx1ZSA9IFRocmVhZFNhZmVEYXRhQnVmZmVy
OjpjcmVhdGUoeyBidWZmZXIuZGF0YUFzVUludDhQdHIoKSwgYnVmZmVyLnNpemUoKSB9KTsKIH0K
IAogSURCR2V0UmVzdWx0OjpJREJHZXRSZXN1bHQoY29uc3QgSURCR2V0UmVzdWx0JiB0aGF0LCBJ
c29sYXRlZENvcHlUYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL1dlYkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvblV0aWxzLmNwcAppbmRleCBiZTkyNjEyZDgxZDMxNzkw
OTdjYmFiYjY1Y2EyMjBiMjkwYTAxNWRjLi4wNjhmZWY2MjVhOGUyODIxYjRiOGY0ZDY4OTVjNTdm
MDVjNTkwYjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dl
YkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKQEAgLTM3LDkgKzM3LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBWZWN0b3I8dWludDhfdD4gY29udmVydEJ5dGVzVG9WZWN0b3IoY29u
c3QgdWludDhfdCBieXRlQXJyYXlbXSwgY29uc3Qgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBWZWN0
b3I8dWludDhfdD4gcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmQoYnl0ZUFycmF5LCBsZW5ndGgp
OwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHsgYnl0ZUFycmF5LCBsZW5ndGggfTsK
IH0KIAogVmVjdG9yPHVpbnQ4X3Q+IHByb2R1Y2VScElkSGFzaChjb25zdCBTdHJpbmcmIHJwSWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNl
UmVzcG9uc2VDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9m
aWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcAppbmRleCA4ZDM0YmU5M2QxYmU0ODEzYTdh
OWIzODU1YmE0Y2ExZjA0Y2Y2ODg3Li44NGMxN2I3NzM2Yzg1ZDYxN2VlOTJmY2ZjMmI2ODI5OTgz
MDFkNTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
RGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vZmlkby9EZXZpY2VSZXNwb25zZUNvbnZlcnRlci5jcHAKQEAgLTU5LDggKzU5LDcg
QEAgT3B0aW9uYWw8Y2Jvcjo6Q0JPUlZhbHVlPiBkZWNvZGVSZXNwb25zZU1hcChjb25zdCBWZWN0
b3I8dWludDhfdD4mIGluQnVmZmVyKQogICAgIGlmIChpbkJ1ZmZlci5zaXplKCkgPD0ga1Jlc3Bv
bnNlQ29kZUxlbmd0aCB8fCBnZXRSZXNwb25zZUNvZGUoaW5CdWZmZXIpICE9IEN0YXBEZXZpY2VS
ZXNwb25zZUNvZGU6OmtTdWNjZXNzKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICBidWZmZXIuYXBwZW5kKGluQnVmZmVyLmRh
dGEoKSArIDEsIGluQnVmZmVyLnNpemUoKSAtIDEpOworICAgIFZlY3Rvcjx1aW50OF90PiBidWZm
ZXIgeyBpbkJ1ZmZlci5kYXRhKCkgKyAxLCBpbkJ1ZmZlci5zaXplKCkgLSAxIH07CiAgICAgT3B0
aW9uYWw8Q0JPUj4gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZChidWZm
ZXIpOwogICAgIGlmICghZGVjb2RlZFJlc3BvbnNlIHx8ICFkZWNvZGVkUmVzcG9uc2UtPmlzTWFw
KCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKaW5kZXggNTIzMjIw
YTE2ZmJmZDM0MzllNTEwZTUyNzFiMTliZTY0Njc5OTZjZi4uYTJjYmEzMDliZmI2MDVjMzNhZDhj
N2MxMTMyNjY4N2U4ZjI3MmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9GaWRvSGlkUGFja2V0LmNwcApAQCAtNjcsOSArNjcsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8Rmlkb0hpZEluaXRQYWNrZXQ+IEZpZG9IaWRJbml0UGFja2V0OjpjcmVhdGVG
cm9tU2VyaWFsaXplZERhdGEoYwogICAgIC8vIFVwZGF0ZSByZW1haW5pbmcgc2l6ZSB0byBkZXRl
cm1pbmUgdGhlIHBheWxvYWQgc2l6ZSBvZiBmb2xsb3cgb24gcGFja2V0cy4KICAgICAqcmVtYWlu
aW5nU2l6ZSA9IHBheWxvYWRTaXplIC0gZGF0YVNpemU7CiAKLSAgICBhdXRvIGRhdGEgPSBWZWN0
b3I8dWludDhfdD4oKTsKLSAgICBkYXRhLmFwcGVuZChzZXJpYWxpemVkLmJlZ2luKCkgKyBpbmRl
eCwgZGF0YVNpemUpOwotCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEgeyBzZXJpYWxpemVkLmJl
Z2luKCkgKyBpbmRleCwgZGF0YVNpemUgfTsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxGaWRvSGlk
SW5pdFBhY2tldD4oY2hhbm5lbElkLCBjb21tYW5kLCBXVEZNb3ZlKGRhdGEpLCBwYXlsb2FkU2l6
ZSk7CiB9CiAKQEAgLTEyMiw5ICsxMjAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8Rmlkb0hpZENvbnRp
bnVhdGlvblBhY2tldD4gRmlkb0hpZENvbnRpbnVhdGlvblBhY2tldDo6Y3JlYXRlRnJvbQogICAg
IC8vIENoZWNrIHRvIHNlZSBpZiBwYWNrZXQgcGF5bG9hZCBpcyBsZXNzIHRoYW4gbWF4aW11bSBz
aXplIGFuZCBwYWRkZWQgd2l0aCAwcy4KICAgICBzaXplX3QgZGF0YVNpemUgPSBzdGQ6Om1pbigq
cmVtYWluaW5nU2l6ZSwga0hpZFBhY2tldFNpemUgLSBpbmRleCk7CiAgICAgKnJlbWFpbmluZ1Np
emUgLT0gZGF0YVNpemU7Ci0gICAgYXV0byBkYXRhID0gVmVjdG9yPHVpbnQ4X3Q+KCk7Ci0gICAg
ZGF0YS5hcHBlbmQoc2VyaWFsaXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFTaXplKTsKLQorICAg
IFZlY3Rvcjx1aW50OF90PiBkYXRhIHsgc2VyaWFsaXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFT
aXplIH07CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZENvbnRpbnVhdGlvblBhY2tldD4o
Y2hhbm5lbElkLCBzZXF1ZW5jZSwgV1RGTW92ZShkYXRhKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHAKaW5kZXggOTc5ZDQ3NDdiOTNiNTUyZmRm
NTIyMmM5MDk2OTQ5NjRhNTNjMTcwZS4uNTgzNzY1MGQzYmYyMGJhMGIyYjcwODhkZWQ5ZTAzMzZl
OTAxNGNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L1Bpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5j
cHAKQEAgLTE4MSwxMCArMTgxLDggQEAgT3B0aW9uYWw8S2V5QWdyZWVtZW50UmVzcG9uc2U+IEtl
eUFncmVlbWVudFJlc3BvbnNlOjpwYXJzZUZyb21DT1NFKGNvbnN0IENCT1JWYWwKIGNib3I6OkNC
T1JWYWx1ZTo6TWFwVmFsdWUgZW5jb2RlQ09TRVB1YmxpY0tleShjb25zdCBWZWN0b3I8dWludDhf
dD4mIHJhd1B1YmxpY0tleSkKIHsKICAgICBBU1NFUlQocmF3UHVibGljS2V5LnNpemUoKSA9PSA2
NSk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHg7Ci0gICAgeC5hcHBlbmQocmF3UHVibGljS2V5LmRh
dGEoKSArIDEsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKTsKLSAgICBWZWN0b3I8dWludDhfdD4g
eTsKLSAgICB5LmFwcGVuZChyYXdQdWJsaWNLZXkuZGF0YSgpICsgMSArIEVTMjU2RmllbGRFbGVt
ZW50TGVuZ3RoLCBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IHggeyByYXdQdWJsaWNLZXkuZGF0YSgpICsgMSwgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGggfTsK
KyAgICBWZWN0b3I8dWludDhfdD4geSB7IHJhd1B1YmxpY0tleS5kYXRhKCkgKyAxICsgRVMyNTZG
aWVsZEVsZW1lbnRMZW5ndGgsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoIH07CiAKICAgICBjYm9y
OjpDQk9SVmFsdWU6Ok1hcFZhbHVlIHB1YmxpY0tleU1hcDsKICAgICBwdWJsaWNLZXlNYXBbY2Jv
cjo6Q0JPUlZhbHVlKENPU0U6Omt0eSldID0gY2Jvcjo6Q0JPUlZhbHVlKENPU0U6OkVDMik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9u
c2VDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZlJlc3BvbnNlQ29udmVydGVyLmNwcAppbmRleCAyYjU0NmQxNzM3ODM2ZTVmNGM3MzlmODIxNzNi
MjE2ZDk4Yjc1YjExLi4xMzQ1NDFkMWVmNTk1NDI5ZjI1MTI4MjJmMTkzZDUxNTNkNGQwYjg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9u
c2VDb252ZXJ0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlk
by9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKQEAgLTY0LDEzICs2NCwxMCBAQCBzdGF0aWMgVmVj
dG9yPHVpbnQ4X3Q+IGV4dHJhY3RFQ1B1YmxpY0tleUZyb21VMmZSZWdpc3RyYXRpb25SZXNwb25z
ZShjb25zdCBWZWN0bwogICAgIGlmICh1MmZEYXRhLnNpemUoKSA8IHBvcyArIDIgKiBFUzI1NkZp
ZWxkRWxlbWVudExlbmd0aCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIFZlY3Rvcjx1aW50
OF90PiB4OwotICAgIHguYXBwZW5kKHUyZkRhdGEuZGF0YSgpICsgcG9zLCBFUzI1NkZpZWxkRWxl
bWVudExlbmd0aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHggeyB1MmZEYXRhLmRhdGEoKSArIHBv
cywgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGggfTsKICAgICBwb3MgKz0gRVMyNTZGaWVsZEVsZW1l
bnRMZW5ndGg7CiAKLSAgICBWZWN0b3I8dWludDhfdD4geTsKLSAgICB5LmFwcGVuZCh1MmZEYXRh
LmRhdGEoKSArIHBvcywgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpOwotCisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHkgeyB1MmZEYXRhLmRhdGEoKSArIHBvcywgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgg
fTsKICAgICByZXR1cm4gZW5jb2RlRVMyNTZQdWJsaWNLZXlBc0NCT1IoV1RGTW92ZSh4KSwgV1RG
TW92ZSh5KSk7CiB9CiAKQEAgLTg0LDkgKzgxLDcgQEAgc3RhdGljIFZlY3Rvcjx1aW50OF90PiBl
eHRyYWN0Q3JlZGVudGlhbElkRnJvbVUyZlJlZ2lzdHJhdGlvblJlc3BvbnNlKGNvbnN0IFZlY3QK
IAogICAgIGlmICh1MmZEYXRhLnNpemUoKSA8IHBvcyArIGNyZWRlbnRpYWxJZExlbmd0aCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKLSAgICBWZWN0b3I8dWludDhfdD4gY3JlZGVudGlhbElkOwotICAg
IGNyZWRlbnRpYWxJZC5hcHBlbmQodTJmRGF0YS5kYXRhKCkgKyBwb3MsIGNyZWRlbnRpYWxJZExl
bmd0aCk7Ci0gICAgcmV0dXJuIGNyZWRlbnRpYWxJZDsKKyAgICByZXR1cm4geyB1MmZEYXRhLmRh
dGEoKSArIHBvcywgY3JlZGVudGlhbElkTGVuZ3RoIH07CiB9CiAKIHN0YXRpYyBWZWN0b3I8dWlu
dDhfdD4gY3JlYXRlQXR0ZXN0ZWRDcmVkZW50aWFsRGF0YUZyb21VMmZSZWdpc3RlclJlc3BvbnNl
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBw
dWJsaWNLZXkpCkBAIC0xMjQsMTIgKzExOSwxMCBAQCBzdGF0aWMgY2Jvcjo6Q0JPUlZhbHVlOjpN
YXBWYWx1ZSBjcmVhdGVGaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnRGcm9tVTJmUmVnaXN0ZXJSZQog
ICAgIGlmICgheDUwOUxlbmd0aCB8fCB1MmZEYXRhLnNpemUoKSA8IG9mZnNldCArIHg1MDlMZW5n
dGgpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBWZWN0b3I8dWludDhfdD4geDUwOTsKLSAg
ICB4NTA5LmFwcGVuZCh1MmZEYXRhLmRhdGEoKSArIG9mZnNldCwgeDUwOUxlbmd0aCk7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHg1MDkgeyB1MmZEYXRhLmRhdGEoKSArIG9mZnNldCwgeDUwOUxlbmd0
aCB9OwogICAgIG9mZnNldCArPSB4NTA5TGVuZ3RoOwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHNp
Z25hdHVyZTsKLSAgICBzaWduYXR1cmUuYXBwZW5kKHUyZkRhdGEuZGF0YSgpICsgb2Zmc2V0LCB1
MmZEYXRhLnNpemUoKSAtIG9mZnNldCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZSB7
IHUyZkRhdGEuZGF0YSgpICsgb2Zmc2V0LCB1MmZEYXRhLnNpemUoKSAtIG9mZnNldCB9OwogICAg
IGlmIChzaWduYXR1cmUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC0xODQs
OSArMTc3LDcgQEAgUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZFUy
ZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGMKICAgICBhdXRvIGF1dGhEYXRhID0g
YnVpbGRBdXRoRGF0YShycElkLCBmbGFncywgY291bnRlciwgeyB9KTsKIAogICAgIC8vIEZJWE1F
OiBGaW5kIGEgd2F5IHRvIHJlbW92ZSB0aGUgbmVlZCBvZiBjb25zdHJ1Y3RpbmcgYSB2ZWN0b3Ig
aGVyZS4KLSAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlOwotICAgIHNpZ25hdHVyZS5hcHBl
bmQodTJmRGF0YS5kYXRhKCkgKyBzaWduYXR1cmVJbmRleCwgdTJmRGF0YS5zaXplKCkgLSBzaWdu
YXR1cmVJbmRleCk7Ci0KKyAgICBWZWN0b3I8dWludDhfdD4gc2lnbmF0dXJlIHsgdTJmRGF0YS5k
YXRhKCkgKyBzaWduYXR1cmVJbmRleCwgdTJmRGF0YS5zaXplKCkgLSBzaWduYXR1cmVJbmRleCB9
OwogICAgIHJldHVybiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShrZXlI
YW5kbGUsIGF1dGhEYXRhLCBzaWduYXR1cmUsIHsgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBh
ZmQ3NDBhMWVjMTBhNjQ0ZGU1NzZiZTRmYTg0NDQ4ZjcyNTdkMzI3Li5lNWUyN2Q0ZjQ1ZjU3MmNk
ZDYzNjRlNDE0YmJhMzk4ZjlmNDU0NmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC03MjAsOSArNzIwLDcg
QEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUoV2ViU29ja2V0RnJhbWU6
Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIKICAgICBhdXRvIGZyYW1lID0gbWFrZVVuaXF1ZTxR
dWV1ZWRGcmFtZT4oKTsKICAgICBmcmFtZS0+b3BDb2RlID0gb3BDb2RlOwogICAgIGZyYW1lLT5m
cmFtZVR5cGUgPSBRdWV1ZWRGcmFtZVR5cGVWZWN0b3I7Ci0gICAgZnJhbWUtPnZlY3RvckRhdGEu
cmVzaXplKGRhdGFMZW5ndGgpOwotICAgIGlmIChkYXRhTGVuZ3RoKQotICAgICAgICBtZW1jcHko
ZnJhbWUtPnZlY3RvckRhdGEuZGF0YSgpLCBkYXRhLCBkYXRhTGVuZ3RoKTsKKyAgICBmcmFtZS0+
dmVjdG9yRGF0YSA9IHsgZGF0YSwgZGF0YUxlbmd0aCB9OwogICAgIG1fb3V0Z29pbmdGcmFtZVF1
ZXVlLmFwcGVuZChXVEZNb3ZlKGZyYW1lKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKaW5k
ZXggZDI4NTY2YjkxMzM4YmQ4ZDYzOTIzMWU1ODY3ZGI4N2YyM2ViNGE5Mi4uZDdkMDIzZjFjYmQ3
MjNmMDRhN2NjMjg1ZDcxY2Q3OGIzMGJmY2U0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKQEAg
LTgyLDExICs4MiwxMCBAQCB2b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCog
aW5wdXQsIHNpemVfdCBsZW5ndGgpCiAKIFZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNv
bXB1dGVIYXNoKCkKIHsKLSAgICBpbnQgZGlnZXN0TGVuID0gZ2NyeV9tZF9nZXRfYWxnb19kbGVu
KG1fY29udGV4dC0+YWxnb3JpdGhtKTsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGRpZ2Vz
dExlbik7CisgICAgc2l6ZV90IGRpZ2VzdExlbiA9IGdjcnlfbWRfZ2V0X2FsZ29fZGxlbihtX2Nv
bnRleHQtPmFsZ29yaXRobSk7CiAKICAgICBnY3J5X21kX2ZpbmFsKG1fY29udGV4dC0+bWQpOwot
ICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBnY3J5X21kX3JlYWQobV9jb250ZXh0LT5tZCwgMCks
IGRpZ2VzdExlbik7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdCB7IGdjcnlfbWRfcmVhZCht
X2NvbnRleHQtPm1kLCAwKSwgZGlnZXN0TGVuIH07CiAgICAgZ2NyeV9tZF9jbG9zZShtX2NvbnRl
eHQtPm1kKTsKIAogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVD
cnlwdG8uY3BwCmluZGV4IGI1NDkxOTFhN2RmMGIzZTI3MTVhN2MwMjAzY2ZkNjk2ZDExMGYwNDcu
LjgzNTg0MGRiNWY1ZTdiYTAxYjIwNzc0MTgwMGQwOWZjNWVjNTE1ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9TdWJ0bGVDcnlwdG8uY3BwCkBAIC00NTgsOSArNDU4LDcgQEAgc3RhdGljIE9wdGlv
bmFsPEtleURhdGE+IHRvS2V5RGF0YShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3JtYXQsIFN1
YnRsZUNyeXB0bzoKICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgIFtdIChhdXRvJiBidWZmZXJTb3VyY2UpIC0+IE9wdGlvbmFs
PEtleURhdGE+IHsKLSAgICAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1
ZmZlclNvdXJjZS0+ZGF0YSgpKSwgYnVmZmVyU291cmNlLT5ieXRlTGVuZ3RoKCkpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBLZXlEYXRhIHsgcmVzdWx0IH07CisgICAgICAgICAgICAgICAgcmV0
dXJuIEtleURhdGEgeyBWZWN0b3IgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVy
U291cmNlLT5kYXRhKCkpLCBidWZmZXJTb3VyY2UtPmJ5dGVMZW5ndGgoKSB9IH07CiAgICAgICAg
ICAgICB9CiAgICAgICAgICk7CiAgICAgY2FzZSBTdWJ0bGVDcnlwdG86OktleUZvcm1hdDo6Sndr
OgpAQCAtNDgxLDkgKzQ3OSw3IEBAIHN0YXRpYyBPcHRpb25hbDxLZXlEYXRhPiB0b0tleURhdGEo
U3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBTdWJ0bGVDcnlwdG86CiAKIHN0YXRpYyBW
ZWN0b3I8dWludDhfdD4gY29weVRvVmVjdG9yKEJ1ZmZlclNvdXJjZSYmIGRhdGEpCiB7Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGFWZWN0b3I7Ci0gICAgZGF0YVZlY3Rvci5hcHBlbmQoZGF0YS5k
YXRhKCksIGRhdGEubGVuZ3RoKCkpOwotICAgIHJldHVybiBkYXRhVmVjdG9yOworICAgIHJldHVy
biB7IGRhdGEuZGF0YSgpLCBkYXRhLmxlbmd0aCgpIH07CiB9CiAKIHN0YXRpYyBib29sIGlzU3Vw
cG9ydGVkRXhwb3J0S2V5KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAK
aW5kZXggOTY2ODc1MGMwNDA2ZTc4MjBjN2Q3OTU5NGQ5NDhkOGQyYmMyZDg3My4uNmFkNDAzZjQ1
NThhYzg2ODRhODYwNGUwNWZjNDRjN2RlZWJmODQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHAKQEAgLTUyMSwxMyArNTIxLDgg
QEAgYm9vbCBDcnlwdG9LZXlFQzo6cGxhdGZvcm1BZGRGaWVsZEVsZW1lbnRzKEpzb25XZWJLZXkm
IGp3aykgY29uc3QKICAgICBpZiAocU1QSSkgewogICAgICAgICBhdXRvIHEgPSBtcGlEYXRhKHFN
UEkpOwogICAgICAgICBpZiAocSAmJiBxLT5zaXplKCkgPT0gY3VydmVVbmNvbXByZXNzZWRQb2lu
dFNpemUobV9jdXJ2ZSkpIHsKLSAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBhOwotICAgICAg
ICAgICAgYS5hcHBlbmQocS0+ZGF0YSgpICsgMSwgdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6
ZSk7Ci0gICAgICAgICAgICBqd2sueCA9IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGEpOwotCi0g
ICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYjsKLSAgICAgICAgICAgIGIuYXBwZW5kKHEtPmRh
dGEoKSArIDEgKyB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplLCB1bmNvbXByZXNzZWRGaWVs
ZEVsZW1lbnRTaXplKTsKLSAgICAgICAgICAgIGp3ay55ID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJp
bmcoYik7CisgICAgICAgICAgICBqd2sueCA9IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKFZlY3Rv
cjx1aW50OF90PiB7IHEtPmRhdGEoKSArIDEsIHVuY29tcHJlc3NlZEZpZWxkRWxlbWVudFNpemUg
fSk7CisgICAgICAgICAgICBqd2sueSA9IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKFZlY3Rvcjx1
aW50OF90PiB7IHEtPmRhdGEoKSArIDEgKyB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplLCB1
bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplIH0pOwogICAgICAgICB9CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleUVDTWFjLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvS2V5RUNNYWMuY3BwCmluZGV4IDU0MGYzM2Jj
YmU0MmFhOWFmNGI3ZmVmOWRjMDBlMjlmNzBhMTZjNjAuLmY0N2UxZDhhNzM3MGIyNjU2ZjA5OGMx
NTNlYzUxZDQ0OGFlYWNlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvS2V5RUNNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
S2V5RUNNYWMuY3BwCkBAIC0zNTQsOCArMzU0LDcgQEAgUmVmUHRyPENyeXB0b0tleUVDPiBDcnlw
dG9LZXlFQzo6cGxhdGZvcm1JbXBvcnRQa2NzOChDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGkK
ICAgICBpbmRleCArPSBieXRlc1VzZWRUb0VuY29kZWRMZW5ndGgoa2V5RGF0YVtpbmRleF0pICsg
MTsgLy8gUmVhZCBsZW5ndGgsIEluaXRpYWxPY3RldAogCiAgICAgLy8gS2V5QmluYXJ5ID0gdW5j
b21wcmVzc2VkIHBvaW50ICsgcHJpdmF0ZSBrZXkKLSAgICBWZWN0b3I8dWludDhfdD4ga2V5Qmlu
YXJ5OwotICAgIGtleUJpbmFyeS5hcHBlbmQoa2V5RGF0YS5kYXRhKCkgKyBpbmRleCwga2V5RGF0
YS5zaXplKCkgLSBpbmRleCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGtleUJpbmFyeSB7IGtleURh
dGEuZGF0YSgpICsgaW5kZXgsIGtleURhdGEuc2l6ZSgpIC0gaW5kZXggfTsKICAgICBpZiAoIWRv
ZXNVbmNvbXByZXNzZWRQb2ludE1hdGNoTmFtZWRDdXJ2ZShjdXJ2ZSwga2V5QmluYXJ5LnNpemUo
KSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGtleUJpbmFyeS5hcHBlbmQoa2V5RGF0
YS5kYXRhKCkgKyBwcml2YXRlS2V5UG9zLCBnZXRLZXlTaXplRnJvbU5hbWVkQ3VydmUoY3VydmUp
IC8gOCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRD
cnlwdG9LZXlXcmFwTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVk
Q3J5cHRvS2V5V3JhcE1hYy5tbQppbmRleCA1NzFkYTQ3YWEyNDM3Y2JmZDY3MzY5NTc0OTg4YTNj
MWFhYTE2ODJkLi5hN2YwOGZkMTc3NDMzZmYyYmY2NTQwN2ZjZGRhMjY4MjNkY2U0ZGM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFw
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tl
eVdyYXBNYWMubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgog
I2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3NwaS9j
b2NvYS9TZWN1cml0eVNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC02MiwxMyArNjMsNiBAQCBjb25zdCBOU1N0cmluZyog
dGFnS2V5ID0gQCJ0YWciOwogCiBjb25zdCBzaXplX3QgbWFzdGVyS2V5U2l6ZUluQnl0ZXMgPSAx
NjsKIAotaW5saW5lIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3JGcm9tTlNEYXRhKE5TRGF0YSogZGF0
YSkKLXsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmQoKGNv
bnN0IHVpbnQ4X3QqKVtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQogc3RhdGljIE5TU3RyaW5nKiBtYXN0ZXJLZXlBY2NvdW50TmFtZUZvckN1cnJl
bnRBcHBsaWNhdGlvbigpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFFU19HQ01PcGVu
U1NMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFF
U19HQ01PcGVuU1NMLmNwcAppbmRleCA0YzJkYjMxZGQyZTI4Y2JhMGI3MThmMjlhYjQzYTQyNGYz
ZjI2Zjk4Li4yNzJhNjI0MzM5ZWE0NjQ1NWQ1NzVjYTA4ZGRhY2Y3ZWVlYmI3NTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfR0NN
T3BlblNTTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxn
b3JpdGhtQUVTX0dDTU9wZW5TU0wuY3BwCkBAIC0xMTUsOCArMTE1LDcgQEAgc3RhdGljIE9wdGlv
bmFsPFZlY3Rvcjx1aW50OF90Pj4gY3J5cHREZWNyeXB0KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
a2V5LCBjb25zdAogICAgIGludCBjaXBoZXJUZXh0TGVuID0gY2lwaGVyVGV4dC5zaXplKCkgLSB0
YWdMZW5ndGg7CiAKICAgICBWZWN0b3I8dWludDhfdD4gcGxhaW5UZXh0KGNpcGhlclRleHQuc2l6
ZSgpKTsKLSAgICBWZWN0b3I8dWludDhfdD4gdGFnKHRhZ0xlbmd0aCk7Ci0gICAgbWVtY3B5KHRh
Zy5kYXRhKCksIGNpcGhlclRleHQuZGF0YSgpICsgY2lwaGVyVGV4dExlbiwgdGFnTGVuZ3RoKTsK
KyAgICBWZWN0b3I8dWludDhfdD4gdGFnIHsgY2lwaGVyVGV4dC5kYXRhKCkgKyBjaXBoZXJUZXh0
TGVuLCB0YWdMZW5ndGggfTsKIAogICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgY29u
dGV4dAogICAgIGlmICghKGN0eCA9IEV2cENpcGhlckN0eFB0cihFVlBfQ0lQSEVSX0NUWF9uZXco
KSkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKaW5kZXggODE2ZmVkOTRlMTRkYzE3YzFlM2NjMzc5
OTI0NzdmZTVmZGIxYWVkYS4uMmYzY2RjZWNjYjMyYWEyOTIzMzhkMzI3ZjdmNDU0NTQxNGI0ZmQz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCkBAIC0xMTMsMTEgKzExMyw4IEBAIEJsb2I6OkJs
b2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IFN0CiAgICAgLCBtX3R5cGUoY29udGVudFR5cGUpCiAgICAgLCBtX3NpemUo
YnVmZmVyLnNpemUoKSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBkYXRhLmFw
cGVuZChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKLQogICAgIFZlY3RvcjxCbG9iUGFy
dD4gYmxvYlBhcnRzOwotICAgIGJsb2JQYXJ0cy5hcHBlbmQoQmxvYlBhcnQoV1RGTW92ZShkYXRh
KSkpOworICAgIGJsb2JQYXJ0cy5hcHBlbmQoVmVjdG9yIHsgYnVmZmVyLmRhdGFBc1VJbnQ4UHRy
KCksIGJ1ZmZlci5zaXplKCkgfSk7CiAgICAgbV9pbnRlcm5hbFVSTCA9IEJsb2JVUkw6OmNyZWF0
ZUludGVybmFsVVJMKCk7CiAgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9i
VVJMKG1faW50ZXJuYWxVUkwsIFdURk1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0
b3JlLmgKaW5kZXggN2FiZGQzNDM4MDQ5MDZhZmRkYTFjNjZiMTNmYjY0MmZhNGM0ZGQwYy4uMGM0
NDEzMjUwZThkZTY5NDM3OWNmZjBkZWQwZGRjOTI3ZmViMzk4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCkBAIC0yMDUs
OCArMjA1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLCBtX3ByZW11bHRpcGx5QWxwaGEob3RoZXIu
bV9wcmVtdWx0aXBseUFscGhhKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX3NpemUuaXNFbXB0
eSgpICYmICFpc092ZXJTaXplKG1fc2l6ZSkpOwotICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVy
OwotICAgICAgICBidWZmZXIuYXBwZW5kKG90aGVyLm1fcGl4ZWxzLT5kYXRhKCksIG90aGVyLm1f
cGl4ZWxzLT5zaXplKCkpOworICAgICAgICBWZWN0b3I8Y2hhcj4gYnVmZmVyIHsgb3RoZXIubV9w
aXhlbHMtPmRhdGEoKSwgb3RoZXIubV9waXhlbHMtPnNpemUoKSB9OwogICAgICAgICBtX3BpeGVs
cyA9IFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICBtX3BpeGVsc1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihjb25zdF9j
YXN0PGNoYXIqPihtX3BpeGVscy0+ZGF0YSgpKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWly
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
clV0aWxpdGllc0NhaXJvLmNwcAppbmRleCBkNzk3Mjg1NTViN2RiOWI1OWNiNjE1YzU1YTdhN2E2
ODUxY2I1N2M4Li41YTRkM2E1MDg1OWE1ZTg0NGM3ZjQyNDEzMDY5MTcxNDgwMmIwMWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
clV0aWxpdGllc0NhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlclV0aWxpdGllc0NhaXJvLmNwcApAQCAtMTIzLDkgKzEyMyw3IEBA
IFZlY3Rvcjx1aW50OF90PiBkYXRhKGNhaXJvX3N1cmZhY2VfdCogaW1hZ2UsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRvCiAgICAgaWYgKCFlbmNvZGVJbWFnZShpbWFnZSwgbWlt
ZVR5cGUsIHF1YWxpdHksIGJ1ZmZlciwgYnVmZmVyU2l6ZSkpCiAgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICBWZWN0b3I8dWludDhfdD4gaW1hZ2VEYXRhOwotICAgIGltYWdlRGF0YS5hcHBlbmQo
YnVmZmVyLmdldCgpLCBidWZmZXJTaXplKTsKLSAgICByZXR1cm4gaW1hZ2VEYXRhOworICAgIHJl
dHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci5nZXQoKSksIGJ1
ZmZlclNpemUgfTsKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oR1RLKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uY3BwCmluZGV4IGM5YmUyNzg4OWU0ZDJlNTMxMmIzZWM5M2EzMGY0YTdjOGU3Njkz
OTMuLjUwNWY4NDVjOWJiZmIyZWM5MGQ1YWRmMWVjNDAzNTRjZDUxZGFhNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uY3BwCkBAIC00MTksOSArNDE5LDcgQEAgdm9pZCBjb25uZWN0U2ltcGxl
QnVzTWVzc2FnZUNhbGxiYWNrKEdzdEVsZW1lbnQqIHBpcGVsaW5lKQogCiBWZWN0b3I8dWludDhf
dD4gR3N0TWFwcGVkQnVmZmVyOjpjcmVhdGVWZWN0b3IoKSBjb25zdAogewotICAgIFZlY3Rvcjx1
aW50OF90PiB2ZWN0b3I7Ci0gICAgdmVjdG9yLmFwcGVuZChkYXRhKCksIHNpemUoKSk7Ci0gICAg
cmV0dXJuIHZlY3RvcjsKKyAgICByZXR1cm4geyBkYXRhKCksIHNpemUoKSB9OwogfQogCiBSZWY8
U2hhcmVkQnVmZmVyPiBHc3RNYXBwZWRPd25lZEJ1ZmZlcjo6Y3JlYXRlU2hhcmVkQnVmZmVyKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvQ0RNUHJveHlDbGVhcktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuY3BwCmluZGV4IGJlMTU0MjU1ZjNkNzY4
MzE1ZTM1Njg3NjkwNDc2ZjdmOGFlM2JiZjIuLmNmODIwZDE2NWIzZDBkMGU1YjhkMDU4YTU2MmIz
NDkxNDEzODgyMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmNwcApAQCAt
MTE4LDggKzExOCw3IEBAIGJvb2wgQ0RNUHJveHlDbGVhcktleTo6Y2VuY1NldERlY3J5cHRpb25L
ZXkoY2VuY0RlY3J5cHRDb250ZXh0JiBpbikKICAgICAvLyBGSVhNRTogVW5uZWNlc3NhcnkgY29w
eSwgY2FuIHdlIGF2b2lkIHRoaXMgd2hpbGUgc3RpbGwgZXhwb3NpbmcKICAgICAvLyBhIG5vbi1H
U3RyZWFtZXItc3BlY2lmaWMgRGVjcnlwdElucHV0IEFQST8gVGhlc2UgYnVmZmVycyBhcmUKICAg
ICAvLyBzbWFsbCAoMTYgYnl0ZXMpLCBzbyBub3QgYSBodWdlIGRlYWwsIEkgZ3Vlc3MuCi0gICAg
VmVjdG9yPHVpbnQ4X3Q+IGtleUlEVmVjOwotICAgIGtleUlEVmVjLmFwcGVuZChpbi5rZXlJRCwg
aW4ua2V5SURTaXplSW5CeXRlcyk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGtleUlEVmVjIHsgaW4u
a2V5SUQsIGluLmtleUlEU2l6ZUluQnl0ZXMgfTsKIAogICAgIGF1dG8ga2V5RGF0YSA9IGdldE9y
V2FpdEZvcktleVZhbHVlKGtleUlEVmVjLCBXVEZNb3ZlKGluLmNkbVByb3h5RGVjcnlwdGlvbkNs
aWVudCkpOwogICAgIGlmICgha2V5RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2Nr
LmNwcAppbmRleCA3YTBlYmUzOGYyYTIwOTIzMTc5ODVmODQxODc5Y2FhYTg5NzJlNzRhLi5mODIx
NWMwZTBlYzkwODkyYmVhYjU5OGMxYzMxMGE2NDYzNTFiNDkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZU1vY2suY3BwCkBAIC05Niw4ICs5Niw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVNb2NrOjpmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxl
cikKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgewogICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9idWZmZXJMb2NrIH07Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1
ZShtX2J1ZmZlci5sZW5ndGgoKSk7Ci0gICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhKCksIG1fYnVm
ZmVyLmNoYXJhY3RlcnM4KCksIG1fYnVmZmVyLmxlbmd0aCgpKTsKKyAgICAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHZhbHVlIHsgbV9idWZmZXIuY2hhcmFjdGVyczgoKSwgbV9idWZmZXIubGVuZ3RoKCkg
fTsKICAgICAgICAgbV9idWZmZXIuY2xlYXIoKTsKICAgICAgICAgYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggNjFjZDM4ZjY3YjFjOGViYTA2ODQ2N2Q0
ZDZjNzEyNjRiZjI5YWJkMy4uNzEzMGEwYzgxZWY3MjBmNDkwZTg3MmM1ODBkOTdhN2JmZTM1NjE5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAg
LTE2NSw5ICsxNjUsNyBAQCBGb3JtRGF0YUVsZW1lbnQgRm9ybURhdGFFbGVtZW50Ojppc29sYXRl
ZENvcHkoKSBjb25zdAogewogICAgIHJldHVybiBzd2l0Y2hPbihkYXRhLAogICAgICAgICBbXSAo
Y29uc3QgVmVjdG9yPGNoYXI+JiBieXRlcykgewotICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGNv
cHk7Ci0gICAgICAgICAgICBjb3B5LmFwcGVuZChieXRlcy5kYXRhKCksIGJ5dGVzLnNpemUoKSk7
Ci0gICAgICAgICAgICByZXR1cm4gRm9ybURhdGFFbGVtZW50KFdURk1vdmUoY29weSkpOworICAg
ICAgICAgICAgcmV0dXJuIEZvcm1EYXRhRWxlbWVudChWZWN0b3IgeyBieXRlcy5kYXRhKCksIGJ5
dGVzLnNpemUoKSB9KTsKICAgICAgICAgfSwgW10gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5j
b2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewogICAgICAgICAgICAgcmV0dXJuIEZvcm1EYXRhRWxl
bWVudChmaWxlRGF0YS5pc29sYXRlZENvcHkoKSk7CiAgICAgICAgIH0sIFtdIChjb25zdCBGb3Jt
RGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YSYgYmxvYkRhdGEpIHsKQEAgLTE4NSw5ICsxODMs
NyBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBz
aXplKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIFZlY3Rvcjxj
aGFyPiB2ZWN0b3I7Ci0gICAgdmVjdG9yLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihkYXRhKSwgc2l6ZSk7Ci0gICAgbV9lbGVtZW50cy5hcHBlbmQoV1RGTW92ZSh2ZWN0b3Ip
KTsKKyAgICBtX2VsZW1lbnRzLmFwcGVuZChWZWN0b3IgeyByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihkYXRhKSwgc2l6ZSB9KTsKIH0KIAogdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCmluZGV4IGE2MzJhMWMwZTEwMmJiNDI3
NmU0MTM0OGUwMTg3MjhjNzdlYjI5MzEuLjIxZjA4YTlkYjNhZGU4MGVhNWI5YzhlYWJmY2E2MjA3
MzZhMjQxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9PcGVuU1NMSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvT3BlblNTTEhlbHBlci5jcHAKQEAgLTExNiw5ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmIChsZW5ndGggPCAwKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAot
ICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAgICAgICByZXN1bHQuYXBwZW5kKGRh
dGEsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBWZWN0
b3IgeyBkYXRhLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbmd0aCkgfTsKICAgICB9CiAKICAgICBT
dHJpbmcgZ2V0RGF0YUFzU3RyaW5nKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCBhYTE0MWQ4ZWY3NTJiODQ2NmY1ZDdlMTEwZmUyODZiOTE0MTJiZmY4Li44Y2Yw
MmIxNzllYmZiZGQzNzdhNmE1NDhkMGM2YTdhZjY5MTc3Zjk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC0zNzQ5LDggKzM3NDksNyBAQCBSZWY8QXJyYXlCdWZmZXI+IElu
dGVybmFsczo6c2VyaWFsaXplT2JqZWN0KGNvbnN0IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JgogCiBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJbnRlcm5hbHM6OmRlc2VyaWFsaXpl
QnVmZmVyKEFycmF5QnVmZmVyJiBidWZmZXIpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+
IGJ5dGVzOwotICAgIGJ5dGVzLmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVm
ZmVyLmRhdGEoKSksIGJ1ZmZlci5ieXRlTGVuZ3RoKCkpOworICAgIFZlY3Rvcjx1aW50OF90PiBi
eXRlcyB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZGF0YSgpKSwgYnVmZmVy
LmJ5dGVMZW5ndGgoKSB9OwogICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0
KFdURk1vdmUoYnl0ZXMpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3Bh
cnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDMyNDg0NTU0Y2Y5ZDQ3M2Vh
MmU5NzFkMWUxZWE5ZGYxYmMzODAxMjkuLjExNWFiYjFiYmU0MmI5OGI5ZTQwYjdiMTM3YWVkNDZj
NGYzZjdkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTQ5MCwxMCArNDkwLDcgQEAgc3RhdGljIHZvaWQq
IG9wZW5GdW5jKGNvbnN0IGNoYXIqIHVyaSkKICAgICAgICAgfQogICAgIH0KIAotICAgIFZlY3Rv
cjxjaGFyPiBidWZmZXI7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIGJ1ZmZlci5hcHBlbmQoZGF0
YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOwotICAgIHJldHVybiBuZXcgT2Zmc2V0QnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSk7CisgICAgcmV0dXJuIG5ldyBPZmZzZXRCdWZmZXIoeyBkYXRhLT5kYXRh
KCksIGRhdGEtPnNpemUoKSB9KTsKIH0KIAogc3RhdGljIGludCByZWFkRnVuYyh2b2lkKiBjb250
ZXh0LCBjaGFyKiBidWZmZXIsIGludCBsZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
QXJyYXlSZWZlcmVuY2UuaAppbmRleCAzNDY3YmRmZGI2YTFjNmVkNDM0MTI1MWJmODhmMDYyMTZk
MTg2NjczLi4xODFkNGRlNTI2ZjlhNzRkMzY2ZmQ4Y2JlNWFhMzVhM2NiYWMwNmQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKQEAgLTEwNywxMCArMTA3
LDcgQEAgcHVibGljOgogCiAgICAgVmVjdG9yPFQ+IHZlY3RvcigpIGNvbnN0CiAgICAgewotICAg
ICAgICBWZWN0b3I8VD4gcmVzdWx0OwotICAgICAgICBpZiAoIWlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQobV9kYXRhLCBFeHRlbnQpOwotICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICByZXR1cm4geyBtX2RhdGEsIEV4dGVudCB9OwogICAgIH0KIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggN2E3N2MwYWJjN2Y4MmIyNDA3OGNjYzEx
YzU0NGQ1NWMzYTE2ZTllYi4uYmJlMTM1OThhOWEzMjYwODkzMmM4ODNmMGJhNDQzZDliMmQxMzA5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTU0LDYgKzU0LDcgQEAKICNpbXBv
cnQgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQpAQCAtMjkzLDEyICsyOTQsNiBAQCAtICh2b2lkKWNhbmNlbAogfQogCiAjaWYgRU5BQkxFKFdF
Ql9BVVRITikKLXN0YXRpYyBWZWN0b3I8dWludDhfdD4gdmVjdG9yRnJvbU5TRGF0YShOU0RhdGEq
IGRhdGEpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5k
KChjb25zdCB1aW50OF90KilkYXRhLmJ5dGVzLCBkYXRhLmxlbmd0aCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KIAogc3RhdGljIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnM6OlJwRW50aXR5IHB1YmxpY0tleUNyZWRlbnRpYWxScEVudGl0eShfV0tQdWJsaWNLZXlD
cmVkZW50aWFsUmVseWluZ1BhcnR5RW50aXR5ICpycEVudGl0eSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDM2YWYxM2U3
NTlmYTA1MzNmZGFjOGZiNTNhYmFmMzUwZTM4YjIzZDAuLjNhYjgzM2M4ZTA3Y2ZmZmJkNTg3MzQw
NzNhYWM3ODFjNzBjYmVhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvSWNvbkRhdGFiYXNlLmNwcApAQCAtNjM4LDkgKzYzOCw3IEBAIHZvaWQgSWNvbkRhdGFi
YXNlOjpzZXRJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IHVuc2ln
bmVkIGNoYXIqCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8Y2hhcj4gZGF0
YTsKLSAgICBkYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaWNvbkRhdGFTaXplKTsKLSAgICBk
YXRhLmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihpY29uRGF0YSksIGljb25E
YXRhU2l6ZSk7CisgICAgVmVjdG9yPGNoYXI+IGRhdGEgeyByZWludGVycHJldF9jYXN0PGNvbnN0
IGNoYXIqPihpY29uRGF0YSksIGljb25EYXRhU2l6ZSB9OwogICAgIG1fd29ya1F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpY29uVVJMID0gaWNv
blVSTC5pc29sYXRlZENvcHkoKSwgaWNvbkRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBwYWdlVVJMID0g
cGFnZVVSTC5pc29sYXRlZENvcHkoKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK
ICAgICAgICAgaWYgKG1fZGIuaXNPcGVuKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNl
c3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24v
U3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCmluZGV4IDI2NTg5OGNmZDhmNWI3Zjcw
NzMzZGM1MTg4OGI1NjA4ZDhiMzdiYzcuLjIwMTM1YWQ4ODY0Njc5YTYzMDIzMGIwMmU5NjFiZGRl
ZGUyYTA3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0
aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3Jp
emF0aW9uU2Vzc2lvbi5tbQpAQCAtNDMsMTMgKzQzLDYgQEAgbmFtZXNwYWNlIHsKIGNvbnN0IGNo
YXIqIHNvQXV0aG9yaXphdGlvblBvc3REaWRTdGFydE1lc3NhZ2VUb1BhcmVudCA9ICI8c2NyaXB0
PnBhcmVudC5wb3N0TWVzc2FnZSgnU09BdXRob3JpemF0aW9uRGlkU3RhcnQnLCAnKicpOzwvc2Ny
aXB0PiI7CiBjb25zdCBjaGFyKiBzb0F1dGhvcml6YXRpb25Qb3N0RGlkQ2FuY2VsTWVzc2FnZVRv
UGFyZW50ID0gIjxzY3JpcHQ+cGFyZW50LnBvc3RNZXNzYWdlKCdTT0F1dGhvcml6YXRpb25EaWRD
YW5jZWwnLCAnKicpOzwvc2NyaXB0PiI7CiAKLXN0YXRpYyBpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+
IGNvbnZlcnRCeXRlc1RvVmVjdG9yKGNvbnN0IHVpbnQ4X3QgYnl0ZUFycmF5W10sIGNvbnN0IHNp
emVfdCBsZW5ndGgpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICByZXN1bHQu
YXBwZW5kKGJ5dGVBcnJheSwgbGVuZ3RoKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB9IC8v
IG5hbWVzcGFjZQogCiBSZWY8U09BdXRob3JpemF0aW9uU2Vzc2lvbj4gU3ViRnJhbWVTT0F1dGhv
cml6YXRpb25TZXNzaW9uOjpjcmVhdGUoU09BdXRob3JpemF0aW9uICpzb0F1dGhvcml6YXRpb24s
IFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgV2ViUGFnZVBy
b3h5JiBwYWdlLCBDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyLCBGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCkKQEAgLTc3LDcgKzcwLDcgQEAgU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9u
Ojp+U3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uKCkKIHZvaWQgU3ViRnJhbWVTT0F1dGhv
cml6YXRpb25TZXNzaW9uOjpmYWxsQmFja1RvV2ViUGF0aEludGVybmFsKCkKIHsKICAgICBBU1NF
UlQobmF2aWdhdGlvbkFjdGlvbigpKTsKLSAgICBhcHBlbmRSZXF1ZXN0VG9Mb2FkKFVSTChuYXZp
Z2F0aW9uQWN0aW9uKCktPnJlcXVlc3QoKS51cmwoKSksIGNvbnZlcnRCeXRlc1RvVmVjdG9yKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvQXV0aG9yaXphdGlvblBvc3REaWRDYW5j
ZWxNZXNzYWdlVG9QYXJlbnQpLCBzdHJsZW4oc29BdXRob3JpemF0aW9uUG9zdERpZENhbmNlbE1l
c3NhZ2VUb1BhcmVudCkpKTsKKyAgICBhcHBlbmRSZXF1ZXN0VG9Mb2FkKFVSTChuYXZpZ2F0aW9u
QWN0aW9uKCktPnJlcXVlc3QoKS51cmwoKSksIFZlY3RvciB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KHNvQXV0aG9yaXphdGlvblBvc3REaWRDYW5jZWxNZXNzYWdlVG9QYXJlbnQp
LCBzdHJsZW4oc29BdXRob3JpemF0aW9uUG9zdERpZENhbmNlbE1lc3NhZ2VUb1BhcmVudCkgfSk7
CiAgICAgYXBwZW5kUmVxdWVzdFRvTG9hZChVUkwobmF2aWdhdGlvbkFjdGlvbigpLT5yZXF1ZXN0
KCkudXJsKCkpLCBTdHJpbmcobmF2aWdhdGlvbkFjdGlvbigpLT5yZXF1ZXN0KCkuaHR0cFJlZmVy
cmVyKCkpKTsKIH0KIApAQCAtOTIsNyArODUsNyBAQCB2b2lkIFN1YkZyYW1lU09BdXRob3JpemF0
aW9uU2Vzc2lvbjo6Y29tcGxldGVJbnRlcm5hbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcwog
ICAgICAgICBmYWxsQmFja1RvV2ViUGF0aEludGVybmFsKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgYXBwZW5kUmVxdWVzdFRvTG9hZChVUkwocmVzcG9uc2UudXJsKCkpLCBjb252ZXJ0
Qnl0ZXNUb1ZlY3RvcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVz
KSwgZGF0YS5sZW5ndGgpKTsKKyAgICBhcHBlbmRSZXF1ZXN0VG9Mb2FkKFVSTChyZXNwb25zZS51
cmwoKSksIFZlY3RvciB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0
ZXMpLCBkYXRhLmxlbmd0aCB9KTsKIH0KIAogdm9pZCBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNl
c3Npb246OmJlZm9yZVN0YXJ0KCkKQEAgLTEwMCw3ICs5Myw3IEBAIHZvaWQgU3ViRnJhbWVTT0F1
dGhvcml6YXRpb25TZXNzaW9uOjpiZWZvcmVTdGFydCgpCiAgICAgLy8gQ2FuY2VsbGVkIHRoZSBj
dXJyZW50IGxvYWQgYmVmb3JlIGxvYWRpbmcgdGhlIGRhdGEgdG8gcG9zdCBTT0F1dGhvcml6YXRp
b25EaWRTdGFydCB0byB0aGUgcGFyZW50IGZyYW1lLgogICAgIGludm9rZUNhbGxiYWNrKHRydWUp
OwogICAgIEFTU0VSVChuYXZpZ2F0aW9uQWN0aW9uKCkpOwotICAgIGFwcGVuZFJlcXVlc3RUb0xv
YWQoVVJMKG5hdmlnYXRpb25BY3Rpb24oKS0+cmVxdWVzdCgpLnVybCgpKSwgY29udmVydEJ5dGVz
VG9WZWN0b3IocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc29BdXRob3JpemF0aW9u
UG9zdERpZFN0YXJ0TWVzc2FnZVRvUGFyZW50KSwgc3RybGVuKHNvQXV0aG9yaXphdGlvblBvc3RE
aWRTdGFydE1lc3NhZ2VUb1BhcmVudCkpKTsKKyAgICBhcHBlbmRSZXF1ZXN0VG9Mb2FkKFVSTChu
YXZpZ2F0aW9uQWN0aW9uKCktPnJlcXVlc3QoKS51cmwoKSksIFZlY3RvciB7IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvQXV0aG9yaXphdGlvblBvc3REaWRTdGFydE1lc3NhZ2VU
b1BhcmVudCksIHN0cmxlbihzb0F1dGhvcml6YXRpb25Qb3N0RGlkU3RhcnRNZXNzYWdlVG9QYXJl
bnQpIH0pOwogfQogCiB2b2lkIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZGlkRmlu
aXNoTG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5LmNwcAppbmRleCBiOWZkYTI4ZWE5MDcyNGFjNmY1ZGNkNWZkOTNmMzg0MjZkNzQyMGU0Li4z
ZTI2NGZkNzYxN2ZhMWNlNzhiM2ZlMTc1YTQxNTcwMmIwNzIzZjdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTE2MywxMCArMTYz
LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVh
dGVTY3JpcHRGb3JFeHRlbnNpb24oY29uc3QgSW4KICAgICAgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoeyByZXR1cm5lZFZhbHVlIH0pOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgICAgIGRhdGEucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShkYXRhUmVmZXJlbmNlLnNpemUoKSk7Ci0gICAgICAgICAgICBkYXRhLmFw
cGVuZChkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOwotICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB7IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjph
ZG9wdChXVEZNb3ZlKGRhdGEpKS5wdHIoKSB9IH0pOworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB7IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChWZWN0b3IgeyBkYXRh
UmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkgfSkucHRyKCkgfSB9KTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5tbQppbmRl
eCBmMmYxOTNjNzUwMTI0YjhjZTYzMDVjMjc1MGE2MmExZjM0ZmFkOWI2Li40NWFjZGNiMmJkMmU5
NWYzYzE1ZmMwMDYwOWM1ZGFhZGU4OTUzYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENvbm5lY3Rp
b24ubW0KQEAgLTUxLDkgKzUxLDcgQEAgc3RhdGljIHZvaWQgcmVwb3J0UmVjZWl2ZWQodm9pZCog
Y29udGV4dCwgSU9SZXR1cm4gc3RhdHVzLCB2b2lkKiwgSU9ISURSZXBvcnRUeXAKICAgICBBU1NF
UlQocmVwb3J0SUQgPT0ga0hpZFJlcG9ydElkKTsKICAgICBBU1NFUlQocmVwb3J0TGVuZ3RoID09
IGtIaWRNYXhQYWNrZXRTaXplKTsKIAotICAgIFZlY3Rvcjx1aW50OF90PiByZXBvcnREYXRhOwot
ICAgIHJlcG9ydERhdGEuYXBwZW5kKHJlcG9ydCwgcmVwb3J0TGVuZ3RoKTsKLSAgICBjb25uZWN0
aW9uLT5yZWNlaXZlUmVwb3J0KFdURk1vdmUocmVwb3J0RGF0YSkpOworICAgIGNvbm5lY3Rpb24t
PnJlY2VpdmVSZXBvcnQoeyByZXBvcnQsIHN0YXRpY19jYXN0PHNpemVfdD4ocmVwb3J0TGVuZ3Ro
KSB9KTsKIH0KIAogSGlkQ29ubmVjdGlvbjo6SGlkQ29ubmVjdGlvbihJT0hJRERldmljZVJlZiBk
ZXZpY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXggZjIy
ZjBmOGI3YWRhOWVmODgwOTI2ZTE5MjQ0ZDIyMzI3ODFkOTVjOS4uYTIxZWYwMGNhMWFkZDFhN2I4
NjFhMzdmYWU1ZjNkODNjMzQ3NGFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRvci5tbQpAQCAtNDMsNiArNDMsNyBAQAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KKyNpbXBvcnQg
PHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0
eVNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9T
dHJpbmdIYXNoLmg+CkBAIC04OCwxOCArODksMTAgQEAgc3RhdGljIGlubGluZSBIYXNoU2V0PFN0
cmluZz4gcHJvZHVjZUhhc2hTZXQoY29uc3QgVmVjdG9yPFB1YmxpY0tleUNyZWRlbnRpYWxEZXMK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgaW5saW5lIFZlY3Rvcjx1aW50OF90PiB0
b1ZlY3RvcihOU0RhdGEgKmRhdGEpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAg
ICByZXN1bHQuYXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0
ZXMpLCBkYXRhLmxlbmd0aCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogc3RhdGljIGlubGlu
ZSBWZWN0b3I8dWludDhfdD4gYWFndWlkVmVjdG9yKCkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4g
cmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmQoYWFndWlkLCBhYWd1aWRMZW5ndGgpOwotICAgIHJl
dHVybiByZXN1bHQ7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFZlY3Rvcjx1aW50OF90Pj4g
YWFndWlkVmVjdG9yID0geyBhYWd1aWQsIGFhZ3VpZExlbmd0aCB9OworICAgIHJldHVybiBhYWd1
aWRWZWN0b3I7CiB9CiAKIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPE5TRGF0YT4gdG9OU0RhdGEo
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQpAQCAtMTUzLDcgKzE0Niw3IEBAIHN0YXRpYyBP
cHRpb25hbDxWZWN0b3I8UmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+PiBnZXRF
eGlzdGluZ0NyZWRlbnRpCiAgICAgVmVjdG9yPFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2U+PiByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc29ydGVk
QXR0cmlidXRlc0FycmF5LmNvdW50KTsKICAgICBmb3IgKE5TRGljdGlvbmFyeSAqYXR0cmlidXRl
cyBpbiBzb3J0ZWRBdHRyaWJ1dGVzQXJyYXkpIHsKLSAgICAgICAgYXV0byBkZWNvZGVkUmVzcG9u
c2UgPSBjYm9yOjpDQk9SUmVhZGVyOjpyZWFkKHRvVmVjdG9yKGF0dHJpYnV0ZXNbKGlkKWtTZWNB
dHRyQXBwbGljYXRpb25UYWddKSk7CisgICAgICAgIGF1dG8gZGVjb2RlZFJlc3BvbnNlID0gY2Jv
cjo6Q0JPUlJlYWRlcjo6cmVhZCh2ZWN0b3JGcm9tTlNEYXRhKGF0dHJpYnV0ZXNbKGlkKWtTZWNB
dHRyQXBwbGljYXRpb25UYWddKSk7CiAgICAgICAgIGlmICghZGVjb2RlZFJlc3BvbnNlIHx8ICFk
ZWNvZGVkUmVzcG9uc2UtPmlzTWFwKCkpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTQ3MSw3ICs0NjQsNyBA
QCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0
ZXN0ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYgYwogICAgIHsKICAgICAgICAgVmVjdG9yPGNib3I6OkNC
T1JWYWx1ZT4gY2JvckFycmF5OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFtjZXJ0
aWZpY2F0ZXMgY291bnRdOyBpKyspCi0gICAgICAgICAgICBjYm9yQXJyYXkuYXBwZW5kKGNib3I6
OkNCT1JWYWx1ZSh0b1ZlY3RvcigoTlNEYXRhICopYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNvcHlE
YXRhKChfX2JyaWRnZSBTZWNDZXJ0aWZpY2F0ZVJlZiljZXJ0aWZpY2F0ZXNbaV0pKS5nZXQoKSkp
KTsKKyAgICAgICAgICAgIGNib3JBcnJheS5hcHBlbmQoY2Jvcjo6Q0JPUlZhbHVlKHZlY3RvckZy
b21OU0RhdGEoKE5TRGF0YSAqKWFkb3B0Q0YoU2VjQ2VydGlmaWNhdGVDb3B5RGF0YSgoX19icmlk
Z2UgU2VjQ2VydGlmaWNhdGVSZWYpY2VydGlmaWNhdGVzW2ldKSkuZ2V0KCkpKSk7CiAgICAgICAg
IGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwW2Nib3I6OkNCT1JWYWx1ZSgieDVjIildID0gY2Jvcjo6
Q0JPUlZhbHVlKFdURk1vdmUoY2JvckFycmF5KSk7CiAgICAgfQogICAgIGF1dG8gYXR0ZXN0YXRp
b25PYmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCAiYXBw
bGUiLCBXVEZNb3ZlKGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwKSwgY3JlYXRpb25PcHRpb25zLmF0
dGVzdGF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLm1tCmluZGV4IDkxMDQ4NTA3
OTc0MTE3YmY5ZWYzZTM2ZDE4NDJmZWUxOTg0OTU2NzQuLjFlNzBhMzE1NDFmM2E2MzA4YzNlMzFj
NGJkMmI2YTE2YWQ3ZTlkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5tbQpAQCAt
MzEsNiArMzEsNyBAQAogI2ltcG9ydCAiTmZjU2VydmljZS5oIgogI2ltcG9ydCAiV0tORlJlYWRl
clNlc3Npb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9GaWRvQ29uc3RhbnRzLmg+Cisj
aW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2
NC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTkwLDExICs5MSw5IEBAIE5mY0Nvbm5lY3Rp
b246On5OZmNDb25uZWN0aW9uKCkKIAogVmVjdG9yPHVpbnQ4X3Q+IE5mY0Nvbm5lY3Rpb246OnRy
YW5zYWN0KFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpIGNvbnN0CiB7Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlc3BvbnNlOwogICAgIC8vIFRoZSBtZXRob2Qgd2lsbCByZXR1cm4gYW4gZW1wdHkgTlNE
YXRhIGlmIHRoZSB0YWcgaXMgZGlzY29ubmVjdGVkLgogICAgIGF1dG8gKnJlc3BvbnNlRGF0YSA9
IFttX3Nlc3Npb24gdHJhbnNjZWl2ZTphZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5
dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLnNpemUoKV0pLmdldCgpXTsKLSAgICByZXNwb25z
ZS5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzcG9uc2VEYXRhLmJ5
dGVzKSwgcmVzcG9uc2VEYXRhLmxlbmd0aCk7Ci0gICAgcmV0dXJuIHJlc3BvbnNlOworICAgIHJl
dHVybiB2ZWN0b3JGcm9tTlNEYXRhKHJlc3BvbnNlRGF0YSk7CiB9CiAKIHZvaWQgTmZjQ29ubmVj
dGlvbjo6c3RvcCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suY3BwCmluZGV4IDk3NmNmYjVkNjM4MGU3ZjhkMzYyZjYyYjVlMWJkMTVlNWJkNWE2YzMu
LmU3MzU3ZDExMjUwZDYwZWM4YzgzOGE4NzA4MTcwZTFmMmM2OGY1ZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yMjAsMTAgKzIyMCw4IEBA
IGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICAKICAgICBpZiAoaXNTeW5jKCkpIHsKICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgICAgIGlmIChtX3N5bmNEYXRhKSB7Ci0gICAg
ICAgICAgICBkYXRhLnJlc2l6ZShtX3N5bmNEYXRhLT5zaXplKCkpOwotICAgICAgICAgICAgbWVt
Y3B5KGRhdGEuZGF0YSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX3N5bmNE
YXRhLT5kYXRhKCkpLCBtX3N5bmNEYXRhLT5zaXplKCkpOwotICAgICAgICB9CisgICAgICAgIGlm
IChtX3N5bmNEYXRhKQorICAgICAgICAgICAgZGF0YSA9IHsgbV9zeW5jRGF0YS0+ZGF0YUFzVUlu
dDhQdHIoKSwgbV9zeW5jRGF0YS0+c2l6ZSgpIH07CiAKICAgICAgICAgbV9zeW5jQ29tcGxldGlv
bkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAg
bV9zeW5jRGF0YSA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcAppbmRleCA2YThjNjMyMTBk
MjcyYWIzM2U5MmMxMWJlZmNkZjAzOWI2MGZmN2M1Li40N2UzY2E5NmU5M2M1MTQxODQyYTczM2Jh
ZDEyNjRjYmYxNTI0OTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKQEAgLTE1NCw5ICsxNTQsNyBA
QCB2b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZURhdGEoc2l6ZV90IHNpemUs
IGNvbnN0IHVpbnQ4X3QqIGRhdGEpCiAKICAgICBpZiAobV93YWl0aW5nRm9yQ29tcGxldGlvbkhh
bmRsZXIpIHsKICAgICAgICAgV0VCVVJMU0NIRU1FVEFTS1BST1hZX1JFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVEYXRhOiBSZWNlaXZlZCBkYXRhIGR1cmluZyByZXNwb25zZSBwcm9j
ZXNzaW5nLCBxdWV1aW5nIGl0LiIpOwotICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YVZlY3Rv
cjsKLSAgICAgICAgZGF0YVZlY3Rvci5hcHBlbmQoZGF0YSwgc2l6ZSk7Ci0gICAgICAgIHF1ZXVl
VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkYXRhVmVjdG9yID0g
V1RGTW92ZShkYXRhVmVjdG9yKV0geworICAgICAgICBxdWV1ZVRhc2soW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YVZlY3RvciA9IFZlY3RvciB7IGRhdGEsIHNpemUg
fV0gewogICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoZGF0YVZlY3Rvci5zaXplKCksIGRhdGFW
ZWN0b3IuZGF0YSgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
</data>
<flag name="commit-queue"
          id="451085"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429827</attachid>
            <date>2021-05-26 19:16:19 -0700</date>
            <delta_ts>2021-05-26 20:17:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226304-20210526191618.patch</filename>
            <type>text/plain</type>
            <size>46093</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
OTNiZWEyNWE3ZWZkMDViM2M0Nzk2MmY2ZmJlZWUzYTQ0N2QwNTllLi45MTQ4YjU0NGY4MGU5Njc1
MWNiNDMxZTYxZDYyZGU3YmEyMDcxMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNvbnN0IFQqLCBzaXplX3QpIGNvbnN0
cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjYzMDQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBMZXZl
cmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvciBpbiBleGlz
dGluZyBjb2RlLgorCisgICAgICAgICogd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6V2FzbTo6U3RyZWFtaW5nUGFyc2VyOjpjb25zdW1lKToKKwogMjAyMS0wNS0y
NiAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OOiBBU1NFUlRJT04gRkFJTEVEOiAhaXNDb21waWxhdGlvblRocmVhZCgpIGluIEpTQzo6UHJv
ZmlsZXI6OkRhdGFiYXNlOjphZGRDb21waWxhdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJjYTVhOTk3MmUyMGNiM2Nl
Njk5NWY5NjEzYTE0YjZjNWZjNjYxMTguLjYzYzMwODUwZThkMGI5MGFmZTUyNGZjNGNjZTgyZjM5
YmZmMTczMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMjYgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBMZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25z
dCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI2MzA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCisKKyAgICAgICAgTGV2ZXJhZ2UgdGhlIG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkg
Y29uc3RydWN0b3IgaW4gZXhpc3RpbmcgY29kZS4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0
cmluZy5jcHA6CisgICAgICAgIChhc2NpaURlYnVnKToKKwogMjAyMS0wNS0yNiAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSB0aW1pbmdzYWZlX2JjbXAoKSBp
biBXVEY6OmNvbnN0YW50VGltZU1lbWNtcCgpIHdoZW4gYXZhaWxhYmxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjczMzdjMDVhYThkNGYwODg3MWI3NjgyOGJkNzI1NGRmYTFlMDY2Mi4uMTJiY2RiYWJlZDhmYjY0
M2VjMmU1YzhhYzg5MjUyMjQzMDhlMTZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisy
MDIxLTA1LTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTGV2
ZXJhZ2UgdGhlIG5ldyBWZWN0b3IoY29uc3QgVCosIHNpemVfdCkgY29uc3RydWN0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjMwNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIExldmVyYWdlIHRoZSBuZXcg
VmVjdG9yKGNvbnN0IFQqLCBzaXplX3QpIGNvbnN0cnVjdG9yIGluIGV4aXN0aW5nIGNvZGUuCisK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
R2V0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkdldFJlc3VsdDo6ZGF0YUZyb21C
dWZmZXIpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25VdGls
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0Qnl0ZXNUb1ZlY3Rvcik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNlQ29udmVydGVyLmNwcDoKKyAg
ICAgICAgKGZpZG86OmRlY29kZVJlc3BvbnNlTWFwKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHA6CisgICAgICAgIChmaWRvOjpGaWRvSGlkSW5pdFBh
Y2tldDo6Y3JlYXRlRnJvbVNlcmlhbGl6ZWREYXRhKToKKyAgICAgICAgKGZpZG86OkZpZG9IaWRD
b250aW51YXRpb25QYWNrZXQ6OmNyZWF0ZUZyb21TZXJpYWxpemVkRGF0YSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9maWRvL1Bpbi5jcHA6CisgICAgICAgIChmaWRvOjpwaW46OmVuY29k
ZUNPU0VQdWJsaWNLZXkpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNw
b25zZUNvbnZlcnRlci5jcHA6CisgICAgICAgIChmaWRvOjpXZWJDb3JlOjpleHRyYWN0RUNQdWJs
aWNLZXlGcm9tVTJmUmVnaXN0cmF0aW9uUmVzcG9uc2UpOgorICAgICAgICAoZmlkbzo6V2ViQ29y
ZTo6ZXh0cmFjdENyZWRlbnRpYWxJZEZyb21VMmZSZWdpc3RyYXRpb25SZXNwb25zZSk6CisgICAg
ICAgIChmaWRvOjpXZWJDb3JlOjpjcmVhdGVGaWRvQXR0ZXN0YXRpb25TdGF0ZW1lbnRGcm9tVTJm
UmVnaXN0ZXJSZXNwb25zZSk6CisgICAgICAgIChmaWRvOjpyZWFkVTJmU2lnblJlc3BvbnNlKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjplbnF1ZXVlUmF3RnJhbWUpOgorICAgICAg
ICAqIGNyeXB0by9TdWJ0bGVDcnlwdG8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9LZXlEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvcHlUb1ZlY3Rvcik6CisgICAgICAgICogY3J5cHRvL2dj
cnlwdC9DcnlwdG9LZXlFQ0dDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9LZXlF
Qzo6cGxhdGZvcm1BZGRGaWVsZEVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBjcnlwdG8vbWFj
L0NyeXB0b0tleUVDTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0
Zm9ybUltcG9ydFBrY3M4KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9L
ZXlXcmFwTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6dmVjdG9yRnJvbU5TRGF0YSk6CisgICAg
ICAgICogY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU9wZW5TU0wuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3J5cHREZWNyeXB0KToKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6QmxvYik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQmFj
a2luZ1N0b3JlOjpJbWFnZUJhY2tpbmdTdG9yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpkYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZEJ1ZmZlcjo6Y3JlYXRlVmVj
dG9yIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NE
TVByb3h5Q2xlYXJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNUHJveHlDbGVhcktleTo6
Y2VuY1NldERlY3J5cHRpb25LZXkpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVj
b3JkZXJQcml2YXRlTW9jazo6ZmV0Y2hEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0Zvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6aXNvbGF0
ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjphcHBlbmREYXRhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHA6CisgICAg
ICAgIChPcGVuU1NMOjpCSU86OmdldERhdGFBc1ZlY3RvciBjb25zdCk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpkZXNlcmlh
bGl6ZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogeG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNl
ckxpYnhtbDIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlbkZ1bmMpOgorCiAyMDIxLTA1LTI2
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBh
IFBBTCBzb2Z0bGlua2luZyBoZWFkZXIgZm9yIHRoZSBSZXZlYWwgZnJhbWV3b3JrCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0No
YW5nZUxvZwppbmRleCA2NjRiNDRhMDlkZmU0NDViMjJmZjA4NzA2NDkwNDUyODMxOTkxMGYyLi40
NGJiZjZmNWNlYjA3YWM4OTkwODIzOWQ2NWU4ZGExNzZjMmIxMzI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNvbnN0IFQqLCBzaXpl
X3QpIGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjYzMDQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICBMZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3Rv
ciBpbiBleGlzdGluZyBjb2RlLgorCisgICAgICAgICogcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRv
RGlnZXN0R0NyeXB0LmNwcDoKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFz
aCk6CisKIDIwMjEtMDUtMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIGEgUEFMIHNvZnRsaW5raW5nIGhlYWRlciBmb3IgdGhlIFJldmVhbCBm
cmFtZXdvcmsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggYjE3YWEyY2IxNjVmNTM5YzY1MDU2NWRiZDVmMTIyNzI3ZGVm
ODY1OC4uOGQwMzY0OTk1YzE2ZmEyZTUyYzgyNjMwN2M0YjVkOGExZmRkNjg2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNCBAQAorMjAyMS0wNS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIExldmVyYWdlIHRoZSBuZXcgVmVjdG9yKGNvbnN0IFQqLCBzaXplX3Qp
IGNvbnN0cnVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjYzMDQKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBMZXZlcmFnZSB0aGUgbmV3IFZlY3Rvcihjb25zdCBUKiwgc2l6ZV90KSBjb25zdHJ1Y3RvciBp
biBleGlzdGluZyBjb2RlLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNl
Lmg6CisgICAgICAgIChJUEM6OkFycmF5UmVmZXJlbmNlOjp2ZWN0b3IgY29uc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAg
ICAgICAgKHZlY3RvckZyb21OU0RhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpJY29uRGF0YWJhc2U6OnNldEljb25G
b3JQYWdlVVJMKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1
YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29y
ZTo6Y29udmVydEJ5dGVzVG9WZWN0b3IpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3Jp
cHRGb3JFeHRlbnNpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9D
b2NvYS9IaWRDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpyZXBvcnRSZWNlaXZlZCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVu
dGljYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw6
OnRvVmVjdG9yKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw6
OmFhZ3VpZFZlY3Rvcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL05mY0Nvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6Ok5mY0Nvbm5lY3Rpb246OnRy
YW5zYWN0IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YSk6CisKIDIw
MjEtMDUtMjYgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAg
ICBbQ01ha2VdIFN1cHBvcnQgVVNFX0FOR0xFX0VHTCBvbiBhZGRpdGlvbmFsIHBsYXRmb3Jtcwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVN0cmVhbWluZ1BhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNw
cAppbmRleCAyODAxMGI4OGNiYmI2ODYyN2JjYzMzODgyYmI0MWQxNjU1OTgyMmE4Li4xZDIyNWM3
OGUwM2I4ZGE5OTQyZjMyMmJhODIzMDM3Y2UwMmY4YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtU3RyZWFtaW5nUGFyc2VyLmNwcApAQCAtMTk3LDggKzE5Nyw3
IEBAIGF1dG8gU3RyZWFtaW5nUGFyc2VyOjpjb25zdW1lKGNvbnN0IHVpbnQ4X3QqIGJ5dGVzLCBz
aXplX3QgYnl0ZXNTaXplLCBzaXplX3QmIG9mCiAgICAgfQogCiAgICAgaWYgKG1fcmVtYWluaW5n
LnNpemUoKSA+IHJlcXVpcmVkU2l6ZSkgewotICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0
KHJlcXVpcmVkU2l6ZSk7Ci0gICAgICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBtX3JlbWFpbmlu
Zy5kYXRhKCksIHJlcXVpcmVkU2l6ZSk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQg
eyBtX3JlbWFpbmluZy5kYXRhKCksIHJlcXVpcmVkU2l6ZSB9OwogICAgICAgICBtX3JlbWFpbmlu
Zy5yZW1vdmUoMCwgcmVxdWlyZWRTaXplKTsKICAgICAgICAgbV9uZXh0T2Zmc2V0ICs9IHJlcXVp
cmVkU2l6ZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL2NvY29hL1ZlY3RvckNvY29hLmggYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9WZWN0b3JDb2Nv
YS5oCmluZGV4IDIyMTQxYTM2ZmQxZjYwMjUzMzg3MjQ4ODM1ZmEzMjA3YmMyMGY4YzcuLjZlODQ0
NGFmZDM1OTc1NzUxM2NhNmM2OGM3Njk3MzhlMTExNDQ4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL2NvY29hL1ZlY3RvckNvY29hLmgKKysrIGIvU291cmNlL1dURi93dGYvY29jb2EvVmVj
dG9yQ29jb2EuaApAQCAtMjksNiArMjksNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdURiB7
CiAKQEAgLTEwNyw3ICsxMDgsMTMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgTWFwRnVuY3Rpb25UeXBl
PiBWZWN0b3I8dHlwZW5hbWUgc3RkOjppbnZva2VfcmVzdWx0X3Q8TWFwRnVuY3QKICAgICByZXR1
cm4gdmVjdG9yOwogfQogCitpbmxpbmUgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvckZyb21OU0RhdGEo
TlNEYXRhKiBkYXRhKQoreworICAgIHJldHVybiB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBX
VEYKIAogdXNpbmcgV1RGOjpjcmVhdGVOU0FycmF5OwogdXNpbmcgV1RGOjptYWtlVmVjdG9yOwor
dXNpbmcgV1RGOjp2ZWN0b3JGcm9tTlNEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmlu
ZGV4IDI0NTdjZWY2YzUzZmFhZGY3NzQwYzljOTYxODdiZGFhZmI0OTQ4Y2EuLjg2Zjk4MzgwZGEw
ODVlYTMyYmZiYzAwMzcwMTA2OTQyOTkyYzNhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5j
cHAKQEAgLTkwMiw5ICs5MDIsNyBAQCBWZWN0b3I8Y2hhcj4gYXNjaWlEZWJ1ZyhTdHJpbmdJbXBs
KiBpbXBsKQogICAgICAgICB9CiAgICAgfQogICAgIENTdHJpbmcgbmFycm93U3RyaW5nID0gYnVm
ZmVyLnRvU3RyaW5nKCkuYXNjaWkoKTsKLSAgICBWZWN0b3I8Y2hhcj4gcmVzdWx0OwotICAgIHJl
c3VsdC5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obmFycm93U3RyaW5nLmRh
dGEoKSksIG5hcnJvd1N0cmluZy5sZW5ndGgoKSArIDEpOwotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obmFycm93U3RyaW5nLmRh
dGEoKSksIG5hcnJvd1N0cmluZy5sZW5ndGgoKSArIDEgfTsKIH0KIAogVmVjdG9yPGNoYXI+IGFz
Y2lpRGVidWcoU3RyaW5nJiBzdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDU1Y2ZkYWFkN2RiZmMxMTVkOTI3ZmFm
OWE0ZTgwYTMxNmMzZjUyNjEuLjliNjk1NjAzMDBhYjY5OTIzNTNhM2E5YzE5NzA0MjE3NGZjNjZk
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCkBAIC00Myw5ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGlj
IGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21EYXRhKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUobGVuZ3Ro
KTsKLSAgICBtZW1jcHkodmFsdWUuZGF0YSgpLCBkYXRhLCBsZW5ndGgpOwotICAgIHJldHVybiBC
bG9iOjpjcmVhdGUoY29udGV4dCwgV1RGTW92ZSh2YWx1ZSksIEJsb2I6Om5vcm1hbGl6ZWRDb250
ZW50VHlwZShjb250ZW50VHlwZSkpOworICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwg
VmVjdG9yIHsgZGF0YSwgbGVuZ3RoIH0sIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShjb250
ZW50VHlwZSkpOwogfQogCiAvLyBodHRwczovL21pbWVzbmlmZi5zcGVjLndoYXR3Zy5vcmcvI2h0
dHAtcXVvdGVkLXN0cmluZy10b2tlbi1jb2RlLXBvaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcAppbmRleCAyYzU5ZGUwY2NlMTdkMzM1
NDU5MzJiY2IzNjU1YjBlYjNlNTU4ZTdkLi5lODNjZGQ3MDZiYTI1OWU4ZWRlNjdlYzEwNDUyMGIx
OTQ2N2FjYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJHZXRSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkdldFJlc3VsdC5jcHAKQEAgLTM0LDEwICszNCw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURf
SU1QTChJREJHZXRSZXN1bHQpOwogCiB2b2lkIElEQkdldFJlc3VsdDo6ZGF0YUZyb21CdWZmZXIo
U2hhcmVkQnVmZmVyJiBidWZmZXIpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoYnVmZmVy
LnNpemUoKSk7Ci0gICAgbWVtY3B5KGRhdGEuZGF0YSgpLCBidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpKTsKLQotICAgIG1fdmFsdWUgPSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOworICAgIG1fdmFsdWUgPSBUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y3JlYXRl
KHsgYnVmZmVyLmRhdGFBc1VJbnQ4UHRyKCksIGJ1ZmZlci5zaXplKCkgfSk7CiB9CiAKIElEQkdl
dFJlc3VsdDo6SURCR2V0UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0ZWRD
b3B5VGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJB
dXRoZW50aWNhdGlvblV0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
V2ViQXV0aGVudGljYXRpb25VdGlscy5jcHAKaW5kZXggYmU5MjYxMmQ4MWQzMTc5MDk3Y2JhYmI2
NWNhMjIwYjI5MGEwMTVkYy4uMDY4ZmVmNjI1YThlMjgyMWI0YjhmNGQ2ODk1YzU3ZjA1YzU5MGI4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50
aWNhdGlvblV0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dl
YkF1dGhlbnRpY2F0aW9uVXRpbHMuY3BwCkBAIC0zNyw5ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogVmVjdG9yPHVpbnQ4X3Q+IGNvbnZlcnRCeXRlc1RvVmVjdG9yKGNvbnN0IHVpbnQ4
X3QgYnl0ZUFycmF5W10sIGNvbnN0IHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kKGJ5dGVBcnJheSwgbGVuZ3RoKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIHJldHVybiB7IGJ5dGVBcnJheSwgbGVuZ3RoIH07CiB9CiAKIFZl
Y3Rvcjx1aW50OF90PiBwcm9kdWNlUnBJZEhhc2goY29uc3QgU3RyaW5nJiBycElkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlc3BvbnNl
Q29udmVydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZp
Y2VSZXNwb25zZUNvbnZlcnRlci5jcHAKaW5kZXggOGQzNGJlOTNkMWJlNDgxM2E3YTliMzg1NWJh
NGNhMWYwNGNmNjg4Ny4uODRjMTdiNzczNmM4NWQ2MTdlZTkyZmNmYzJiNjgyOTk4MzAxZDUyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJl
c3BvbnNlQ29udmVydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vRGV2aWNlUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCkBAIC01OSw4ICs1OSw3IEBAIE9wdGlv
bmFsPGNib3I6OkNCT1JWYWx1ZT4gZGVjb2RlUmVzcG9uc2VNYXAoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBpbkJ1ZmZlcikKICAgICBpZiAoaW5CdWZmZXIuc2l6ZSgpIDw9IGtSZXNwb25zZUNvZGVM
ZW5ndGggfHwgZ2V0UmVzcG9uc2VDb2RlKGluQnVmZmVyKSAhPSBDdGFwRGV2aWNlUmVzcG9uc2VD
b2RlOjprU3VjY2VzcykKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIFZlY3Rv
cjx1aW50OF90PiBidWZmZXI7Ci0gICAgYnVmZmVyLmFwcGVuZChpbkJ1ZmZlci5kYXRhKCkgKyAx
LCBpbkJ1ZmZlci5zaXplKCkgLSAxKTsKKyAgICBWZWN0b3I8dWludDhfdD4gYnVmZmVyIHsgaW5C
dWZmZXIuZGF0YSgpICsgMSwgaW5CdWZmZXIuc2l6ZSgpIC0gMSB9OwogICAgIE9wdGlvbmFsPENC
T1I+IGRlY29kZWRSZXNwb25zZSA9IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQoYnVmZmVyKTsKICAg
ICBpZiAoIWRlY29kZWRSZXNwb25zZSB8fCAhZGVjb2RlZFJlc3BvbnNlLT5pc01hcCgpKQogICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL0ZpZG9IaWRQYWNrZXQuY3BwCmluZGV4IDUyMzIyMGExNmZiZmQz
NDM5ZTUxMGU1MjcxYjE5YmU2NDY3OTk2Y2YuLmEyY2JhMzA5YmZiNjA1YzMzYWQ4YzdjMTEzMjY2
ODdlOGYyNzJhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
Zmlkby9GaWRvSGlkUGFja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
dGhuL2ZpZG8vRmlkb0hpZFBhY2tldC5jcHAKQEAgLTY3LDkgKzY3LDcgQEAgc3RkOjp1bmlxdWVf
cHRyPEZpZG9IaWRJbml0UGFja2V0PiBGaWRvSGlkSW5pdFBhY2tldDo6Y3JlYXRlRnJvbVNlcmlh
bGl6ZWREYXRhKGMKICAgICAvLyBVcGRhdGUgcmVtYWluaW5nIHNpemUgdG8gZGV0ZXJtaW5lIHRo
ZSBwYXlsb2FkIHNpemUgb2YgZm9sbG93IG9uIHBhY2tldHMuCiAgICAgKnJlbWFpbmluZ1NpemUg
PSBwYXlsb2FkU2l6ZSAtIGRhdGFTaXplOwogCi0gICAgYXV0byBkYXRhID0gVmVjdG9yPHVpbnQ4
X3Q+KCk7Ci0gICAgZGF0YS5hcHBlbmQoc2VyaWFsaXplZC5iZWdpbigpICsgaW5kZXgsIGRhdGFT
aXplKTsKLQorICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhIHsgc2VyaWFsaXplZC5iZWdpbigpICsg
aW5kZXgsIGRhdGFTaXplIH07CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Rmlkb0hpZEluaXRQYWNr
ZXQ+KGNoYW5uZWxJZCwgY29tbWFuZCwgV1RGTW92ZShkYXRhKSwgcGF5bG9hZFNpemUpOwogfQog
CkBAIC0xMjIsOSArMTIwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEZpZG9IaWRDb250aW51YXRpb25Q
YWNrZXQ+IEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ6OmNyZWF0ZUZyb20KICAgICAvLyBDaGVj
ayB0byBzZWUgaWYgcGFja2V0IHBheWxvYWQgaXMgbGVzcyB0aGFuIG1heGltdW0gc2l6ZSBhbmQg
cGFkZGVkIHdpdGggMHMuCiAgICAgc2l6ZV90IGRhdGFTaXplID0gc3RkOjptaW4oKnJlbWFpbmlu
Z1NpemUsIGtIaWRQYWNrZXRTaXplIC0gaW5kZXgpOwogICAgICpyZW1haW5pbmdTaXplIC09IGRh
dGFTaXplOwotICAgIGF1dG8gZGF0YSA9IFZlY3Rvcjx1aW50OF90PigpOwotICAgIGRhdGEuYXBw
ZW5kKHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4LCBkYXRhU2l6ZSk7Ci0KKyAgICBWZWN0b3I8
dWludDhfdD4gZGF0YSB7IHNlcmlhbGl6ZWQuYmVnaW4oKSArIGluZGV4LCBkYXRhU2l6ZSB9Owog
ICAgIHJldHVybiBtYWtlVW5pcXVlPEZpZG9IaWRDb250aW51YXRpb25QYWNrZXQ+KGNoYW5uZWxJ
ZCwgc2VxdWVuY2UsIFdURk1vdmUoZGF0YSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vUGluLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwCmluZGV4IDk3OWQ0NzQ3YjkzYjU1MmZkZjUyMjJjOTA5
Njk0OTY0YTUzYzE3MGUuLjU4Mzc2NTBkM2JmMjBiYTBiMmI3MDg4ZGVkOWUwMzM2ZTkwMTRjYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9QaW4uY3BwCkBAIC0x
ODEsMTAgKzE4MSw4IEBAIE9wdGlvbmFsPEtleUFncmVlbWVudFJlc3BvbnNlPiBLZXlBZ3JlZW1l
bnRSZXNwb25zZTo6cGFyc2VGcm9tQ09TRShjb25zdCBDQk9SVmFsCiBjYm9yOjpDQk9SVmFsdWU6
Ok1hcFZhbHVlIGVuY29kZUNPU0VQdWJsaWNLZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByYXdQ
dWJsaWNLZXkpCiB7CiAgICAgQVNTRVJUKHJhd1B1YmxpY0tleS5zaXplKCkgPT0gNjUpOwotICAg
IFZlY3Rvcjx1aW50OF90PiB4OwotICAgIHguYXBwZW5kKHJhd1B1YmxpY0tleS5kYXRhKCkgKyAx
LCBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHk7Ci0gICAg
eS5hcHBlbmQocmF3UHVibGljS2V5LmRhdGEoKSArIDEgKyBFUzI1NkZpZWxkRWxlbWVudExlbmd0
aCwgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpOworICAgIFZlY3Rvcjx1aW50OF90PiB4IHsgcmF3
UHVibGljS2V5LmRhdGEoKSArIDEsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoIH07CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHkgeyByYXdQdWJsaWNLZXkuZGF0YSgpICsgMSArIEVTMjU2RmllbGRFbGVt
ZW50TGVuZ3RoLCBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCB9OwogCiAgICAgY2Jvcjo6Q0JPUlZh
bHVlOjpNYXBWYWx1ZSBwdWJsaWNLZXlNYXA7CiAgICAgcHVibGljS2V5TWFwW2Nib3I6OkNCT1JW
YWx1ZShDT1NFOjprdHkpXSA9IGNib3I6OkNCT1JWYWx1ZShDT1NFOjpFQzIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVy
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25z
ZUNvbnZlcnRlci5jcHAKaW5kZXggMmI1NDZkMTczNzgzNmU1ZjRjNzM5ZjgyMTczYjIxNmQ5OGI3
NWIxMS4uMTM0NTQxZDFlZjU5NTQyOWYyNTEyODIyZjE5M2Q1MTUzZDRkMGI4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVy
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVz
cG9uc2VDb252ZXJ0ZXIuY3BwCkBAIC02NCwxMyArNjQsMTAgQEAgc3RhdGljIFZlY3Rvcjx1aW50
OF90PiBleHRyYWN0RUNQdWJsaWNLZXlGcm9tVTJmUmVnaXN0cmF0aW9uUmVzcG9uc2UoY29uc3Qg
VmVjdG8KICAgICBpZiAodTJmRGF0YS5zaXplKCkgPCBwb3MgKyAyICogRVMyNTZGaWVsZEVsZW1l
bnRMZW5ndGgpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBWZWN0b3I8dWludDhfdD4geDsK
LSAgICB4LmFwcGVuZCh1MmZEYXRhLmRhdGEoKSArIHBvcywgRVMyNTZGaWVsZEVsZW1lbnRMZW5n
dGgpOworICAgIFZlY3Rvcjx1aW50OF90PiB4IHsgdTJmRGF0YS5kYXRhKCkgKyBwb3MsIEVTMjU2
RmllbGRFbGVtZW50TGVuZ3RoIH07CiAgICAgcG9zICs9IEVTMjU2RmllbGRFbGVtZW50TGVuZ3Ro
OwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHk7Ci0gICAgeS5hcHBlbmQodTJmRGF0YS5kYXRhKCkg
KyBwb3MsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKTsKLQorICAgIFZlY3Rvcjx1aW50OF90PiB5
IHsgdTJmRGF0YS5kYXRhKCkgKyBwb3MsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoIH07CiAgICAg
cmV0dXJuIGVuY29kZUVTMjU2UHVibGljS2V5QXNDQk9SKFdURk1vdmUoeCksIFdURk1vdmUoeSkp
OwogfQogCkBAIC04NCw5ICs4MSw3IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gZXh0cmFjdENy
ZWRlbnRpYWxJZEZyb21VMmZSZWdpc3RyYXRpb25SZXNwb25zZShjb25zdCBWZWN0CiAKICAgICBp
ZiAodTJmRGF0YS5zaXplKCkgPCBwb3MgKyBjcmVkZW50aWFsSWRMZW5ndGgpCiAgICAgICAgIHJl
dHVybiB7IH07Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNyZWRlbnRpYWxJZDsKLSAgICBjcmVkZW50
aWFsSWQuYXBwZW5kKHUyZkRhdGEuZGF0YSgpICsgcG9zLCBjcmVkZW50aWFsSWRMZW5ndGgpOwot
ICAgIHJldHVybiBjcmVkZW50aWFsSWQ7CisgICAgcmV0dXJuIHsgdTJmRGF0YS5kYXRhKCkgKyBw
b3MsIGNyZWRlbnRpYWxJZExlbmd0aCB9OwogfQogCiBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNy
ZWF0ZUF0dGVzdGVkQ3JlZGVudGlhbERhdGFGcm9tVTJmUmVnaXN0ZXJSZXNwb25zZShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcHVibGljS2V5
KQpAQCAtMTI0LDEyICsxMTksMTAgQEAgc3RhdGljIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUg
Y3JlYXRlRmlkb0F0dGVzdGF0aW9uU3RhdGVtZW50RnJvbVUyZlJlZ2lzdGVyUmUKICAgICBpZiAo
IXg1MDlMZW5ndGggfHwgdTJmRGF0YS5zaXplKCkgPCBvZmZzZXQgKyB4NTA5TGVuZ3RoKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHg1MDk7Ci0gICAgeDUwOS5h
cHBlbmQodTJmRGF0YS5kYXRhKCkgKyBvZmZzZXQsIHg1MDlMZW5ndGgpOworICAgIFZlY3Rvcjx1
aW50OF90PiB4NTA5IHsgdTJmRGF0YS5kYXRhKCkgKyBvZmZzZXQsIHg1MDlMZW5ndGggfTsKICAg
ICBvZmZzZXQgKz0geDUwOUxlbmd0aDsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmU7
Ci0gICAgc2lnbmF0dXJlLmFwcGVuZCh1MmZEYXRhLmRhdGEoKSArIG9mZnNldCwgdTJmRGF0YS5z
aXplKCkgLSBvZmZzZXQpOworICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmUgeyB1MmZEYXRh
LmRhdGEoKSArIG9mZnNldCwgdTJmRGF0YS5zaXplKCkgLSBvZmZzZXQgfTsKICAgICBpZiAoc2ln
bmF0dXJlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtMTg0LDkgKzE3Nyw3
IEBAIFJlZlB0cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRVMmZTaWduUmVz
cG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjCiAgICAgYXV0byBhdXRoRGF0YSA9IGJ1aWxkQXV0
aERhdGEocnBJZCwgZmxhZ3MsIGNvdW50ZXIsIHsgfSk7CiAKICAgICAvLyBGSVhNRTogRmluZCBh
IHdheSB0byByZW1vdmUgdGhlIG5lZWQgb2YgY29uc3RydWN0aW5nIGEgdmVjdG9yIGhlcmUuCi0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZTsKLSAgICBzaWduYXR1cmUuYXBwZW5kKHUyZkRh
dGEuZGF0YSgpICsgc2lnbmF0dXJlSW5kZXgsIHUyZkRhdGEuc2l6ZSgpIC0gc2lnbmF0dXJlSW5k
ZXgpOwotCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZSB7IHUyZkRhdGEuZGF0YSgpICsg
c2lnbmF0dXJlSW5kZXgsIHUyZkRhdGEuc2l6ZSgpIC0gc2lnbmF0dXJlSW5kZXggfTsKICAgICBy
ZXR1cm4gQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoa2V5SGFuZGxlLCBh
dXRoRGF0YSwgc2lnbmF0dXJlLCB7IH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggYWZkNzQwYTFl
YzEwYTY0NGRlNTc2YmU0ZmE4NDQ0OGY3MjU3ZDMyNy4uZTVlMjdkNGY0NWY1NzJjZGQ2MzY0ZTQx
NGJiYTM5OGY5ZjQ1NDZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNzIwLDkgKzcyMCw3IEBAIHZvaWQg
V2ViU29ja2V0Q2hhbm5lbDo6ZW5xdWV1ZVJhd0ZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUg
b3BDb2RlLCBjb25zdCBjaGFyCiAgICAgYXV0byBmcmFtZSA9IG1ha2VVbmlxdWU8UXVldWVkRnJh
bWU+KCk7CiAgICAgZnJhbWUtPm9wQ29kZSA9IG9wQ29kZTsKICAgICBmcmFtZS0+ZnJhbWVUeXBl
ID0gUXVldWVkRnJhbWVUeXBlVmVjdG9yOwotICAgIGZyYW1lLT52ZWN0b3JEYXRhLnJlc2l6ZShk
YXRhTGVuZ3RoKTsKLSAgICBpZiAoZGF0YUxlbmd0aCkKLSAgICAgICAgbWVtY3B5KGZyYW1lLT52
ZWN0b3JEYXRhLmRhdGEoKSwgZGF0YSwgZGF0YUxlbmd0aCk7CisgICAgZnJhbWUtPnZlY3RvckRh
dGEgPSB7IGRhdGEsIGRhdGFMZW5ndGggfTsKICAgICBtX291dGdvaW5nRnJhbWVRdWV1ZS5hcHBl
bmQoV1RGTW92ZShmcmFtZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCmluZGV4IGQyODU2
NmI5MTMzOGJkOGQ2MzkyMzFlNTg2N2RiODdmMjNlYjRhOTIuLmQ3ZDAyM2YxY2JkNzIzZjA0YTdj
YzI4NWQ3MWNkNzhiMzBiZmNlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCkBAIC04MiwxMSAr
ODIsMTAgQEAgdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBz
aXplX3QgbGVuZ3RoKQogCiBWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFz
aCgpCiB7Ci0gICAgaW50IGRpZ2VzdExlbiA9IGdjcnlfbWRfZ2V0X2FsZ29fZGxlbihtX2NvbnRl
eHQtPmFsZ29yaXRobSk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChkaWdlc3RMZW4pOwor
ICAgIHNpemVfdCBkaWdlc3RMZW4gPSBnY3J5X21kX2dldF9hbGdvX2RsZW4obV9jb250ZXh0LT5h
bGdvcml0aG0pOwogCiAgICAgZ2NyeV9tZF9maW5hbChtX2NvbnRleHQtPm1kKTsKLSAgICBtZW1j
cHkocmVzdWx0LmRhdGEoKSwgZ2NyeV9tZF9yZWFkKG1fY29udGV4dC0+bWQsIDApLCBkaWdlc3RM
ZW4pOworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQgeyBnY3J5X21kX3JlYWQobV9jb250ZXh0
LT5tZCwgMCksIGRpZ2VzdExlbiB9OwogICAgIGdjcnlfbWRfY2xvc2UobV9jb250ZXh0LT5tZCk7
CiAKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L1N1YnRsZUNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNw
cAppbmRleCBiNTQ5MTkxYTdkZjBiM2UyNzE1YTdjMDIwM2NmZDY5NmQxMTBmMDQ3Li44MzU4NDBk
YjVmNWU3YmEwMWIyMDc3NDE4MDBkMDlmYzVlYzUxNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vU3VidGxlQ3J5cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
U3VidGxlQ3J5cHRvLmNwcApAQCAtNDU4LDkgKzQ1OCw3IEBAIHN0YXRpYyBPcHRpb25hbDxLZXlE
YXRhPiB0b0tleURhdGEoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQgZm9ybWF0LCBTdWJ0bGVDcnlw
dG86CiAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICBbXSAoYXV0byYgYnVmZmVyU291cmNlKSAtPiBPcHRpb25hbDxLZXlEYXRh
PiB7Ci0gICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXJTb3Vy
Y2UtPmRhdGEoKSksIGJ1ZmZlclNvdXJjZS0+Ynl0ZUxlbmd0aCgpKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gS2V5RGF0YSB7IHJlc3VsdCB9OworICAgICAgICAgICAgICAgIHJldHVybiBLZXlE
YXRhIHsgVmVjdG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlclNvdXJjZS0+
ZGF0YSgpKSwgYnVmZmVyU291cmNlLT5ieXRlTGVuZ3RoKCkgfSB9OwogICAgICAgICAgICAgfQog
ICAgICAgICApOwogICAgIGNhc2UgU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQ6Okp3azoKQEAgLTQ4
MSw5ICs0NzksNyBAQCBzdGF0aWMgT3B0aW9uYWw8S2V5RGF0YT4gdG9LZXlEYXRhKFN1YnRsZUNy
eXB0bzo6S2V5Rm9ybWF0IGZvcm1hdCwgU3VidGxlQ3J5cHRvOgogCiBzdGF0aWMgVmVjdG9yPHVp
bnQ4X3Q+IGNvcHlUb1ZlY3RvcihCdWZmZXJTb3VyY2UmJiBkYXRhKQogewotICAgIFZlY3Rvcjx1
aW50OF90PiBkYXRhVmVjdG9yOwotICAgIGRhdGFWZWN0b3IuYXBwZW5kKGRhdGEuZGF0YSgpLCBk
YXRhLmxlbmd0aCgpKTsKLSAgICByZXR1cm4gZGF0YVZlY3RvcjsKKyAgICByZXR1cm4geyBkYXRh
LmRhdGEoKSwgZGF0YS5sZW5ndGgoKSB9OwogfQogCiBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEV4
cG9ydEtleShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleUVDR0NyeXB0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCmluZGV4IDk2
Njg3NTBjMDQwNmU3ODIwYzdkNzk1OTRkOTQ4ZDhkMmJjMmQ4NzMuLjZhZDQwM2Y0NTU4YWM4Njg0
YTg2MDRlMDVmYzQ0YzdkZWViZjg0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCkBAIC01MjEsMTMgKzUyMSw4IEBAIGJvb2wg
Q3J5cHRvS2V5RUM6OnBsYXRmb3JtQWRkRmllbGRFbGVtZW50cyhKc29uV2ViS2V5JiBqd2spIGNv
bnN0CiAgICAgaWYgKHFNUEkpIHsKICAgICAgICAgYXV0byBxID0gbXBpRGF0YShxTVBJKTsKICAg
ICAgICAgaWYgKHEgJiYgcS0+c2l6ZSgpID09IGN1cnZlVW5jb21wcmVzc2VkUG9pbnRTaXplKG1f
Y3VydmUpKSB7Ci0gICAgICAgICAgICBWZWN0b3I8dWludDhfdD4gYTsKLSAgICAgICAgICAgIGEu
YXBwZW5kKHEtPmRhdGEoKSArIDEsIHVuY29tcHJlc3NlZEZpZWxkRWxlbWVudFNpemUpOwotICAg
ICAgICAgICAgandrLnggPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhhKTsKLQotICAgICAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGI7Ci0gICAgICAgICAgICBiLmFwcGVuZChxLT5kYXRhKCkgKyAx
ICsgdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZSwgdW5jb21wcmVzc2VkRmllbGRFbGVtZW50
U2l6ZSk7Ci0gICAgICAgICAgICBqd2sueSA9IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKGIpOwor
ICAgICAgICAgICAgandrLnggPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhWZWN0b3I8dWludDhf
dD4geyBxLT5kYXRhKCkgKyAxLCB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplIH0pOworICAg
ICAgICAgICAgandrLnkgPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhWZWN0b3I8dWludDhfdD4g
eyBxLT5kYXRhKCkgKyAxICsgdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZSwgdW5jb21wcmVz
c2VkRmllbGRFbGVtZW50U2l6ZSB9KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9LZXlFQ01hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleUVDTWFjLmNwcAppbmRleCA1NDBmMzNiY2JlNDJhYTlh
ZjRiN2ZlZjlkYzAwZTI5ZjcwYTE2YzYwLi5mNDdlMWQ4YTczNzBiMjY1NmYwOThjMTUzZWM1MWQ0
NDhhZWFjZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tl
eUVDTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0tleUVDTWFj
LmNwcApAQCAtMzU0LDggKzM1NCw3IEBAIFJlZlB0cjxDcnlwdG9LZXlFQz4gQ3J5cHRvS2V5RUM6
OnBsYXRmb3JtSW1wb3J0UGtjczgoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpCiAgICAgaW5k
ZXggKz0gYnl0ZXNVc2VkVG9FbmNvZGVkTGVuZ3RoKGtleURhdGFbaW5kZXhdKSArIDE7IC8vIFJl
YWQgbGVuZ3RoLCBJbml0aWFsT2N0ZXQKIAogICAgIC8vIEtleUJpbmFyeSA9IHVuY29tcHJlc3Nl
ZCBwb2ludCArIHByaXZhdGUga2V5Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGtleUJpbmFyeTsKLSAg
ICBrZXlCaW5hcnkuYXBwZW5kKGtleURhdGEuZGF0YSgpICsgaW5kZXgsIGtleURhdGEuc2l6ZSgp
IC0gaW5kZXgpOworICAgIFZlY3Rvcjx1aW50OF90PiBrZXlCaW5hcnkgeyBrZXlEYXRhLmRhdGEo
KSArIGluZGV4LCBrZXlEYXRhLnNpemUoKSAtIGluZGV4IH07CiAgICAgaWYgKCFkb2VzVW5jb21w
cmVzc2VkUG9pbnRNYXRjaE5hbWVkQ3VydmUoY3VydmUsIGtleUJpbmFyeS5zaXplKCkpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBrZXlCaW5hcnkuYXBwZW5kKGtleURhdGEuZGF0YSgp
ICsgcHJpdmF0ZUtleVBvcywgZ2V0S2V5U2l6ZUZyb21OYW1lZEN1cnZlKGN1cnZlKSAvIDgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5
V3JhcE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tl
eVdyYXBNYWMubW0KaW5kZXggNTcxZGE0N2FhMjQzN2NiZmQ2NzM2OTU3NDk4OGEzYzFhYWExNjgy
ZC4uYTdmMDhmZDE3NzQzM2ZmMmJmNjU0MDdmY2RkYTI2ODIzZGNlNGRjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL1NlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwTWFj
Lm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KICNpbXBvcnQg
PHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1w
b3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2Vj
dXJpdHlTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvQ1N0cmluZy5oPgpAQCAtNjIsMTMgKzYzLDYgQEAgY29uc3QgTlNTdHJpbmcqIHRhZ0tleSA9
IEAidGFnIjsKIAogY29uc3Qgc2l6ZV90IG1hc3RlcktleVNpemVJbkJ5dGVzID0gMTY7CiAKLWlu
bGluZSBWZWN0b3I8dWludDhfdD4gdmVjdG9yRnJvbU5TRGF0YShOU0RhdGEqIGRhdGEpCi17Ci0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kKChjb25zdCB1aW50
OF90KilbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KIHN0YXRpYyBOU1N0cmluZyogbWFzdGVyS2V5QWNjb3VudE5hbWVGb3JDdXJyZW50QXBwbGlj
YXRpb24oKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNT3BlblNTTC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vb3BlbnNzbC9DcnlwdG9BbGdvcml0aG1BRVNfR0NNT3Bl
blNTTC5jcHAKaW5kZXggNGMyZGIzMWRkMmUyOGNiYTBiNzE4ZjI5YWI0M2E0MjRmM2YyNmY5OC4u
MjcyYTYyNDMzOWVhNDY0NTVkNTc1Y2EwOGRkYWNmN2VlZWJiNzU5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL29wZW5zc2wvQ3J5cHRvQWxnb3JpdGhtQUVTX0dDTU9wZW5TU0wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9vcGVuc3NsL0NyeXB0b0FsZ29yaXRobUFF
U19HQ01PcGVuU1NMLmNwcApAQCAtMTE1LDggKzExNSw3IEBAIHN0YXRpYyBPcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGNyeXB0RGVjcnlwdChjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgY29u
c3QKICAgICBpbnQgY2lwaGVyVGV4dExlbiA9IGNpcGhlclRleHQuc2l6ZSgpIC0gdGFnTGVuZ3Ro
OwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IHBsYWluVGV4dChjaXBoZXJUZXh0LnNpemUoKSk7Ci0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHRhZyh0YWdMZW5ndGgpOwotICAgIG1lbWNweSh0YWcuZGF0YSgp
LCBjaXBoZXJUZXh0LmRhdGEoKSArIGNpcGhlclRleHRMZW4sIHRhZ0xlbmd0aCk7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHRhZyB7IGNpcGhlclRleHQuZGF0YSgpICsgY2lwaGVyVGV4dExlbiwgdGFn
TGVuZ3RoIH07CiAKICAgICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIGNvbnRleHQKICAg
ICBpZiAoIShjdHggPSBFdnBDaXBoZXJDdHhQdHIoRVZQX0NJUEhFUl9DVFhfbmV3KCkpKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDgxNmZlZDk0ZTE0ZGMxN2MxZTNjYzM3OTkyNDc3ZmU1
ZmRiMWFlZGEuLjJmM2NkY2VjY2IzMmFhMjkyMzM4ZDMyN2Y3ZjQ1NDU0MTRiNGZkM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtMTEzLDExICsxMTMsOCBAQCBCbG9iOjpCbG9iKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBj
b25zdCBTdAogICAgICwgbV90eXBlKGNvbnRlbnRUeXBlKQogICAgICwgbV9zaXplKGJ1ZmZlci5z
aXplKCkpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgZGF0YS5hcHBlbmQoYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7Ci0KICAgICBWZWN0b3I8QmxvYlBhcnQ+IGJsb2JQ
YXJ0czsKLSAgICBibG9iUGFydHMuYXBwZW5kKEJsb2JQYXJ0KFdURk1vdmUoZGF0YSkpKTsKKyAg
ICBibG9iUGFydHMuYXBwZW5kKFZlY3RvciB7IGJ1ZmZlci5kYXRhQXNVSW50OFB0cigpLCBidWZm
ZXIuc2l6ZSgpIH0pOwogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5h
bFVSTCgpOwogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2lu
dGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJhY2tpbmdTdG9yZS5oCmlu
ZGV4IDdhYmRkMzQzODA0OTA2YWZkZGExYzY2YjEzZmI2NDJmYTRjNGRkMGMuLjBjNDQxMzI1MGU4
ZGU2OTQzNzljZmYwZGVkMGRkYzkyN2ZlYjM5OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCYWNraW5nU3RvcmUuaApAQCAtMjA1LDggKzIwNSw3
IEBAIHByaXZhdGU6CiAgICAgICAgICwgbV9wcmVtdWx0aXBseUFscGhhKG90aGVyLm1fcHJlbXVs
dGlwbHlBbHBoYSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9zaXplLmlzRW1wdHkoKSAmJiAh
aXNPdmVyU2l6ZShtX3NpemUpKTsKLSAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlcjsKLSAgICAg
ICAgYnVmZmVyLmFwcGVuZChvdGhlci5tX3BpeGVscy0+ZGF0YSgpLCBvdGhlci5tX3BpeGVscy0+
c2l6ZSgpKTsKKyAgICAgICAgVmVjdG9yPGNoYXI+IGJ1ZmZlciB7IG90aGVyLm1fcGl4ZWxzLT5k
YXRhKCksIG90aGVyLm1fcGl4ZWxzLT5zaXplKCkgfTsKICAgICAgICAgbV9waXhlbHMgPSBTaGFy
ZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpjcmVhdGUoV1RGTW92ZShidWZmZXIpKTsKICAgICAgICAg
bV9waXhlbHNQdHIgPSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Kj4oY29uc3RfY2FzdDxjaGFy
Kj4obV9waXhlbHMtPmRhdGEoKSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ2Fpcm8uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRp
ZXNDYWlyby5jcHAKaW5kZXggZDc5NzI4NTU1YjdkYjliNTljYjYxNWM1NWE3YTdhNjg1MWNiNTdj
OC4uNWE0ZDNhNTA4NTlhNWU4NDRjN2Y0MjQxMzA2OTE3MTQ4MDJiMDFjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJVdGlsaXRp
ZXNDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
SW1hZ2VCdWZmZXJVdGlsaXRpZXNDYWlyby5jcHAKQEAgLTEyMyw5ICsxMjMsNyBAQCBWZWN0b3I8
dWludDhfdD4gZGF0YShjYWlyb19zdXJmYWNlX3QqIGltYWdlLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBPcHRpb25hbDxkbwogICAgIGlmICghZW5jb2RlSW1hZ2UoaW1hZ2UsIG1pbWVUeXBlLCBx
dWFsaXR5LCBidWZmZXIsIGJ1ZmZlclNpemUpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAg
VmVjdG9yPHVpbnQ4X3Q+IGltYWdlRGF0YTsKLSAgICBpbWFnZURhdGEuYXBwZW5kKGJ1ZmZlci5n
ZXQoKSwgYnVmZmVyU2l6ZSk7Ci0gICAgcmV0dXJuIGltYWdlRGF0YTsKKyAgICByZXR1cm4geyBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZ2V0KCkpLCBidWZmZXJTaXpl
IH07CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKEdUSykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9u
LmNwcAppbmRleCBjOWJlMjc4ODllNGQyZTUzMTJiM2VjOTNhMzBmNGE3YzhlNzY5MzkzLi41MDVm
ODQ1YzliYmZiMmVjOTBkNWFkZjFlYzQwMzU0Y2Q1MWRhYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmNwcApAQCAtNDE5LDkgKzQxOSw3IEBAIHZvaWQgY29ubmVjdFNpbXBsZUJ1c01lc3Nh
Z2VDYWxsYmFjayhHc3RFbGVtZW50KiBwaXBlbGluZSkKIAogVmVjdG9yPHVpbnQ4X3Q+IEdzdE1h
cHBlZEJ1ZmZlcjo6Y3JlYXRlVmVjdG9yKCkgY29uc3QKIHsKLSAgICBWZWN0b3I8dWludDhfdD4g
dmVjdG9yOwotICAgIHZlY3Rvci5hcHBlbmQoZGF0YSgpLCBzaXplKCkpOwotICAgIHJldHVybiB2
ZWN0b3I7CisgICAgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsKIH0KIAogUmVmPFNoYXJlZEJ1
ZmZlcj4gR3N0TWFwcGVkT3duZWRCdWZmZXI6OmNyZWF0ZVNoYXJlZEJ1ZmZlcigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL0NETVBy
b3h5Q2xlYXJLZXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL2VtZS9DRE1Qcm94eUNsZWFyS2V5LmNwcAppbmRleCBiZTE1NDI1NWYzZDc2ODMxNWUzNTY4
NzY5MDQ3NmY3ZjhhZTNiYmYyLi5jZjgyMGQxNjViM2QwZDBlNWI4ZDA1OGE1NjJiMzQ5MTQxMzg4
MjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL0NETVByb3h5Q2xlYXJLZXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvQ0RNUHJveHlDbGVhcktleS5jcHAKQEAgLTExOCw4ICsx
MTgsNyBAQCBib29sIENETVByb3h5Q2xlYXJLZXk6OmNlbmNTZXREZWNyeXB0aW9uS2V5KGNlbmNE
ZWNyeXB0Q29udGV4dCYgaW4pCiAgICAgLy8gRklYTUU6IFVubmVjZXNzYXJ5IGNvcHksIGNhbiB3
ZSBhdm9pZCB0aGlzIHdoaWxlIHN0aWxsIGV4cG9zaW5nCiAgICAgLy8gYSBub24tR1N0cmVhbWVy
LXNwZWNpZmljIERlY3J5cHRJbnB1dCBBUEk/IFRoZXNlIGJ1ZmZlcnMgYXJlCiAgICAgLy8gc21h
bGwgKDE2IGJ5dGVzKSwgc28gbm90IGEgaHVnZSBkZWFsLCBJIGd1ZXNzLgotICAgIFZlY3Rvcjx1
aW50OF90PiBrZXlJRFZlYzsKLSAgICBrZXlJRFZlYy5hcHBlbmQoaW4ua2V5SUQsIGluLmtleUlE
U2l6ZUluQnl0ZXMpOworICAgIFZlY3Rvcjx1aW50OF90PiBrZXlJRFZlYyB7IGluLmtleUlELCBp
bi5rZXlJRFNpemVJbkJ5dGVzIH07CiAKICAgICBhdXRvIGtleURhdGEgPSBnZXRPcldhaXRGb3JL
ZXlWYWx1ZShrZXlJRFZlYywgV1RGTW92ZShpbi5jZG1Qcm94eURlY3J5cHRpb25DbGllbnQpKTsK
ICAgICBpZiAoIWtleURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKaW5k
ZXggN2EwZWJlMzhmMmEyMDkyMzE3OTg1Zjg0MTg3OWNhYWE4OTcyZTc0YS4uZjgyMTVjMGUwZWM5
MDg5MmJlYWI1OThjMWMzMTBhNjQ2MzUxYjQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcApAQCAtOTYsOCArOTYsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9j
azo6ZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIHsKICAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fYnVmZmVyTG9jayB9OwotICAgICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUobV9idWZm
ZXIubGVuZ3RoKCkpOwotICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSgpLCBtX2J1ZmZlci5jaGFy
YWN0ZXJzOCgpLCBtX2J1ZmZlci5sZW5ndGgoKSk7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2
YWx1ZSB7IG1fYnVmZmVyLmNoYXJhY3RlcnM4KCksIG1fYnVmZmVyLmxlbmd0aCgpIH07CiAgICAg
ICAgIG1fYnVmZmVyLmNsZWFyKCk7CiAgICAgICAgIGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFdURk1vdmUodmFsdWUpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDYxY2QzOGY2N2IxYzhlYmEwNjg0NjdkNGQ2YzcxMjY0
YmYyOWFiZDMuLjcxMzBhMGM4MWVmNzIwZjQ5MGU4NzJjNTgwZDk3YTdiZmUzNTYxOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCkBAIC0xNjUsOSAr
MTY1LDcgQEAgRm9ybURhdGFFbGVtZW50IEZvcm1EYXRhRWxlbWVudDo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gc3dpdGNoT24oZGF0YSwKICAgICAgICAgW10gKGNvbnN0IFZl
Y3RvcjxjaGFyPiYgYnl0ZXMpIHsKLSAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBjb3B5OwotICAg
ICAgICAgICAgY29weS5hcHBlbmQoYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwotICAgICAg
ICAgICAgcmV0dXJuIEZvcm1EYXRhRWxlbWVudChXVEZNb3ZlKGNvcHkpKTsKKyAgICAgICAgICAg
IHJldHVybiBGb3JtRGF0YUVsZW1lbnQoVmVjdG9yIHsgYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXpl
KCkgfSk7CiAgICAgICAgIH0sIFtdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxl
RGF0YSYgZmlsZURhdGEpIHsKICAgICAgICAgICAgIHJldHVybiBGb3JtRGF0YUVsZW1lbnQoZmls
ZURhdGEuaXNvbGF0ZWRDb3B5KCkpOwogICAgICAgICB9LCBbXSAoY29uc3QgRm9ybURhdGFFbGVt
ZW50OjpFbmNvZGVkQmxvYkRhdGEmIGJsb2JEYXRhKSB7CkBAIC0xODUsOSArMTgzLDcgQEAgdm9p
ZCBGb3JtRGF0YTo6YXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBWZWN0b3I8Y2hhcj4gdmVj
dG9yOwotICAgIHZlY3Rvci5hcHBlbmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0
YSksIHNpemUpOwotICAgIG1fZWxlbWVudHMuYXBwZW5kKFdURk1vdmUodmVjdG9yKSk7CisgICAg
bV9lbGVtZW50cy5hcHBlbmQoVmVjdG9yIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
ZGF0YSksIHNpemUgfSk7CiB9CiAKIHZvaWQgRm9ybURhdGE6OmFwcGVuZEZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcAppbmRleCBhNjMyYTFjMGUxMDJiYjQyNzZlNDEzNDhl
MDE4NzI4Yzc3ZWIyOTMxLi4yMWYwOGE5ZGIzYWRlODBlYTViOWM4ZWFiZmNhNjIwNzM2YTI0MTBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNT
TEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09w
ZW5TU0xIZWxwZXIuY3BwCkBAIC0xMTYsOSArMTE2LDcgQEAgcHVibGljOgogICAgICAgICBpZiAo
bGVuZ3RoIDwgMCkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChkYXRhLCBsZW5n
dGgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXR1cm4gVmVjdG9yIHsgZGF0
YSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGgpIH07CiAgICAgfQogCiAgICAgU3RyaW5nIGdl
dERhdGFBc1N0cmluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5k
ZXggYWExNDFkOGVmNzUyYjg0NjZmNWQ3ZTExMGZlMjg2YjkxNDEyYmZmOC4uOGNmMDJiMTc5ZWJm
YmRkMzc3YTZhNTQ4ZDBjNmE3YWY2OTE3N2Y5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtMzc0OSw4ICszNzQ5LDcgQEAgUmVmPEFycmF5QnVmZmVyPiBJbnRlcm5hbHM6
OnNlcmlhbGl6ZU9iamVjdChjb25zdCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYKIAog
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW50ZXJuYWxzOjpkZXNlcmlhbGl6ZUJ1ZmZlcihB
cnJheUJ1ZmZlciYgYnVmZmVyKSBjb25zdAogewotICAgIFZlY3Rvcjx1aW50OF90PiBieXRlczsK
LSAgICBieXRlcy5hcHBlbmQoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci5kYXRh
KCkpLCBidWZmZXIuYnl0ZUxlbmd0aCgpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gYnl0ZXMgeyBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5ieXRlTGVu
Z3RoKCkgfTsKICAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChXVEZNb3Zl
KGJ5dGVzKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1M
RG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAppbmRleCAzMjQ4NDU1NGNmOWQ0NzNlYTJlOTcxZDFl
MWVhOWRmMWJjMzgwMTI5Li4xMTVhYmIxYmJlNDJiOThiOWU0MGI3YjEzN2FlZDQ2YzRmM2Y3ZDI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBh
cnNlckxpYnhtbDIuY3BwCkBAIC00OTAsMTAgKzQ5MCw3IEBAIHN0YXRpYyB2b2lkKiBvcGVuRnVu
Yyhjb25zdCBjaGFyKiB1cmkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBWZWN0b3I8Y2hhcj4g
YnVmZmVyOwotICAgIGlmIChkYXRhKQotICAgICAgICBidWZmZXIuYXBwZW5kKGRhdGEtPmRhdGEo
KSwgZGF0YS0+c2l6ZSgpKTsKLSAgICByZXR1cm4gbmV3IE9mZnNldEJ1ZmZlcihXVEZNb3ZlKGJ1
ZmZlcikpOworICAgIHJldHVybiBuZXcgT2Zmc2V0QnVmZmVyKHsgZGF0YS0+ZGF0YSgpLCBkYXRh
LT5zaXplKCkgfSk7CiB9CiAKIHN0YXRpYyBpbnQgcmVhZEZ1bmModm9pZCogY29udGV4dCwgY2hh
ciogYnVmZmVyLCBpbnQgbGVuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQXJyYXlSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0FycmF5UmVm
ZXJlbmNlLmgKaW5kZXggMzQ2N2JkZmRiNmExYzZlZDQzNDEyNTFiZjg4ZjA2MjE2ZDE4NjY3My4u
MTgxZDRkZTUyNmY5YTc0ZDM2NmZkOGNiZTVhYTM1YTNjYmFjMDZkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oCkBAIC0xMDcsMTAgKzEwNyw3IEBAIHB1
YmxpYzoKIAogICAgIFZlY3RvcjxUPiB2ZWN0b3IoKSBjb25zdAogICAgIHsKLSAgICAgICAgVmVj
dG9yPFQ+IHJlc3VsdDsKLSAgICAgICAgaWYgKCFpc0VtcHR5KCkpCi0gICAgICAgICAgICByZXN1
bHQuYXBwZW5kKG1fZGF0YSwgRXh0ZW50KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgcmV0dXJuIHsgbV9kYXRhLCBFeHRlbnQgfTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDdhNzdjMGFiYzdmODJiMjQwNzhjY2MxMWM1NDRkNTVj
M2ExNmU5ZWIuLmJiZTEzNTk4YTlhMzI2MDg5MzJjODgzZjBiYTQ0M2Q5YjJkMTMwOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC01NCw2ICs1NCw3IEBACiAjaW1wb3J0IDxwYWwv
Y3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKQEAgLTI5
MywxMiArMjk0LDYgQEAgLSAodm9pZCljYW5jZWwKIH0KIAogI2lmIEVOQUJMRShXRUJfQVVUSE4p
Ci1zdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvckZyb21OU0RhdGEoTlNEYXRhKiBkYXRhKQot
ewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZCgoY29uc3Qg
dWludDhfdCopZGF0YS5ieXRlcywgZGF0YS5sZW5ndGgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
CiAKIHN0YXRpYyBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpS
cEVudGl0eSBwdWJsaWNLZXlDcmVkZW50aWFsUnBFbnRpdHkoX1dLUHVibGljS2V5Q3JlZGVudGlh
bFJlbHlpbmdQYXJ0eUVudGl0eSAqcnBFbnRpdHkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAppbmRleCAzNmFmMTNlNzU5ZmEwNTMz
ZmRhYzhmYjUzYWJhZjM1MGUzOGIyM2QwLi4zYWI4MzNjOGUwN2NmZmZiZDU4NzM0MDczYWFjNzgx
YzcwY2JlYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9J
Y29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lj
b25EYXRhYmFzZS5jcHAKQEAgLTYzOCw5ICs2MzgsNyBAQCB2b2lkIEljb25EYXRhYmFzZTo6c2V0
SWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCB1bnNpZ25lZCBjaGFy
KgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAg
ZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGljb25EYXRhU2l6ZSk7Ci0gICAgZGF0YS5hcHBl
bmQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oaWNvbkRhdGEpLCBpY29uRGF0YVNpemUp
OworICAgIFZlY3RvcjxjaGFyPiBkYXRhIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
aWNvbkRhdGEpLCBpY29uRGF0YVNpemUgfTsKICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWNvblVSTCA9IGljb25VUkwuaXNv
bGF0ZWRDb3B5KCksIGljb25EYXRhID0gV1RGTW92ZShkYXRhKSwgcGFnZVVSTCA9IHBhZ2VVUkwu
aXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgICAg
IGlmIChtX2RiLmlzT3BlbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1l
U09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCAyNjU4OThjZmQ4ZjViN2Y3MDczM2RjNTE4
ODhiNTYwOGQ4YjM3YmM3Li4yMDEzNWFkODg2NDY3OWE2MzAyMzBiMDJlOTYxYmRkZWRlMmEwNzYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRp
b24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNl
c3Npb24ubW0KQEAgLTQzLDEzICs0Myw2IEBAIG5hbWVzcGFjZSB7CiBjb25zdCBjaGFyKiBzb0F1
dGhvcml6YXRpb25Qb3N0RGlkU3RhcnRNZXNzYWdlVG9QYXJlbnQgPSAiPHNjcmlwdD5wYXJlbnQu
cG9zdE1lc3NhZ2UoJ1NPQXV0aG9yaXphdGlvbkRpZFN0YXJ0JywgJyonKTs8L3NjcmlwdD4iOwog
Y29uc3QgY2hhciogc29BdXRob3JpemF0aW9uUG9zdERpZENhbmNlbE1lc3NhZ2VUb1BhcmVudCA9
ICI8c2NyaXB0PnBhcmVudC5wb3N0TWVzc2FnZSgnU09BdXRob3JpemF0aW9uRGlkQ2FuY2VsJywg
JyonKTs8L3NjcmlwdD4iOwogCi1zdGF0aWMgaW5saW5lIFZlY3Rvcjx1aW50OF90PiBjb252ZXJ0
Qnl0ZXNUb1ZlY3Rvcihjb25zdCB1aW50OF90IGJ5dGVBcnJheVtdLCBjb25zdCBzaXplX3QgbGVu
Z3RoKQotewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgcmVzdWx0LmFwcGVuZChi
eXRlQXJyYXksIGxlbmd0aCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UKIAogUmVmPFNPQXV0aG9yaXphdGlvblNlc3Npb24+IFN1YkZyYW1lU09BdXRob3JpemF0aW9u
U2Vzc2lvbjo6Y3JlYXRlKFNPQXV0aG9yaXphdGlvbiAqc29BdXRob3JpemF0aW9uLCBSZWY8QVBJ
OjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIFdlYlBhZ2VQcm94eSYgcGFn
ZSwgQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlciwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQp
CkBAIC03Nyw3ICs3MCw3IEBAIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6flN1YkZy
YW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbigpCiB2b2lkIFN1YkZyYW1lU09BdXRob3JpemF0aW9u
U2Vzc2lvbjo6ZmFsbEJhY2tUb1dlYlBhdGhJbnRlcm5hbCgpCiB7CiAgICAgQVNTRVJUKG5hdmln
YXRpb25BY3Rpb24oKSk7Ci0gICAgYXBwZW5kUmVxdWVzdFRvTG9hZChVUkwobmF2aWdhdGlvbkFj
dGlvbigpLT5yZXF1ZXN0KCkudXJsKCkpLCBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzb0F1dGhvcml6YXRpb25Qb3N0RGlkQ2FuY2VsTWVzc2Fn
ZVRvUGFyZW50KSwgc3RybGVuKHNvQXV0aG9yaXphdGlvblBvc3REaWRDYW5jZWxNZXNzYWdlVG9Q
YXJlbnQpKSk7CisgICAgYXBwZW5kUmVxdWVzdFRvTG9hZChVUkwobmF2aWdhdGlvbkFjdGlvbigp
LT5yZXF1ZXN0KCkudXJsKCkpLCBWZWN0b3IgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPihzb0F1dGhvcml6YXRpb25Qb3N0RGlkQ2FuY2VsTWVzc2FnZVRvUGFyZW50KSwgc3RybGVu
KHNvQXV0aG9yaXphdGlvblBvc3REaWRDYW5jZWxNZXNzYWdlVG9QYXJlbnQpIH0pOwogICAgIGFw
cGVuZFJlcXVlc3RUb0xvYWQoVVJMKG5hdmlnYXRpb25BY3Rpb24oKS0+cmVxdWVzdCgpLnVybCgp
KSwgU3RyaW5nKG5hdmlnYXRpb25BY3Rpb24oKS0+cmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpKSk7
CiB9CiAKQEAgLTkyLDcgKzg1LDcgQEAgdm9pZCBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Np
b246OmNvbXBsZXRlSW50ZXJuYWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXMKICAgICAgICAg
ZmFsbEJhY2tUb1dlYlBhdGhJbnRlcm5hbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGFwcGVuZFJlcXVlc3RUb0xvYWQoVVJMKHJlc3BvbnNlLnVybCgpKSwgY29udmVydEJ5dGVzVG9W
ZWN0b3IocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEu
bGVuZ3RoKSk7CisgICAgYXBwZW5kUmVxdWVzdFRvTG9hZChVUkwocmVzcG9uc2UudXJsKCkpLCBW
ZWN0b3IgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0
YS5sZW5ndGggfSk7CiB9CiAKIHZvaWQgU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpi
ZWZvcmVTdGFydCgpCkBAIC0xMDAsNyArOTMsNyBAQCB2b2lkIFN1YkZyYW1lU09BdXRob3JpemF0
aW9uU2Vzc2lvbjo6YmVmb3JlU3RhcnQoKQogICAgIC8vIENhbmNlbGxlZCB0aGUgY3VycmVudCBs
b2FkIGJlZm9yZSBsb2FkaW5nIHRoZSBkYXRhIHRvIHBvc3QgU09BdXRob3JpemF0aW9uRGlkU3Rh
cnQgdG8gdGhlIHBhcmVudCBmcmFtZS4KICAgICBpbnZva2VDYWxsYmFjayh0cnVlKTsKICAgICBB
U1NFUlQobmF2aWdhdGlvbkFjdGlvbigpKTsKLSAgICBhcHBlbmRSZXF1ZXN0VG9Mb2FkKFVSTChu
YXZpZ2F0aW9uQWN0aW9uKCktPnJlcXVlc3QoKS51cmwoKSksIGNvbnZlcnRCeXRlc1RvVmVjdG9y
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHNvQXV0aG9yaXphdGlvblBvc3REaWRT
dGFydE1lc3NhZ2VUb1BhcmVudCksIHN0cmxlbihzb0F1dGhvcml6YXRpb25Qb3N0RGlkU3RhcnRN
ZXNzYWdlVG9QYXJlbnQpKSk7CisgICAgYXBwZW5kUmVxdWVzdFRvTG9hZChVUkwobmF2aWdhdGlv
bkFjdGlvbigpLT5yZXF1ZXN0KCkudXJsKCkpLCBWZWN0b3IgeyByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihzb0F1dGhvcml6YXRpb25Qb3N0RGlkU3RhcnRNZXNzYWdlVG9QYXJlbnQp
LCBzdHJsZW4oc29BdXRob3JpemF0aW9uUG9zdERpZFN0YXJ0TWVzc2FnZVRvUGFyZW50KSB9KTsK
IH0KIAogdm9pZCBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb246OmRpZEZpbmlzaExvYWQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAK
aW5kZXggYjlmZGEyOGVhOTA3MjRhYzZmNWRjZDVmZDkzZjM4NDI2ZDc0MjBlNC4uM2UyNjRmZDc2
MTdmYTFjZTc4YjNmZTE3NWE0MTU3MDJiMDcyM2Y3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCkBAIC0xNjMsMTAgKzE2Myw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0
Rm9yRXh0ZW5zaW9uKGNvbnN0IEluCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgcmV0dXJuZWRWYWx1ZSB9KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGRhdGE7Ci0gICAgICAgICAgICBkYXRhLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoZGF0YVJlZmVyZW5jZS5zaXplKCkpOwotICAgICAgICAgICAgZGF0YS5hcHBlbmQoZGF0
YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKLSAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgeyBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoV1RG
TW92ZShkYXRhKSkucHRyKCkgfSB9KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
eyBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoVmVjdG9yIHsgZGF0YVJlZmVyZW5j
ZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpIH0pLnB0cigpIH0gfSk7CiAgICAgICAgIH0p
OwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0hpZENvbm5lY3Rpb24ubW0KaW5kZXggZjJmMTkz
Yzc1MDEyNGI4Y2U2MzA1YzI3NTBhNjJhMWYzNGZhZDliNi4uNDVhY2RjYjJiZDJlOTVmM2MxNWZj
MDA2MDljNWRhYWRlODk1M2M1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvSGlkQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9IaWRDb25uZWN0aW9uLm1tCkBA
IC01MSw5ICs1MSw3IEBAIHN0YXRpYyB2b2lkIHJlcG9ydFJlY2VpdmVkKHZvaWQqIGNvbnRleHQs
IElPUmV0dXJuIHN0YXR1cywgdm9pZCosIElPSElEUmVwb3J0VHlwCiAgICAgQVNTRVJUKHJlcG9y
dElEID09IGtIaWRSZXBvcnRJZCk7CiAgICAgQVNTRVJUKHJlcG9ydExlbmd0aCA9PSBrSGlkTWF4
UGFja2V0U2l6ZSk7CiAKLSAgICBWZWN0b3I8dWludDhfdD4gcmVwb3J0RGF0YTsKLSAgICByZXBv
cnREYXRhLmFwcGVuZChyZXBvcnQsIHJlcG9ydExlbmd0aCk7Ci0gICAgY29ubmVjdGlvbi0+cmVj
ZWl2ZVJlcG9ydChXVEZNb3ZlKHJlcG9ydERhdGEpKTsKKyAgICBjb25uZWN0aW9uLT5yZWNlaXZl
UmVwb3J0KHsgcmVwb3J0LCBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlcG9ydExlbmd0aCkgfSk7CiB9
CiAKIEhpZENvbm5lY3Rpb246OkhpZENvbm5lY3Rpb24oSU9ISUREZXZpY2VSZWYgZGV2aWNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IGYyMmYwZjhiN2Fk
YTllZjg4MDkyNmUxOTI0NGQyMjMyNzgxZDk1YzkuLmEyMWVmMDBjYTFhZGQxYTdiODYxYTM3ZmFl
NWYzZDgzYzM0NzRhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3Iu
bW0KQEAgLTQzLDYgKzQzLDcgQEAKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQg
PHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvY29j
b2EvVmVjdG9yQ29jb2EuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFz
aC5oPgpAQCAtODgsMTggKzg5LDEwIEBAIHN0YXRpYyBpbmxpbmUgSGFzaFNldDxTdHJpbmc+IHBy
b2R1Y2VIYXNoU2V0KGNvbnN0IFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGlubGluZSBWZWN0b3I8dWludDhfdD4gdG9WZWN0b3Io
TlNEYXRhICpkYXRhKQotewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgcmVzdWx0
LmFwcGVuZChyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0
YS5sZW5ndGgpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgVmVjdG9y
PHVpbnQ4X3Q+IGFhZ3VpZFZlY3RvcigpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsK
LSAgICByZXN1bHQuYXBwZW5kKGFhZ3VpZCwgYWFndWlkTGVuZ3RoKTsKLSAgICByZXR1cm4gcmVz
dWx0OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxWZWN0b3I8dWludDhfdD4+IGFhZ3VpZFZl
Y3RvciA9IHsgYWFndWlkLCBhYWd1aWRMZW5ndGggfTsKKyAgICByZXR1cm4gYWFndWlkVmVjdG9y
OwogfQogCiBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU0RhdGE+IHRvTlNEYXRhKGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgZGF0YSkKQEAgLTE1Myw3ICsxNDYsNyBAQCBzdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Pj4gZ2V0RXhpc3RpbmdD
cmVkZW50aQogICAgIFZlY3RvcjxSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4g
cmVzdWx0OwogICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvcnRlZEF0dHJpYnV0
ZXNBcnJheS5jb3VudCk7CiAgICAgZm9yIChOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgaW4gc29y
dGVkQXR0cmlidXRlc0FycmF5KSB7Ci0gICAgICAgIGF1dG8gZGVjb2RlZFJlc3BvbnNlID0gY2Jv
cjo6Q0JPUlJlYWRlcjo6cmVhZCh0b1ZlY3RvcihhdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxp
Y2F0aW9uVGFnXSkpOworICAgICAgICBhdXRvIGRlY29kZWRSZXNwb25zZSA9IGNib3I6OkNCT1JS
ZWFkZXI6OnJlYWQodmVjdG9yRnJvbU5TRGF0YShhdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxp
Y2F0aW9uVGFnXSkpOwogICAgICAgICBpZiAoIWRlY29kZWRSZXNwb25zZSB8fCAhZGVjb2RlZFJl
c3BvbnNlLT5pc01hcCgpKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC00NzEsNyArNDY0LDcgQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFZl
Y3Rvcjx1aW50OF90PiYmIGMKICAgICB7CiAgICAgICAgIFZlY3RvcjxjYm9yOjpDQk9SVmFsdWU+
IGNib3JBcnJheTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBbY2VydGlmaWNhdGVz
IGNvdW50XTsgaSsrKQotICAgICAgICAgICAgY2JvckFycmF5LmFwcGVuZChjYm9yOjpDQk9SVmFs
dWUodG9WZWN0b3IoKE5TRGF0YSAqKWFkb3B0Q0YoU2VjQ2VydGlmaWNhdGVDb3B5RGF0YSgoX19i
cmlkZ2UgU2VjQ2VydGlmaWNhdGVSZWYpY2VydGlmaWNhdGVzW2ldKSkuZ2V0KCkpKSk7CisgICAg
ICAgICAgICBjYm9yQXJyYXkuYXBwZW5kKGNib3I6OkNCT1JWYWx1ZSh2ZWN0b3JGcm9tTlNEYXRh
KChOU0RhdGEgKilhZG9wdENGKFNlY0NlcnRpZmljYXRlQ29weURhdGEoKF9fYnJpZGdlIFNlY0Nl
cnRpZmljYXRlUmVmKWNlcnRpZmljYXRlc1tpXSkpLmdldCgpKSkpOwogICAgICAgICBhdHRlc3Rh
dGlvblN0YXRlbWVudE1hcFtjYm9yOjpDQk9SVmFsdWUoIng1YyIpXSA9IGNib3I6OkNCT1JWYWx1
ZShXVEZNb3ZlKGNib3JBcnJheSkpOwogICAgIH0KICAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0
ID0gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF1dGhEYXRhKSwgImFwcGxlIiwgV1RG
TW92ZShhdHRlc3RhdGlvblN0YXRlbWVudE1hcCksIGNyZWF0aW9uT3B0aW9ucy5hdHRlc3RhdGlv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9OZmNDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTmZjQ29ubmVjdGlvbi5tbQppbmRleCA5MTA0ODUwNzk3NDExN2Jm
OWVmM2UzNmQxODQyZmVlMTk4NDk1Njc0Li4xZTcwYTMxNTQxZjNhNjMwOGMzZTMxYzRiZDJiNmEx
NmFkN2U5ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9OZmNDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL05mY0Nvbm5lY3Rpb24ubW0KQEAgLTMxLDYgKzMx
LDcgQEAKICNpbXBvcnQgIk5mY1NlcnZpY2UuaCIKICNpbXBvcnQgIldLTkZSZWFkZXJTZXNzaW9u
RGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvRmlkb0NvbnN0YW50cy5oPgorI2ltcG9ydCA8
d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CkBAIC05MCwxMSArOTEsOSBAQCBOZmNDb25uZWN0aW9uOjp+TmZj
Q29ubmVjdGlvbigpCiAKIFZlY3Rvcjx1aW50OF90PiBOZmNDb25uZWN0aW9uOjp0cmFuc2FjdChW
ZWN0b3I8dWludDhfdD4mJiBkYXRhKSBjb25zdAogewotICAgIFZlY3Rvcjx1aW50OF90PiByZXNw
b25zZTsKICAgICAvLyBUaGUgbWV0aG9kIHdpbGwgcmV0dXJuIGFuIGVtcHR5IE5TRGF0YSBpZiB0
aGUgdGFnIGlzIGRpc2Nvbm5lY3RlZC4KICAgICBhdXRvICpyZXNwb25zZURhdGEgPSBbbV9zZXNz
aW9uIHRyYW5zY2VpdmU6YWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpkYXRh
LmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldKS5nZXQoKV07Ci0gICAgcmVzcG9uc2UuYXBwZW5k
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlc3BvbnNlRGF0YS5ieXRlcyksIHJl
c3BvbnNlRGF0YS5sZW5ndGgpOwotICAgIHJldHVybiByZXNwb25zZTsKKyAgICByZXR1cm4gdmVj
dG9yRnJvbU5TRGF0YShyZXNwb25zZURhdGEpOwogfQogCiB2b2lkIE5mY0Nvbm5lY3Rpb246OnN0
b3AoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNw
cAppbmRleCA5NzZjZmI1ZDYzODBlN2Y4ZDM2MmY2MmI1ZTFiZDE1ZTViZDVhNmMzLi5lNzM1N2Qx
MTI1MGQ2MGVjOGM4MzhhODcwODE3MGUxZjJjNjhmNWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMjIwLDEwICsyMjAsOCBAQCBhdXRvIFdl
YlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAt
PiBFeGNlcHRpb25UeXBlCiAgICAgCiAgICAgaWYgKGlzU3luYygpKSB7CiAgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhOwotICAgICAgICBpZiAobV9zeW5jRGF0YSkgewotICAgICAgICAgICAg
ZGF0YS5yZXNpemUobV9zeW5jRGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgICAgIG1lbWNweShkYXRh
LmRhdGEoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9zeW5jRGF0YS0+ZGF0
YSgpKSwgbV9zeW5jRGF0YS0+c2l6ZSgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAobV9zeW5j
RGF0YSkKKyAgICAgICAgICAgIGRhdGEgPSB7IG1fc3luY0RhdGEtPmRhdGFBc1VJbnQ4UHRyKCks
IG1fc3luY0RhdGEtPnNpemUoKSB9OwogCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVy
KG1fc3luY1Jlc3BvbnNlLCBlcnJvciwgV1RGTW92ZShkYXRhKSk7CiAgICAgICAgIG1fc3luY0Rh
dGEgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKaW5kZXggNmE4YzYzMjEwZDI3MmFiMzNl
OTJjMTFiZWZjZGYwMzliNjBmZjdjNS4uNDdlM2NhOTZlOTNjNTE0MTg0MmE3MzNiYWQxMjY0Y2Jm
MTUyNDkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
VVJMU2NoZW1lVGFza1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCkBAIC0xNTQsOSArMTU0LDcgQEAgdm9pZCBX
ZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25zdCB1
aW50OF90KiBkYXRhKQogCiAgICAgaWYgKG1fd2FpdGluZ0ZvckNvbXBsZXRpb25IYW5kbGVyKSB7
CiAgICAgICAgIFdFQlVSTFNDSEVNRVRBU0tQUk9YWV9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJk
aWRSZWNlaXZlRGF0YTogUmVjZWl2ZWQgZGF0YSBkdXJpbmcgcmVzcG9uc2UgcHJvY2Vzc2luZywg
cXVldWluZyBpdC4iKTsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGFWZWN0b3I7Ci0gICAg
ICAgIGRhdGFWZWN0b3IuYXBwZW5kKGRhdGEsIHNpemUpOwotICAgICAgICBxdWV1ZVRhc2soW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZGF0YVZlY3RvciA9IFdURk1vdmUo
ZGF0YVZlY3RvcildIHsKKyAgICAgICAgcXVldWVUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGRhdGFWZWN0b3IgPSBWZWN0b3IgeyBkYXRhLCBzaXplIH1dIHsKICAg
ICAgICAgICAgIGRpZFJlY2VpdmVEYXRhKGRhdGFWZWN0b3Iuc2l6ZSgpLCBkYXRhVmVjdG9yLmRh
dGEoKSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>