<?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>188592</bug_id>
          
          <creation_ts>2018-08-14 16:53:28 -0700</creation_ts>
          <short_desc>NetworkCORSPreflightChecker should proceed in case of ProtectionSpaceAuthenticationSchemeServerTrustEvaluationRequested even though the WebKit app is not implementing the didReceiveAuthenticationChallenge/didReceiveAuthenticationChallengeInFrame callback</short_desc>
          <delta_ts>2018-08-15 17:05:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1450176</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-14 16:53:28 -0700</bug_when>
    <thetext>Otherwise the preflight check might hang</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450178</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-14 16:53:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/43210331&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450180</commentid>
    <comment_count>2</comment_count>
      <attachid>347132</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-14 17:00:31 -0700</bug_when>
    <thetext>Created attachment 347132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450183</commentid>
    <comment_count>3</comment_count>
      <attachid>347132</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 17:04:08 -0700</bug_when>
    <thetext>Comment on attachment 347132
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.cpp:107
&gt; +    // FIXME: We should implement PROTECTION_SPACE_AUTH_CALLBACK code path.

We most definitely should not.  We should deprecate and remove it, not add to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450186</commentid>
    <comment_count>4</comment_count>
      <attachid>347132</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-14 17:08:54 -0700</bug_when>
    <thetext>Comment on attachment 347132
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.cpp:109
&gt; +        if (disposition == AuthenticationChallengeDisposition::Cancel &amp;&amp; weakThis)

This feels iffy to me.  What about RejectProtectionSpace?

&gt; Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.cpp:111
&gt; +            weakThis-&gt;wasBlocked();
&gt; +        completionHandler(disposition, credential);

This flow is not very clear.  Why do we need to call a completionHandler and m_completionCallback, which seem to do separate things?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450189</commentid>
    <comment_count>5</comment_count>
      <attachid>347132</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-08-14 17:13:10 -0700</bug_when>
    <thetext>Comment on attachment 347132
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.cpp:98
&gt; +        completionHandler(AuthenticationChallengeDisposition::RejectProtectionSpace, { });

The changelog says you proceed but here it seems to reject?

&gt; Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.h:45
&gt;      struct Parameters {

I admit, I do not really understand the change. I thought I had re-introduced previous behavior but apparently not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450223</commentid>
    <comment_count>6</comment_count>
      <attachid>347132</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-14 20:45:00 -0700</bug_when>
    <thetext>Comment on attachment 347132
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.cpp:98
&gt;&gt; +        completionHandler(AuthenticationChallengeDisposition::RejectProtectionSpace, { });
&gt; 
&gt; The changelog says you proceed but here it seems to reject?

We reject the protection space, we do not cancel the load.
This is what happens for NetworkResourceLoader in NetworkLoad::continueCanAuthenticateAgainstProtectionSpace and what was used before r234626.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.cpp:107
&gt;&gt; +    // FIXME: We should implement PROTECTION_SPACE_AUTH_CALLBACK code path.
&gt; 
&gt; We most definitely should not.  We should deprecate and remove it, not add to it.

We should be consistent with NetworkResourceLoader, whatever the code path is.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.cpp:109
&gt;&gt; +        if (disposition == AuthenticationChallengeDisposition::Cancel &amp;&amp; weakThis)
&gt; 
&gt; This feels iffy to me.  What about RejectProtectionSpace?

This is called for client certificate challenges only.
If the result is cancel (which is what happens if the callback is not implemented), we should make sure the preflight checker completion handler is called.
Ideally, if the callback is not implemented, it should return something like AuthenticationChallengeDisposition::Default but this is risky to do that change right now.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.cpp:111
&gt;&gt; +        completionHandler(disposition, credential);
&gt; 
&gt; This flow is not very clear.  Why do we need to call a completionHandler and m_completionCallback, which seem to do separate things?

They indeed do different things.
We need to call completionHandler as it is a CompletionHandler.
We need to call m_completionCallback so that the network preflight checker is completed and does not hang.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.h:45
&gt;&gt;      struct Parameters {
&gt; 
&gt; I admit, I do not really understand the change. I thought I had re-introduced previous behavior but apparently not?

NetworkResourceLoader is using NetworkLoad while NetworkCORSPreflightChecker is using NetworkDataTask.
See NetworkLoad::continueCanAuthenticateAgainstProtectionSpace for instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450353</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-15 11:04:34 -0700</bug_when>
    <thetext>&gt; &gt;&gt; Source/WebKit/NetworkProcess/NetworkCORSPreflightChecker.cpp:107
&gt; &gt;&gt; +    // FIXME: We should implement PROTECTION_SPACE_AUTH_CALLBACK code path.
&gt; &gt; 
&gt; &gt; We most definitely should not.  We should deprecate and remove it, not add to it.

Discussing with Alex, we will probably go down that way so that even for preflights, the app is notified of this challenge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450367</commentid>
    <comment_count>8</comment_count>
      <attachid>347182</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-15 11:34:12 -0700</bug_when>
    <thetext>Created attachment 347182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450369</commentid>
    <comment_count>9</comment_count>
      <attachid>347183</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-15 11:39:49 -0700</bug_when>
    <thetext>Created attachment 347183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450384</commentid>
    <comment_count>10</comment_count>
      <attachid>347183</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-08-15 12:02:21 -0700</bug_when>
    <thetext>Comment on attachment 347183
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:681
&gt; +    m_canAuthenticateAgainstProtectionSpaceCompletionHandlers.set(completionHandlerID, WTFMove(completionHandler));

s/set/add/, could add ASSERT(!contains...) in case we want to be extra sure.

id could be an ObjectIdentfiier as well but it is simpler to limit the changes.

&gt; Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp:342
&gt; +    m_client-&gt;didReceiveChallenge(WTFMove(challenge), [this, protectedThis = makeRef(*this), challenge](AuthenticationChallengeDisposition disposition, const Credential&amp; credential) {

Probably need to copy internals of challenge, protectionSpace maybe only?

&gt; Source/WebKit/NetworkProcess/soup/NetworkDataTaskSoup.cpp:523
&gt; +    m_client-&gt;didReceiveChallenge(WTFMove(challenge), [this, protectedThis = makeRef(*this), challenge](AuthenticationChallengeDisposition disposition, const Credential&amp; credential) {

Same issue for soup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450387</commentid>
    <comment_count>11</comment_count>
      <attachid>347191</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-15 12:10:01 -0700</bug_when>
    <thetext>Created attachment 347191
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450418</commentid>
    <comment_count>12</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-15 13:16:12 -0700</bug_when>
    <thetext>http://trac.webkit.org/r234896</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450433</commentid>
    <comment_count>13</comment_count>
      <attachid>347191</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-15 13:35:11 -0700</bug_when>
    <thetext>Comment on attachment 347191
Patch

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

&gt; Source/WebKit/NetworkProcess/curl/NetworkDataTaskCurl.cpp:342
&gt; +    m_client-&gt;didReceiveChallenge(AuthenticationChallenge(challenge), [this, protectedThis = makeRef(*this), ](AuthenticationChallengeDisposition disposition, const Credential&amp; credential) {

The syntax error on this line (dangling comma) breaks the WinCairo build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450528</commentid>
    <comment_count>14</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2018-08-15 17:05:07 -0700</bug_when>
    <thetext>Committed r234908: &lt;https://trac.webkit.org/changeset/234908&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347132</attachid>
            <date>2018-08-14 17:00:31 -0700</date>
            <delta_ts>2018-08-15 11:34:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188592-20180814170030.patch</filename>
            <type>text/plain</type>
            <size>4522</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0ODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDkxYjcxZjdiZmM5YjczZjc1
N2Y4Yjc0YWU4OGZiZmNiNGI0ZjNkMmEuLjg1ZDYwN2NmZDY0ODY0MDY3MDkyMTk2N2VmN2FhZDVl
ODU4YTIxMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTgtMDgtMTQgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlciBzaG91bGQgcHJvY2VlZCBpbiBjYXNlIG9mIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRp
Y2F0aW9uU2NoZW1lU2VydmVyVHJ1c3RFdmFsdWF0aW9uUmVxdWVzdGVkIGV2ZW4gdGhvdWdoIHRo
ZSBXZWJLaXQgYXBwIGlzIG5vdCBpbXBsZW1lbnRpbmcgdGhlIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lIGNh
bGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODg1OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMjEwMzMxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIHRoZSBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgY2FsbGJhY2sgaXMgbm90IGNhbGxlZCwgdGhlIGxvYWQgaXMgY2Fu
Y2VsbGVkLgorICAgICAgICBUaGlzIHdhcyBwcmV2aW91c2x5IGNhbmNlbGxpbmcgdGhlIGxvYWQg
YnV0IG5vdCBjb21wbGV0aW5nIHRoZSBwcmVmbGlnaHQuCisKKyAgICAgICAgSW5zdGVhZCwgZm9y
IGFueSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVh
dGlvblJlcXVlc3RlZCwgd2UgcHJvY2VlZC4KKyAgICAgICAgT3RoZXJ3aXNlLCB3aGVuIHRoZSBs
b2FkIGlzIGNhbmNlbGxlZCwgd2UgY29tcGxldGUgdGhlIHByZWZsaWdodCBhcyBibG9ja2VkLgor
CisgICAgICAgIFZhbGlkYXRlZCBieSBtYW51YWwgdGVzdGluZy4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmg6CisK
IDIwMTgtMDgtMTMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dLMl0gW21hY09TXSBJbXBsZW1lbnQgYSBtZWNoYW5pc20gdG8gdGVzdCBkcmFnIGFu
ZCBkcm9wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAKaW5kZXggZmI2ODYxZmI0YTQ1MDM2MTJkYmEz
ODQ4Y2I3M2U0Y2RkY2IzMGEyYS4uMmQwODg4M2ZlM2MwYzA4ZTM4ZGRmYjZkY2MwYzUzNGQwMjlj
MGViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcApAQCAtOTQsMTUgKzk0LDIyIEBAIHZvaWQg
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2
ZUNoYWxsZW5nZSwgYXV0aGVudGljYXRpb24gc2NoZW1lOiAldSIsIGNoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2UoKS5hdXRoZW50aWNhdGlvblNjaGVtZSgpKTsKIAogICAgIGF1dG8gc2NoZW1lID0g
Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCk7Ci0gICAg
Ym9vbCBpc1RMU0hhbmRzaGFrZSA9IHNjaGVtZSA9PSBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNh
dGlvblNjaGVtZVNlcnZlclRydXN0RXZhbHVhdGlvblJlcXVlc3RlZAotICAgICAgICB8fCBzY2hl
bWUgPT0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVDbGllbnRDZXJ0aWZpY2F0
ZVJlcXVlc3RlZDsKKyAgICBpZiAoc2NoZW1lID09IFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0
aW9uU2NoZW1lU2VydmVyVHJ1c3RFdmFsdWF0aW9uUmVxdWVzdGVkKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFBy
b3RlY3Rpb25TcGFjZSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGlmICgh
aXNUTFNIYW5kc2hha2UpIHsKKyAgICBpZiAoc2NoZW1lICE9IFByb3RlY3Rpb25TcGFjZUF1dGhl
bnRpY2F0aW9uU2NoZW1lQ2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0ZWQpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3Jl
ZGVudGlhbCwgeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIE5ldHdvcmtQcm9j
ZXNzOjpzaW5nbGV0b24oKS5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UobV9wYXJhbWV0ZXJzLnBhZ2VJRCwgbV9wYXJhbWV0ZXJzLmZyYW1l
SUQsIGNoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgaW1wbGVtZW50IFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSyBjb2Rl
IHBhdGguCisgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFu
YWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3BhcmFtZXRlcnMucGFn
ZUlELCBtX3BhcmFtZXRlcnMuZnJhbWVJRCwgY2hhbGxlbmdlLCBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlz
KV0oQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3Qg
V2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChk
aXNwb3NpdGlvbiA9PSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwg
JiYgd2Vha1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+d2FzQmxvY2tlZCgpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihkaXNwb3NpdGlvbiwgY3JlZGVudGlhbCk7CisgICAgfSk7CiB9
CiAKIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlUmVzcG9uc2VO
ZXR3b3JrU2Vzc2lvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oCmluZGV4IDVkNmU2MzYzZDY4YmRmNzZjNGUyMmFkZjk1ZWU5ODhiZDk3MWJhMjguLjczMDQy
NWY5NTE2ZDEyMWM5ZDhiODM3ZTQyZWRjYTQ4Mjk1ZTMxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKQEAgLTM4LDcgKzM5LDcgQEAgY2xhc3MgU2Vj
dXJpdHlPcmlnaW47CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBOZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIgZmluYWwgOiBwcml2YXRlIE5ldHdvcmtEYXRhVGFza0NsaWVudCAgewor
Y2xhc3MgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyIGZpbmFsIDogcHJpdmF0ZSBOZXR3b3Jr
RGF0YVRhc2tDbGllbnQsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXI+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBz
dHJ1Y3QgUGFyYW1ldGVycyB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347182</attachid>
            <date>2018-08-15 11:34:12 -0700</date>
            <delta_ts>2018-08-15 11:39:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188592-20180815113411.patch</filename>
            <type>text/plain</type>
            <size>20888</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ4OTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE4LTA4LTE1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyIHNob3VsZCBwcm9jZWVkIGluIGNhc2Ugb2YgUHJvdGVjdGlvblNwYWNl
QXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1YXRpb25SZXF1ZXN0ZWQgZXZlbiB0
aG91Z2ggdGhlIFdlYktpdCBhcHAgaXMgbm90IGltcGxlbWVudGluZyB0aGUgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlL2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUlu
RnJhbWUgY2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODU5MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMyMTAzMzE+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG8gYSBjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlIGNoZWNrIGluIE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlciBsaWtlIHdlIGRvIGluIE5ldHdvcmtMb2FkLgorICAgICAgICBVc2UgQ29tcGxldGlv
bkhhbmRsZXJzIHRvIG1ha2UgdGhlIG5vdyAzIGRpZmZlcmVudCBjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlIGNoZWNrcyBsb29rIHRoZSBzYW1lIGZyb20gdGhlIE5ldHdvcmtQ
cm9jZXNzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
OjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOiBEZWxl
dGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQcmVjb25uZWN0VGFzazo6Y2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6
OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6IERlbGV0ZWQu
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisKIDIwMTgt
MDgtMTUgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtXUEVdW0dUS10gV2F5bGFuZENvbXBvc2l0b3IgZmFpbHMgdG8gcHJvcGVybHkgcmVtb3Zl
IHN1cmZhY2UgZnJvbSBpdHMgcGFnZSBtYXAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJ
KHJldmlzaW9uIDIzNDg4MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBA
QCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6d2lsbFBlCiAgICAgbV9jb21wbGV0
aW9uQ2FsbGJhY2soUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3QudXJsKCksICJQcmVmbGlnaHQgcmVzcG9uc2Ug
aXMgbm90IHN1Y2Nlc3NmdWwiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wg
fSk7CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlQ2hh
bGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2Us
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRSZWNlaXZlQ2hhbGxlbmdlLCBhdXRoZW50aWNhdGlvbiBzY2hlbWU6ICV1IiwgY2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkpOwogCkBAIC0xMDIs
NyArMTAyLDE1IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWMKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FM
TEJBQ0spCisgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBtX3BhcmFt
ZXRlcnMucGFnZUlELCBtX3BhcmFtZXRlcnMuZnJhbWVJRCwgW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGNoYWxsZW5nZSA9IFdURk1vdmUoY2hhbGxlbmdlKV0gKGJvb2wgY2FuQXV0aGVudGlj
YXRlKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFjYW5BdXRoZW50aWNhdGUpCisgICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlLCB7IH0pOworICAgICAgICBOZXR3b3JrUHJvY2Vz
czo6c2luZ2xldG9uKCkuYXV0aGVudGljYXRpb25NYW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKG1fcGFyYW1ldGVycy5wYWdlSUQsIG1fcGFyYW1ldGVycy5mcmFtZUlE
LCBjaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKKyNlbHNl
CiAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigp
LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3BhcmFtZXRlcnMucGFnZUlELCBt
X3BhcmFtZXRlcnMuZnJhbWVJRCwgY2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yZWRDcmVkZW50
aWFsc1BvbGljeS5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwpAQCAtMzgsNyArMzksNyBAQCBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlciBmaW5hbCA6IHByaXZhdGUgTmV0d29ya0RhdGFUYXNrQ2xpZW50
ICB7CitjbGFzcyBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIgZmluYWwgOiBwcml2YXRlIE5l
dHdvcmtEYXRhVGFza0NsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKQEAgLTYzLDcgKzY0LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkocmV2
aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCB1c2luZyBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyID0gQ29tcGxlCiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewog
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGly
ZWMKICAgICBtX2NsaWVudC5nZXQoKS53aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUo
b2xkUmVxdWVzdCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSkp
OwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxl
bmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY2hhbGxlbmdlID0gY2hh
bGxlbmdlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyMzQ4
ODEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE5ldHdvcmtEYXRh
VGFza0NsaWVudAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2Uo
Y29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjc1LDM0ICs2NzUsMjAgQEAgc3Rh
dGljIHVpbnQ2NF90IGdlbmVyYXRlQ2FuQXV0aGVudGljYXRlSQogICAgIHJldHVybiArK2xhc3RM
b2FkZXJJRDsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZShOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgV2Vi
Q29yZTo6UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFdlYkNvcmU6
OlByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgdWludDY0X3QgbG9hZGVySUQgPSBnZW5lcmF0ZUNhbkF1dGhlbnRpY2F0
ZUlkZW50aWZpZXIoKTsKLSAgICBtX3dhaXRpbmdOZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnNldChs
b2FkZXJJRCwgbG9hZGVyKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGxvYWRlcklELCBsb2FkZXIucGFnZUlEKCksIGxvYWRlci5mcmFtZUlEKCksIHBy
b3RlY3Rpb25TcGFjZSksIDApOworICAgIHVpbnQ2NF90IGNvbXBsZXRpb25IYW5kbGVySUQgPSBn
ZW5lcmF0ZUNhbkF1dGhlbnRpY2F0ZUlkZW50aWZpZXIoKTsKKyAgICBtX2NhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VDb21wbGV0aW9uSGFuZGxlcnMuc2V0KGNvbXBsZXRpb25I
YW5kbGVySUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpDYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbXBsZXRpb25IYW5kbGVySUQsIHBhZ2VJ
RCwgZnJhbWVJRCwgcHJvdGVjdGlvblNwYWNlKSwgMCk7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVkVS
X1BSRUNPTk5FQ1QpCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKFByZWNvbm5lY3RUYXNrJiBwcmVjb25uZWN0VGFzaywgY29uc3QgV2Vi
Q29yZTo6UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCi17Ci0gICAgdWludDY0X3Qg
bG9hZGVySUQgPSBnZW5lcmF0ZUNhbkF1dGhlbnRpY2F0ZUlkZW50aWZpZXIoKTsKLSAgICBtX3dh
aXRpbmdQcmVjb25uZWN0VGFza3Muc2V0KGxvYWRlcklELCBtYWtlV2Vha1B0cihwcmVjb25uZWN0
VGFzaykpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OkNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
bG9hZGVySUQsIHByZWNvbm5lY3RUYXNrLnBhZ2VJRCgpLCBwcmVjb25uZWN0VGFzay5mcmFtZUlE
KCksIHByb3RlY3Rpb25TcGFjZSksIDApOwotfQotI2VuZGlmCi0KLXZvaWQgTmV0d29ya1Byb2Nl
c3M6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh1aW50NjRf
dCBsb2FkZXJJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpj
b250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodWludDY0X3QgY29t
cGxldGlvbkhhbmRsZXJJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpCiB7Ci0gICAgaWYgKGF1dG8g
cmVzb3VyY2VMb2FkZXIgPSBtX3dhaXRpbmdOZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnRha2UobG9h
ZGVySUQpKSB7Ci0gICAgICAgIHJlc291cmNlTG9hZGVyLnZhbHVlKCktPmNvbnRpbnVlQ2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjYW5BdXRoZW50aWNhdGUpOworICAgIGlm
IChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gbV9jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlQ29tcGxldGlvbkhhbmRsZXJzLnRha2UoY29tcGxldGlvbkhhbmRsZXJJRCkpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY2FuQXV0aGVudGljYXRlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSNpZiBFTkFCTEUoU0VSVkVSX1BSRUNPTk5FQ1QpCi0gICAgaWYgKGF1dG8g
cHJlY29ubmVjdFRhc2sgPSBtX3dhaXRpbmdQcmVjb25uZWN0VGFza3MudGFrZShsb2FkZXJJRCkp
IHsKLSAgICAgICAgcHJlY29ubmVjdFRhc2stPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZShjYW5BdXRoZW50aWNhdGUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotI2VuZGlmCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNp
b24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsMTAgKzEyMyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihOZXR3b3JrRGF0YVRhc2smLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAog
I2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdm9pZCBjYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNv
bnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpOwotI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09O
TkVDVCkKLSAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoUHJl
Y29ubmVjdFRhc2smLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKTsKLSNlbmRpZgor
ICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBXZWJD
b3JlOjpQcm90ZWN0aW9uU3BhY2UmLCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHBy
ZWZldGNoRE5TKGNvbnN0IFN0cmluZyYpOwpAQCAtMjI1LDcgKzIyMiw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmKTsKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2Fk
SUQpOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdm9pZCBj
b250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodWludDY0X3QgcmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgYm9vbCBjYW5BdXRoZW50aWNhdGUpOworICAgIHZvaWQgY29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90IGNvbXBs
ZXRpb25IYW5kbGVySUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsKICNlbmRpZgogICAgIHZvaWQg
Y29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpOwogICAgIHZvaWQgY29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlv
bihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmLCBib29sIGFsbG93T3ZlcndyaXRlKTsKQEAgLTI4NCwxMCArMjgxLDkgQEAgcHJpdmF0ZToK
ICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
UHJvY2Vzc1N1cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNoYXIqPj4gTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50TWFwOwogICAgIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudE1hcCBtX3N1cHBsZW1l
bnRzOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZCAoKT4+IG1fc2FuZGJv
eEV4dGVuc2lvbkZvckJsb2JzQ29tcGxldGlvbkhhbmRsZXJzOwotICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+PiBtX3dhaXRpbmdOZXR3b3JrUmVzb3VyY2VM
b2FkZXJzOwotI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKLSAgICBIYXNoTWFwPHVpbnQ2
NF90LCBXZWFrUHRyPFByZWNvbm5lY3RUYXNrPj4gbV93YWl0aW5nUHJlY29ubmVjdFRhc2tzOwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoKT4+IG1fc2FuZGJveEV4dGVuc2lv
bkZvckJsb2JzQ29tcGxldGlvbkhhbmRsZXJzOworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FV
VEhfQ0FMTEJBQ0spCisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4+IG1fY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUNvbXBsZXRp
b25IYW5kbGVyczsKICNlbmRpZgogICAgIEhhc2hTZXQ8UEFMOjpTZXNzaW9uSUQ+IG1fc2Vzc2lv
bnNDb250cm9sbGVkQnlBdXRvbWF0aW9uOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAy
MzQ4ODEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzOCwxMyArOTM4LDEwIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjppbnZhbGlkYXRlU2EKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9B
VVRIX0NBTExCQUNLKQogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3Rl
Y3Rpb25TcGFjZSkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSgqdGhpcywgcHJvdGVjdGlvblNwYWNlKTsKLX0K
LQotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZShib29sIHJlc3VsdCkKLXsKLSAgICBpZiAobV9uZXR3b3JrTG9h
ZCkKLSAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKHJlc3VsdCk7CisgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigp
LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlLCBw
YWdlSUQoKSwgZnJhbWVJRCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSAoYm9vbCByZXN1bHQpIHsKKyAgICAgICAgaWYgKG1fbmV0d29ya0xvYWQpCisgICAgICAgICAg
ICBtX25ldHdvcmtMb2FkLT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UocmVzdWx0KTsKKyAgICB9KTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlz
aW9uIDIzNDg4MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDkgKzgwLDYgQEAgcHVibGljOgogICAg
IC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Jlc291cmNl
TG9hZGVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAotI2lmIFVT
RShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdm9pZCBjb250aW51ZUNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCk7Ci0jZW5kaWYKICAgICB2b2lk
IGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5ld1Jl
cXVlc3QsIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMpOwogCiAgICAgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3BvbnNlOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmNwcAkocmV2aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFBpbmdM
b2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvCiAgICAgfSk7CiB9CiAKLXZvaWQgUGluZ0xv
YWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQaW5n
TG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVDaGFsbGVuZ2UiKTsKICAgICBhdXRvIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuaAkocmV2aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQ
b2xpY3koKSBjb25zdDsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVDaGFs
bGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2Uo
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lv
bihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suY3BwCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDE1ICsxMDAsMTMg
QEAgdm9pZCBQcmVjb25uZWN0VGFzazo6Y2FuQXV0aGVudGljYXRlQWdhaQogewogICAgIGlmICgh
cGFnZUlEKCkpIHsKICAgICAgICAgLy8gVGhlIHByZWNvbm5lY3Qgd2FzIHN0YXJ0ZWQgYnkgdGhl
IFVJUHJvY2Vzcy4KLSAgICAgICAgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGZhbHNlKTsKKyAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVDYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZSgqdGhpcywgcHJvdGVjdGlvblNwYWNlKTsKLX0KLQotdm9pZCBQ
cmVjb25uZWN0VGFzazo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKGJvb2wgcmVzdWx0KQotewotICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVlQ2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShyZXN1bHQpOworICAgIE5ldHdvcmtQcm9jZXNz
OjpzaW5nbGV0b24oKS5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHByb3Rl
Y3Rpb25TcGFjZSwgcGFnZUlEKCksIGZyYW1lSUQoKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldIChib29sIHJlc3VsdCkgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAg
ICB3ZWFrVGhpcy0+bV9uZXR3b3JrTG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKHJlc3VsdCk7CisgICAgfSk7CiB9CiAKIHZvaWQgUHJlY29ubmVjdFRh
c2s6OmRpZEZpbmlzaChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgJKHJldmlzaW9uIDIzNDg4
MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsOCArNDUsNiBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgZnJhbWVJ
RCgpIGNvbnN0OwogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0OwogCi0gICAgdm9pZCBjb250
aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCk7Ci0KIHByaXZh
dGU6CiAgICAgLy8gTmV0d29ya0xvYWRDbGllbnQuCiAgICAgYm9vbCBpc1N5bmNocm9ub3VzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgJKHJl
dmlzaW9uIDIzNDg4MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAgICAgdHlwZWRlZiB1aW50NjRfdCBUYXNrSWRlbnRpZmllcjsKIAogICAgIHZvaWQgZGlk
U2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvU2VuZCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7
CisgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkQ29t
cGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2
aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgyLDEzICsyODIsMTMgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkU2VuZERhdGEodQogICAgICAgICBtX2NsaWVu
dC0+ZGlkU2VuZERhdGEodG90YWxCeXRlc1NlbnQsIHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCk7
CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0RhdGFU
YXNrQ29jb2E6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKHRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjaGFs
bGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1f
Y2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2Us
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVDaGFsbGVuZ2UoV1RGTW92ZShjaGFsbGVuZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJm
b3JtRGVmYXVsdEhhbmRsaW5nLCB7IH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347183</attachid>
            <date>2018-08-15 11:39:49 -0700</date>
            <delta_ts>2018-08-15 12:09:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188592-20180815113948.patch</filename>
            <type>text/plain</type>
            <size>23825</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ4OTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE4LTA4LTE1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyIHNob3VsZCBwcm9jZWVkIGluIGNhc2Ugb2YgUHJvdGVjdGlvblNwYWNl
QXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1YXRpb25SZXF1ZXN0ZWQgZXZlbiB0
aG91Z2ggdGhlIFdlYktpdCBhcHAgaXMgbm90IGltcGxlbWVudGluZyB0aGUgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlL2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUlu
RnJhbWUgY2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODU5MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMyMTAzMzE+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG8gYSBjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlIGNoZWNrIGluIE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlciBsaWtlIHdlIGRvIGluIE5ldHdvcmtMb2FkLgorICAgICAgICBVc2UgQ29tcGxldGlv
bkhhbmRsZXJzIHRvIG1ha2UgdGhlIG5vdyAzIGRpZmZlcmVudCBjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlIGNoZWNrcyBsb29rIHRoZSBzYW1lIGZyb20gdGhlIE5ldHdvcmtQ
cm9jZXNzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
OjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOiBEZWxl
dGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQcmVjb25uZWN0VGFzazo6Y2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6
OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6IERlbGV0ZWQu
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisKIDIwMTgt
MDgtMTUgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtXUEVdW0dUS10gV2F5bGFuZENvbXBvc2l0b3IgZmFpbHMgdG8gcHJvcGVybHkgcmVtb3Zl
IHN1cmZhY2UgZnJvbSBpdHMgcGFnZSBtYXAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJ
KHJldmlzaW9uIDIzNDg4MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBA
QCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6d2lsbFBlCiAgICAgbV9jb21wbGV0
aW9uQ2FsbGJhY2soUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3QudXJsKCksICJQcmVmbGlnaHQgcmVzcG9uc2Ug
aXMgbm90IHN1Y2Nlc3NmdWwiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wg
fSk7CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlQ2hh
bGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2Us
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRSZWNlaXZlQ2hhbGxlbmdlLCBhdXRoZW50aWNhdGlvbiBzY2hlbWU6ICV1IiwgY2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkpOwogCkBAIC0xMDIs
NyArMTAyLDE1IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWMKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FM
TEJBQ0spCisgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBtX3BhcmFt
ZXRlcnMucGFnZUlELCBtX3BhcmFtZXRlcnMuZnJhbWVJRCwgW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGNoYWxsZW5nZSA9IFdURk1vdmUoY2hhbGxlbmdlKV0gKGJvb2wgY2FuQXV0aGVudGlj
YXRlKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFjYW5BdXRoZW50aWNhdGUpCisgICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlLCB7IH0pOworICAgICAgICBOZXR3b3JrUHJvY2Vz
czo6c2luZ2xldG9uKCkuYXV0aGVudGljYXRpb25NYW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKG1fcGFyYW1ldGVycy5wYWdlSUQsIG1fcGFyYW1ldGVycy5mcmFtZUlE
LCBjaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKKyNlbHNl
CiAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigp
LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3BhcmFtZXRlcnMucGFnZUlELCBt
X3BhcmFtZXRlcnMuZnJhbWVJRCwgY2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yZWRDcmVkZW50
aWFsc1BvbGljeS5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwpAQCAtMzgsNyArMzksNyBAQCBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlciBmaW5hbCA6IHByaXZhdGUgTmV0d29ya0RhdGFUYXNrQ2xpZW50
ICB7CitjbGFzcyBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIgZmluYWwgOiBwcml2YXRlIE5l
dHdvcmtEYXRhVGFza0NsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKQEAgLTYzLDcgKzY0LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkocmV2
aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCB1c2luZyBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyID0gQ29tcGxlCiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewog
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGly
ZWMKICAgICBtX2NsaWVudC5nZXQoKS53aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUo
b2xkUmVxdWVzdCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSkp
OwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxl
bmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY2hhbGxlbmdlID0gY2hh
bGxlbmdlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyMzQ4
ODEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE5ldHdvcmtEYXRh
VGFza0NsaWVudAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2Uo
Y29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjc1LDM0ICs2NzUsMjAgQEAgc3Rh
dGljIHVpbnQ2NF90IGdlbmVyYXRlQ2FuQXV0aGVudGljYXRlSQogICAgIHJldHVybiArK2xhc3RM
b2FkZXJJRDsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZShOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlciwgY29uc3QgV2Vi
Q29yZTo6UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFdlYkNvcmU6
OlByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlLCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgdWludDY0X3QgbG9hZGVySUQgPSBnZW5lcmF0ZUNhbkF1dGhlbnRpY2F0
ZUlkZW50aWZpZXIoKTsKLSAgICBtX3dhaXRpbmdOZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnNldChs
b2FkZXJJRCwgbG9hZGVyKTsKLSAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGxvYWRlcklELCBsb2FkZXIucGFnZUlEKCksIGxvYWRlci5mcmFtZUlEKCksIHBy
b3RlY3Rpb25TcGFjZSksIDApOworICAgIHVpbnQ2NF90IGNvbXBsZXRpb25IYW5kbGVySUQgPSBn
ZW5lcmF0ZUNhbkF1dGhlbnRpY2F0ZUlkZW50aWZpZXIoKTsKKyAgICBtX2NhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VDb21wbGV0aW9uSGFuZGxlcnMuc2V0KGNvbXBsZXRpb25I
YW5kbGVySUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpDYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbXBsZXRpb25IYW5kbGVySUQsIHBhZ2VJ
RCwgZnJhbWVJRCwgcHJvdGVjdGlvblNwYWNlKSwgMCk7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVkVS
X1BSRUNPTk5FQ1QpCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKFByZWNvbm5lY3RUYXNrJiBwcmVjb25uZWN0VGFzaywgY29uc3QgV2Vi
Q29yZTo6UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCi17Ci0gICAgdWludDY0X3Qg
bG9hZGVySUQgPSBnZW5lcmF0ZUNhbkF1dGhlbnRpY2F0ZUlkZW50aWZpZXIoKTsKLSAgICBtX3dh
aXRpbmdQcmVjb25uZWN0VGFza3Muc2V0KGxvYWRlcklELCBtYWtlV2Vha1B0cihwcmVjb25uZWN0
VGFzaykpOwotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OkNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
bG9hZGVySUQsIHByZWNvbm5lY3RUYXNrLnBhZ2VJRCgpLCBwcmVjb25uZWN0VGFzay5mcmFtZUlE
KCksIHByb3RlY3Rpb25TcGFjZSksIDApOwotfQotI2VuZGlmCi0KLXZvaWQgTmV0d29ya1Byb2Nl
c3M6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh1aW50NjRf
dCBsb2FkZXJJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpj
b250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodWludDY0X3QgY29t
cGxldGlvbkhhbmRsZXJJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpCiB7Ci0gICAgaWYgKGF1dG8g
cmVzb3VyY2VMb2FkZXIgPSBtX3dhaXRpbmdOZXR3b3JrUmVzb3VyY2VMb2FkZXJzLnRha2UobG9h
ZGVySUQpKSB7Ci0gICAgICAgIHJlc291cmNlTG9hZGVyLnZhbHVlKCktPmNvbnRpbnVlQ2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjYW5BdXRoZW50aWNhdGUpOworICAgIGlm
IChhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gbV9jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlQ29tcGxldGlvbkhhbmRsZXJzLnRha2UoY29tcGxldGlvbkhhbmRsZXJJRCkpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY2FuQXV0aGVudGljYXRlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSNpZiBFTkFCTEUoU0VSVkVSX1BSRUNPTk5FQ1QpCi0gICAgaWYgKGF1dG8g
cHJlY29ubmVjdFRhc2sgPSBtX3dhaXRpbmdQcmVjb25uZWN0VGFza3MudGFrZShsb2FkZXJJRCkp
IHsKLSAgICAgICAgcHJlY29ubmVjdFRhc2stPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZShjYW5BdXRoZW50aWNhdGUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotI2VuZGlmCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKICNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNp
b24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsMTAgKzEyMyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihOZXR3b3JrRGF0YVRhc2smLCBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyJiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAog
I2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdm9pZCBjYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYsIGNv
bnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpOwotI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09O
TkVDVCkKLSAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoUHJl
Y29ubmVjdFRhc2smLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKTsKLSNlbmRpZgor
ICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBXZWJD
b3JlOjpQcm90ZWN0aW9uU3BhY2UmLCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIHBy
ZWZldGNoRE5TKGNvbnN0IFN0cmluZyYpOwpAQCAtMjI1LDcgKzIyMiw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmKTsKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2Fk
SUQpOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdm9pZCBj
b250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodWludDY0X3QgcmVz
b3VyY2VMb2FkSWRlbnRpZmllciwgYm9vbCBjYW5BdXRoZW50aWNhdGUpOworICAgIHZvaWQgY29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90IGNvbXBs
ZXRpb25IYW5kbGVySUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsKICNlbmRpZgogICAgIHZvaWQg
Y29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpOwogICAgIHZvaWQgY29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlv
bihEb3dubG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmLCBib29sIGFsbG93T3ZlcndyaXRlKTsKQEAgLTI4NCwxMCArMjgxLDkgQEAgcHJpdmF0ZToK
ICAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgY2hhciosIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3Jr
UHJvY2Vzc1N1cHBsZW1lbnQ+LCBQdHJIYXNoPGNvbnN0IGNoYXIqPj4gTmV0d29ya1Byb2Nlc3NT
dXBwbGVtZW50TWFwOwogICAgIE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudE1hcCBtX3N1cHBsZW1l
bnRzOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZCAoKT4+IG1fc2FuZGJv
eEV4dGVuc2lvbkZvckJsb2JzQ29tcGxldGlvbkhhbmRsZXJzOwotICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZjxOZXR3b3JrUmVzb3VyY2VMb2FkZXI+PiBtX3dhaXRpbmdOZXR3b3JrUmVzb3VyY2VM
b2FkZXJzOwotI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKLSAgICBIYXNoTWFwPHVpbnQ2
NF90LCBXZWFrUHRyPFByZWNvbm5lY3RUYXNrPj4gbV93YWl0aW5nUHJlY29ubmVjdFRhc2tzOwor
ICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoKT4+IG1fc2FuZGJveEV4dGVuc2lv
bkZvckJsb2JzQ29tcGxldGlvbkhhbmRsZXJzOworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FV
VEhfQ0FMTEJBQ0spCisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4+IG1fY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUNvbXBsZXRp
b25IYW5kbGVyczsKICNlbmRpZgogICAgIEhhc2hTZXQ8UEFMOjpTZXNzaW9uSUQ+IG1fc2Vzc2lv
bnNDb250cm9sbGVkQnlBdXRvbWF0aW9uOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAy
MzQ4ODEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzOCwxMyArOTM4LDEwIEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjppbnZhbGlkYXRlU2EKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9B
VVRIX0NBTExCQUNLKQogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3Rl
Y3Rpb25TcGFjZSkKIHsKLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSgqdGhpcywgcHJvdGVjdGlvblNwYWNlKTsKLX0K
LQotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZShib29sIHJlc3VsdCkKLXsKLSAgICBpZiAobV9uZXR3b3JrTG9h
ZCkKLSAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKHJlc3VsdCk7CisgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigp
LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlLCBw
YWdlSUQoKSwgZnJhbWVJRCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSAoYm9vbCByZXN1bHQpIHsKKyAgICAgICAgaWYgKG1fbmV0d29ya0xvYWQpCisgICAgICAgICAg
ICBtX25ldHdvcmtMb2FkLT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UocmVzdWx0KTsKKyAgICB9KTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgJKHJldmlz
aW9uIDIzNDg4MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDkgKzgwLDYgQEAgcHVibGljOgogICAg
IC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Jlc291cmNl
TG9hZGVyTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKIAotI2lmIFVT
RShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdm9pZCBjb250aW51ZUNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCk7Ci0jZW5kaWYKICAgICB2b2lk
IGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5ld1Jl
cXVlc3QsIGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMpOwogCiAgICAgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UoKSBjb25zdCB7IHJldHVybiBt
X3Jlc3BvbnNlOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2Fk
LmNwcAkocmV2aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
aW5nTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFBpbmdM
b2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvCiAgICAgfSk7CiB9CiAKLXZvaWQgUGluZ0xv
YWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQaW5n
TG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVDaGFsbGVuZ2UiKTsKICAgICBhdXRvIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuaAkocmV2aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIHByaXZh
dGU6CiAgICAgV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5KiBjb250ZW50U2VjdXJpdHlQ
b2xpY3koKSBjb25zdDsKIAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVDaGFs
bGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2Uo
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lv
bihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBm
aW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suY3BwCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDE1ICsxMDAsMTMg
QEAgdm9pZCBQcmVjb25uZWN0VGFzazo6Y2FuQXV0aGVudGljYXRlQWdhaQogewogICAgIGlmICgh
cGFnZUlEKCkpIHsKICAgICAgICAgLy8gVGhlIHByZWNvbm5lY3Qgd2FzIHN0YXJ0ZWQgYnkgdGhl
IFVJUHJvY2Vzcy4KLSAgICAgICAgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKGZhbHNlKTsKKyAgICAgICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVDYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZSgqdGhpcywgcHJvdGVjdGlvblNwYWNlKTsKLX0KLQotdm9pZCBQ
cmVjb25uZWN0VGFzazo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKGJvb2wgcmVzdWx0KQotewotICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVlQ2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShyZXN1bHQpOworICAgIE5ldHdvcmtQcm9jZXNz
OjpzaW5nbGV0b24oKS5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHByb3Rl
Y3Rpb25TcGFjZSwgcGFnZUlEKCksIGZyYW1lSUQoKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldIChib29sIHJlc3VsdCkgeworICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAg
ICB3ZWFrVGhpcy0+bV9uZXR3b3JrTG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKHJlc3VsdCk7CisgICAgfSk7CiB9CiAKIHZvaWQgUHJlY29ubmVjdFRh
c2s6OmRpZEZpbmlzaChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgJKHJldmlzaW9uIDIzNDg4
MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsOCArNDUsNiBAQCBwdWJsaWM6CiAgICAgdWludDY0X3QgZnJhbWVJ
RCgpIGNvbnN0OwogICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0OwogCi0gICAgdm9pZCBjb250
aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCk7Ci0KIHByaXZh
dGU6CiAgICAgLy8gTmV0d29ya0xvYWRDbGllbnQuCiAgICAgYm9vbCBpc1N5bmNocm9ub3VzKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgJKHJl
dmlzaW9uIDIzNDg4MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJs
aWM6CiAgICAgdHlwZWRlZiB1aW50NjRfdCBUYXNrSWRlbnRpZmllcjsKIAogICAgIHZvaWQgZGlk
U2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvU2VuZCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7
CisgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkQ29t
cGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2
aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgyLDEzICsyODIsMTMgQEAg
dm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkU2VuZERhdGEodQogICAgICAgICBtX2NsaWVu
dC0+ZGlkU2VuZERhdGEodG90YWxCeXRlc1NlbnQsIHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCk7
CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSwgQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0RhdGFU
YXNrQ29jb2E6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKHRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjaGFs
bGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1f
Y2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2Us
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVDaGFsbGVuZ2UoV1RGTW92ZShjaGFsbGVuZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJm
b3JtRGVmYXVsdEhhbmRsaW5nLCB7IH0pOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAkocmV2aXNp
b24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtE
YXRhVGFza0N1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBO
ZXR3b3JrRGF0YVRhc2tDdXJsOjp3aWxsUGVyZm9ybUhUVAogICAgIH0pOwogfQogCi12b2lkIE5l
dHdvcmtEYXRhVGFza0N1cmw6OnRyeUh0dHBBdXRoZW50aWNhdGlvbihjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKQordm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjp0cnlI
dHRwQXV0aGVudGljYXRpb24oQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjaGFsbGVuZ2UpCiB7
CiAgICAgaWYgKCFtX3VzZXIuaXNOdWxsKCkgJiYgIW1fcGFzc3dvcmQuaXNOdWxsKCkpIHsKICAg
ICAgICAgYXV0byBwZXJzaXN0ZW5jZSA9IG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2Vi
Q29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSA/IFdlYkNvcmU6OkNyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZUZvclNlc3Npb24gOiBXZWJDb3JlOjpDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25l
OwpAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6dHJ5SHR0cEF1
dGhlbnQKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQ2hhbGxl
bmdlKGNoYWxsZW5nZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2hh
bGxlbmdlXShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSB7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVD
aGFsbGVuZ2UoV1RGTW92ZShjaGFsbGVuZ2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjaGFsbGVuZ2VdKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24g
ZGlzcG9zaXRpb24sIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKICAgICAgICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0
ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAkocmV2aXNpb24g
MjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRh
VGFza0N1cmwuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgc2hvdWxkUmVkaXJlY3RBc0dFVChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBib29sIGNyb3NzT3JpZ2luKTsKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
KCk7CiAKLSAgICB2b2lkIHRyeUh0dHBBdXRoZW50aWNhdGlvbihjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgIHZvaWQgdHJ5SHR0cEF1dGhlbnRpY2F0aW9uKFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYpOwogICAgIHZvaWQgcmVzdGFydFdpdGhD
cmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKTsKIAogICAgIHZvaWQgYXBwZW5k
Q29va2llSGVhZGVyKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tT
b3VwLmNwcAkocmV2aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjAsNyAr
NTIwLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjphdXRoZW50aWNhdGUoQQogCiB2b2lk
IE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlQXV0aGVudGljYXRlKEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiYgY2hhbGxlbmdlKQogewotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQ2hhbGxl
bmdlKGNoYWxsZW5nZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2hh
bGxlbmdlXShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSB7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVD
aGFsbGVuZ2UoV1RGTW92ZShjaGFsbGVuZ2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjaGFsbGVuZ2VdKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24g
ZGlzcG9zaXRpb24sIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKICAgICAgICAgaWYg
KG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0
ZWQpIHsKICAgICAgICAgICAgIGNsZWFyUmVxdWVzdCgpOwogICAgICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347191</attachid>
            <date>2018-08-15 12:10:01 -0700</date>
            <delta_ts>2018-08-15 12:11:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188592-20180815121000.patch</filename>
            <type>text/plain</type>
            <size>24033</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ4OTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE4LTA4LTE1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyIHNob3VsZCBwcm9jZWVkIGluIGNhc2Ugb2YgUHJvdGVjdGlvblNwYWNl
QXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1YXRpb25SZXF1ZXN0ZWQgZXZlbiB0
aG91Z2ggdGhlIFdlYktpdCBhcHAgaXMgbm90IGltcGxlbWVudGluZyB0aGUgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlL2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUlu
RnJhbWUgY2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4ODU5MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMyMTAzMzE+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG8gYSBjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlIGNoZWNrIGluIE5ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlciBsaWtlIHdlIGRvIGluIE5ldHdvcmtMb2FkLgorICAgICAgICBVc2UgQ29tcGxldGlv
bkhhbmRsZXJzIHRvIG1ha2UgdGhlIG5vdyAzIGRpZmZlcmVudCBjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlIGNoZWNrcyBsb29rIHRoZSBzYW1lIGZyb20gdGhlIE5ldHdvcmtQ
cm9jZXNzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
OjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q09SU1ByZWZsaWdodENoZWNrZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzczo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOiBEZWxl
dGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQcmVjb25uZWN0VGFzazo6Y2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6UHJlY29ubmVjdFRhc2s6
OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6IERlbGV0ZWQu
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZSk6CisKIDIwMTgt
MDgtMTUgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtXUEVdW0dUS10gV2F5bGFuZENvbXBvc2l0b3IgZmFpbHMgdG8gcHJvcGVybHkgcmVtb3Zl
IHN1cmZhY2UgZnJvbSBpdHMgcGFnZSBtYXAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJ
KHJldmlzaW9uIDIzNDg4MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBA
QCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6d2lsbFBlCiAgICAgbV9jb21wbGV0
aW9uQ2FsbGJhY2soUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3QudXJsKCksICJQcmVmbGlnaHQgcmVzcG9uc2Ug
aXMgbm90IHN1Y2Nlc3NmdWwiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wg
fSk7CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlQ2hh
bGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2Us
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRSZWNlaXZlQ2hhbGxlbmdlLCBhdXRoZW50aWNhdGlvbiBzY2hlbWU6ICV1IiwgY2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkpOwogCkBAIC0xMDIs
NyArMTAyLDE1IEBAIHZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWMKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAorI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FM
TEJBQ0spCisgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLCBtX3BhcmFt
ZXRlcnMucGFnZUlELCBtX3BhcmFtZXRlcnMuZnJhbWVJRCwgW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGNoYWxsZW5nZSA9IFdURk1vdmUoY2hhbGxlbmdlKV0gKGJvb2wgY2FuQXV0aGVudGlj
YXRlKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFjYW5BdXRoZW50aWNhdGUpCisgICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlLCB7IH0pOworICAgICAgICBOZXR3b3JrUHJvY2Vz
czo6c2luZ2xldG9uKCkuYXV0aGVudGljYXRpb25NYW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKG1fcGFyYW1ldGVycy5wYWdlSUQsIG1fcGFyYW1ldGVycy5mcmFtZUlE
LCBjaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKKyNlbHNl
CiAgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigp
LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3BhcmFtZXRlcnMucGFnZUlELCBt
X3BhcmFtZXRlcnMuZnJhbWVJRCwgY2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisjZW5kaWYKIH0KIAogdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yZWRDcmVkZW50
aWFsc1BvbGljeS5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwpAQCAtMzgsNyArMzksNyBAQCBjbGFz
cyBTZWN1cml0eU9yaWdpbjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIE5ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlciBmaW5hbCA6IHByaXZhdGUgTmV0d29ya0RhdGFUYXNrQ2xpZW50
ICB7CitjbGFzcyBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIgZmluYWwgOiBwcml2YXRlIE5l
dHdvcmtEYXRhVGFza0NsaWVudCwgcHVibGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlcj4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgog
ICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKQEAgLTYzLDcgKzY0LDcgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5h
bDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkocmV2
aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCB1c2luZyBSZXNwb25zZUNv
bXBsZXRpb25IYW5kbGVyID0gQ29tcGxlCiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewog
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VD
b21wbGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRh
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Q29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgTmV0d29ya0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGly
ZWMKICAgICBtX2NsaWVudC5nZXQoKS53aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUo
b2xkUmVxdWVzdCksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSkp
OwogfQogCi12b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxl
bmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fY2hhbGxlbmdlID0gY2hh
bGxlbmdlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCShyZXZpc2lvbiAyMzQ4
ODEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE5ldHdvcmtEYXRh
VGFza0NsaWVudAogICAgIHZvaWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2Uo
Y29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2VOZXR3b3JrU2Vzc2lvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
KSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjY5LDQwICs2NjksMjEgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQoRG93bgogfQogICAgIAogI2lmIFVTRShQ
Uk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi1zdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVD
YW5BdXRoZW50aWNhdGVJZGVudGlmaWVyKCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNw
YWNlJiBwcm90ZWN0aW9uU3BhY2UsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBzdGF0aWMgdWludDY0X3QgbGFzdExvYWRlcklEID0gMDsKLSAgICByZXR1cm4gKytsYXN0TG9h
ZGVySUQ7CisgICAgc3RhdGljIHVpbnQ2NF90IGxhc3RDb21wbGV0aW9uSGFuZGxlcklEID0gMDsK
KyAgICB1aW50NjRfdCBjb21wbGV0aW9uSGFuZGxlcklEID0gKytsYXN0Q29tcGxldGlvbkhhbmRs
ZXJJRDsKKyAgICBtX2NhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VDb21wbGV0
aW9uSGFuZGxlcnMuYWRkKGNvbXBsZXRpb25IYW5kbGVySUQsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGNvbXBsZXRpb25IYW5kbGVySUQsIHBhZ2VJRCwgZnJhbWVJRCwgcHJvdGVjdGlvblNwYWNlKSwg
MCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2UoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIsIGNvbnN0IFdlYkNvcmU6
OlByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6
Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90IGNv
bXBsZXRpb25IYW5kbGVySUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKQogewotICAgIHVpbnQ2NF90
IGxvYWRlcklEID0gZ2VuZXJhdGVDYW5BdXRoZW50aWNhdGVJZGVudGlmaWVyKCk7Ci0gICAgbV93
YWl0aW5nTmV0d29ya1Jlc291cmNlTG9hZGVycy5zZXQobG9hZGVySUQsIGxvYWRlcik7Ci0gICAg
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShsb2FkZXJJRCwgbG9h
ZGVyLnBhZ2VJRCgpLCBsb2FkZXIuZnJhbWVJRCgpLCBwcm90ZWN0aW9uU3BhY2UpLCAwKTsKLX0K
LQotI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoUHJlY29ubmVjdFRhc2smIHByZWNv
bm5lY3RUYXNrLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFj
ZSkKLXsKLSAgICB1aW50NjRfdCBsb2FkZXJJRCA9IGdlbmVyYXRlQ2FuQXV0aGVudGljYXRlSWRl
bnRpZmllcigpOwotICAgIG1fd2FpdGluZ1ByZWNvbm5lY3RUYXNrcy5zZXQobG9hZGVySUQsIG1h
a2VXZWFrUHRyKHByZWNvbm5lY3RUYXNrKSk7Ci0gICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Q2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZShsb2FkZXJJRCwgcHJlY29ubmVjdFRhc2sucGFnZUlEKCksIHBy
ZWNvbm5lY3RUYXNrLmZyYW1lSUQoKSwgcHJvdGVjdGlvblNwYWNlKSwgMCk7Ci19Ci0jZW5kaWYK
LQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKHVpbnQ2NF90IGxvYWRlcklELCBib29sIGNhbkF1dGhlbnRpY2F0ZSkKLXsK
LSAgICBpZiAoYXV0byByZXNvdXJjZUxvYWRlciA9IG1fd2FpdGluZ05ldHdvcmtSZXNvdXJjZUxv
YWRlcnMudGFrZShsb2FkZXJJRCkpIHsKLSAgICAgICAgcmVzb3VyY2VMb2FkZXIudmFsdWUoKS0+
Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNhbkF1dGhlbnRp
Y2F0ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05O
RUNUKQotICAgIGlmIChhdXRvIHByZWNvbm5lY3RUYXNrID0gbV93YWl0aW5nUHJlY29ubmVjdFRh
c2tzLnRha2UobG9hZGVySUQpKSB7Ci0gICAgICAgIHByZWNvbm5lY3RUYXNrLT5jb250aW51ZUNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2FuQXV0aGVudGljYXRlKTsKKyAg
ICBpZiAoYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1fY2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZUNvbXBsZXRpb25IYW5kbGVycy50YWtlKGNvbXBsZXRpb25IYW5kbGVySUQp
KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNhbkF1dGhlbnRpY2F0ZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0jZW5kaWYKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMywxMCArMTIzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFz
ayYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYpOwogCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAg
ICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoTmV0d29ya1Jlc291
cmNlTG9hZGVyJiwgY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJik7Ci0jaWYgRU5BQkxF
KFNFUlZFUl9QUkVDT05ORUNUKQotICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZShQcmVjb25uZWN0VGFzayYsIGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFj
ZSYpOwotI2VuZGlmCisgICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAjZW5kaWYK
IAogICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJik7CkBAIC0yMjUsNyArMjIyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3du
bG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwogICAgIHZvaWQgY2FuY2VsRG93
bmxvYWQoRG93bmxvYWRJRCk7CiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFD
SykKLSAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZSh1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBib29sIGNhbkF1dGhlbnRpY2F0ZSk7
CisgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
dWludDY0X3QgY29tcGxldGlvbkhhbmRsZXJJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpOwogI2Vu
ZGlmCiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCBjb250aW51ZURlY2lkZVBlbmRpbmdEb3du
bG9hZERlc3RpbmF0aW9uKERvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiYsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOwpAQCAtMjg0LDEwICsyODEs
OSBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBjaGFyKiwgc3RkOjp1bmlx
dWVfcHRyPE5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudD4sIFB0ckhhc2g8Y29uc3QgY2hhcio+PiBO
ZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnRNYXA7CiAgICAgTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50
TWFwIG1fc3VwcGxlbWVudHM7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lk
ICgpPj4gbV9zYW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxlcnM7Ci0gICAg
SGFzaE1hcDx1aW50NjRfdCwgUmVmPE5ldHdvcmtSZXNvdXJjZUxvYWRlcj4+IG1fd2FpdGluZ05l
dHdvcmtSZXNvdXJjZUxvYWRlcnM7Ci0jaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQotICAg
IEhhc2hNYXA8dWludDY0X3QsIFdlYWtQdHI8UHJlY29ubmVjdFRhc2s+PiBtX3dhaXRpbmdQcmVj
b25uZWN0VGFza3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZCgpPj4gbV9z
YW5kYm94RXh0ZW5zaW9uRm9yQmxvYnNDb21wbGV0aW9uSGFuZGxlcnM7CisjaWYgVVNFKFBST1RF
Q1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPj4gbV9jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlQ29tcGxldGlvbkhhbmRsZXJzOwogI2VuZGlmCiAgICAgSGFzaFNldDxQQUw6OlNlc3Np
b25JRD4gbV9zZXNzaW9uc0NvbnRyb2xsZWRCeUF1dG9tYXRpb247CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAJKHJldmlzaW9uIDIzNDg4MSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTM4LDEzICs5MzgsMTAg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmludmFsaWRhdGVTYQogI2lmIFVTRShQUk9U
RUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0
b24oKS5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKCp0aGlzLCBwcm90ZWN0
aW9uU3BhY2UpOwotfQotCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgcmVzdWx0KQotewotICAgIGlm
IChtX25ldHdvcmtMb2FkKQotICAgICAgICBtX25ldHdvcmtMb2FkLT5jb250aW51ZUNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UocmVzdWx0KTsKKyAgICBOZXR3b3JrUHJvY2Vz
czo6c2luZ2xldG9uKCkuY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShwcm90
ZWN0aW9uU3BhY2UsIHBhZ2VJRCgpLCBmcmFtZUlEKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIChib29sIHJlc3VsdCkgeworICAgICAgICBpZiAobV9uZXR3b3JrTG9h
ZCkKKyAgICAgICAgICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZShyZXN1bHQpOworICAgIH0pOwogfQogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuaAkocmV2aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODAsOSArODAsNiBA
QCBwdWJsaWM6CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFJlY2VpdmVO
ZXR3b3JrUmVzb3VyY2VMb2FkZXJNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpOwogCi0jaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICB2b2lk
IGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKTsKLSNl
bmRpZgogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgbmV3UmVxdWVzdCwgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFs
cyk7CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuY3BwCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw3
IEBAIHZvaWQgUGluZ0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW8KICAgICB9KTsKIH0K
IAotdm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZUNoYWxsZW5nZSIpOwog
ICAgIGF1dG8gd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcg
KzU1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3kqIGNv
bnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0OwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZU5ldHdvcmtTZXNzaW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtM
b2FkTWV0cmljcyYpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cmVjb25uZWN0VGFzay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QcmVjb25uZWN0VGFzay5jcHAJKHJldmlzaW9uIDIzNDg4MSkKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDAsMTUgKzEwMCwxMyBAQCB2b2lkIFByZWNvbm5lY3RUYXNrOjpjYW5BdXRoZW50aWNhdGVBZ2Fp
CiB7CiAgICAgaWYgKCFwYWdlSUQoKSkgewogICAgICAgICAvLyBUaGUgcHJlY29ubmVjdCB3YXMg
c3RhcnRlZCBieSB0aGUgVUlQcm9jZXNzLgotICAgICAgICBjb250aW51ZUNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoZmFsc2UpOworICAgICAgICBtX25ldHdvcmtMb2FkLT5j
b250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoZmFsc2UpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5jYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKCp0aGlzLCBwcm90ZWN0aW9uU3BhY2Up
OwotfQotCi12b2lkIFByZWNvbm5lY3RUYXNrOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2UoYm9vbCByZXN1bHQpCi17Ci0gICAgbV9uZXR3b3JrTG9hZC0+Y29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHJlc3VsdCk7CisgICAg
TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlLCBwYWdlSUQoKSwgZnJhbWVJRCgpLCBbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKV0gKGJvb2wgcmVzdWx0KSB7CisgICAgICAgIGlmICh3ZWFrVGhp
cykKKyAgICAgICAgICAgIHdlYWtUaGlzLT5tX25ldHdvcmtMb2FkLT5jb250aW51ZUNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UocmVzdWx0KTsKKyAgICB9KTsKIH0KIAogdm9p
ZCBQcmVjb25uZWN0VGFzazo6ZGlkRmluaXNoKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suaAko
cmV2aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25u
ZWN0VGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw2IEBAIHB1YmxpYzoKICAgICB1
aW50NjRfdCBmcmFtZUlEKCkgY29uc3Q7CiAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3Q7CiAK
LSAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShi
b29sKTsKLQogcHJpdmF0ZToKICAgICAvLyBOZXR3b3JrTG9hZENsaWVudC4KICAgICBib29sIGlz
U3luY2hyb25vdXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EuaAkocmV2aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3
ICs1Miw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHVpbnQ2NF90IFRhc2tJZGVudGlmaWVyOwog
CiAgICAgdm9pZCBkaWRTZW5kRGF0YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3Qg
dG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2Uo
Y29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAg
ICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKIApJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODIs
MTMgKzI4MiwxMyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRTZW5kRGF0YSh1CiAg
ICAgICAgIG1fY2xpZW50LT5kaWRTZW5kRGF0YSh0b3RhbEJ5dGVzU2VudCwgdG90YWxCeXRlc0V4
cGVjdGVkVG9TZW5kKTsKIH0KIAotdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2
ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAodHJ5UGFzc3dvcmRCYXNlZEF1dGhl
bnRpY2F0aW9uKGNoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQ2hhbGxl
bmdlKGNoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShXVEZNb3ZlKGNoYWxsZW5nZSksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIHsgfSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1
cmwuY3BwCShyZXZpc2lvbiAyMzQ4ODEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw3ICsz
MDcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRUCiAgICAgfSk7
CiB9CiAKLXZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6dHJ5SHR0cEF1dGhlbnRpY2F0aW9uKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCit2b2lkIE5ldHdvcmtEYXRh
VGFza0N1cmw6OnRyeUh0dHBBdXRoZW50aWNhdGlvbihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYm
IGNoYWxsZW5nZSkKIHsKICAgICBpZiAoIW1fdXNlci5pc051bGwoKSAmJiAhbV9wYXNzd29yZC5p
c051bGwoKSkgewogICAgICAgICBhdXRvIHBlcnNpc3RlbmNlID0gbV9zdG9yZWRDcmVkZW50aWFs
c1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlID8gV2ViQ29y
ZTo6Q3JlZGVudGlhbFBlcnNpc3RlbmNlRm9yU2Vzc2lvbiA6IFdlYkNvcmU6OkNyZWRlbnRpYWxQ
ZXJzaXN0ZW5jZU5vbmU7CkBAIC0zMzksNyArMzM5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tD
dXJsOjp0cnlIdHRwQXV0aGVudAogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVDaGFsbGVuZ2UoY2hhbGxlbmdlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBjaGFsbGVuZ2VdKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24g
ZGlzcG9zaXRpb24sIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKKyAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2Up
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBdKEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRl
bnRpYWwpIHsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0
YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRh
VGFza0N1cmwuaAkocmV2aXNpb24gMjM0ODgxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyAr
NzIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkUmVkaXJlY3RBc0dFVChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNyb3NzT3JpZ2luKTsKICAgICB2b2lkIHdpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKCk7CiAKLSAgICB2b2lkIHRyeUh0dHBBdXRoZW50aWNhdGlv
bihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOworICAgIHZvaWQgdHJ5
SHR0cEF1dGhlbnRpY2F0aW9uKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYpOwog
ICAgIHZvaWQgcmVzdGFydFdpdGhDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwm
KTsKIAogICAgIHZvaWQgYXBwZW5kQ29va2llSGVhZGVyKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAkocmV2aXNpb24gMjM0ODgxKQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MjAsNyArNTIwLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjph
dXRoZW50aWNhdGUoQQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlQXV0aGVu
dGljYXRlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlKQogewotICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY2hhbGxlbmdlXShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSB7CisgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hh
bGxlbmdlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2hhbGxlbmdl
XShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBD
cmVkZW50aWFsJiBjcmVkZW50aWFsKSB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpD
YW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKSB7CiAgICAgICAgICAgICBj
bGVhclJlcXVlc3QoKTsKICAgICAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>