<?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>232977</bug_id>
          
          <creation_ts>2021-11-10 18:13:50 -0800</creation_ts>
          <short_desc>_WKWebAuthenticationPanel should expose a way to encode CTAP commands</short_desc>
          <delta_ts>2021-11-15 17:24:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Garrett Davidson">garrett_davidson</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>pascoe</cc>
    
    <cc>rmondello</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1813872</commentid>
    <comment_count>0</comment_count>
    <who name="Garrett Davidson">garrett_davidson</who>
    <bug_when>2021-11-10 18:13:50 -0800</bug_when>
    <thetext>_WKWebAuthenticationPanel should expose a way to encode CTAP commands</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813874</commentid>
    <comment_count>1</comment_count>
      <attachid>443892</attachid>
    <who name="Garrett Davidson">garrett_davidson</who>
    <bug_when>2021-11-10 18:17:55 -0800</bug_when>
    <thetext>Created attachment 443892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813875</commentid>
    <comment_count>2</comment_count>
    <who name="Garrett Davidson">garrett_davidson</who>
    <bug_when>2021-11-10 18:17:58 -0800</bug_when>
    <thetext>&lt;rdar://problem/85279329&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814273</commentid>
    <comment_count>3</comment_count>
      <attachid>444012</attachid>
    <who name="Garrett Davidson">garrett_davidson</who>
    <bug_when>2021-11-11 15:41:21 -0800</bug_when>
    <thetext>Created attachment 444012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814281</commentid>
    <comment_count>4</comment_count>
      <attachid>444012</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2021-11-11 16:00:10 -0800</bug_when>
    <thetext>Comment on attachment 444012
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:644
&gt; ++ (NSData *)encodeMakeCredentialCommandWithClientDataJSON:(NSData *)clientDataJSON options:(_WKPublicKeyCredentialCreationOptions *)options userVerificationAvailability:(_WKWebAuthenticationUserVerificationAvailability)userVerificationAvailability

Could we just take in the hash on these? Trying to cut down on the amount of times we generate clientDataJSON.

In web flows, it&apos;s originally calculated from CredentialsContainer.cpp:92 -&gt; AuthenticatorCoordinator.cpp:246 (client data json generated here and hash passed along) -&gt; WebAuthenticatorCoordinator.cpp:100 and then the hash gets ignored in the new WebAuthenticatorCoordinatorProxy::getAssertion instead of being passed along to ASC agent only to be regenerated later in a call to getAssertionWithChallenge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814283</commentid>
    <comment_count>5</comment_count>
      <attachid>444012</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-11 16:02:33 -0800</bug_when>
    <thetext>Comment on attachment 444012
Patch

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

r- to add ASSERT_NOT_REACHED() and since it looks like tv/watch builds need to be fixed.

Otherwise looks good, but I&apos;m not a domain expert.  :)

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:206
&gt; +

Should have an `ASSERT_NOT_REACHED();` statement here before the `return` statement for Debug builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814312</commentid>
    <comment_count>6</comment_count>
      <attachid>444027</attachid>
    <who name="Garrett Davidson">garrett_davidson</who>
    <bug_when>2021-11-11 17:13:54 -0800</bug_when>
    <thetext>Created attachment 444027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814314</commentid>
    <comment_count>7</comment_count>
      <attachid>444029</attachid>
    <who name="Garrett Davidson">garrett_davidson</who>
    <bug_when>2021-11-11 17:20:32 -0800</bug_when>
    <thetext>Created attachment 444029
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814457</commentid>
    <comment_count>8</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2021-11-12 08:28:37 -0800</bug_when>
    <thetext>(In reply to j_pascoe@apple.com from comment #4)
&gt; Comment on attachment 444012 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=444012&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:644
&gt; &gt; ++ (NSData *)encodeMakeCredentialCommandWithClientDataJSON:(NSData *)clientDataJSON options:(_WKPublicKeyCredentialCreationOptions *)options userVerificationAvailability:(_WKWebAuthenticationUserVerificationAvailability)userVerificationAvailability
&gt; 
&gt; Could we just take in the hash on these? Trying to cut down on the amount of
&gt; times we generate clientDataJSON.
&gt; 
&gt; In web flows, it&apos;s originally calculated from CredentialsContainer.cpp:92 -&gt;
&gt; AuthenticatorCoordinator.cpp:246 (client data json generated here and hash
&gt; passed along) -&gt; WebAuthenticatorCoordinator.cpp:100 and then the hash gets
&gt; ignored in the new WebAuthenticatorCoordinatorProxy::getAssertion instead of
&gt; being passed along to ASC agent only to be regenerated later in a call to
&gt; getAssertionWithChallenge.

Any reason we can&apos;t do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814482</commentid>
    <comment_count>9</comment_count>
    <who name="Garrett Davidson">garrett_davidson</who>
    <bug_when>2021-11-12 09:03:22 -0800</bug_when>
    <thetext>&gt; Any reason we can&apos;t do this?

Sorry I thought I replied inline on the old patch but I&apos;m not sure what happened to it.

Part of the WebAuthn API contract is that the caller needs the original clientDataJSON back, which is used during signature verification, so the full value needs to be exposed anywhere a command is encoded. That said, _WKWebAuthenticationPanel could definitely start using AuthenticatorCoordinator::produceClientDataJson internally instead of having its own copy, and/or the other methods on _WKWebAuthenticationPanel could accept a full clientDataJSON as well. I think those would both be independent of this change though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814628</commentid>
    <comment_count>10</comment_count>
      <attachid>444029</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2021-11-12 14:12:25 -0800</bug_when>
    <thetext>Comment on attachment 444029
Patch

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

r=me
Let me know if you need cq+ as well.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:648
&gt; +    RetainPtr&lt;NSData&gt; clientDataJSON;
&gt; +
&gt; +#if ENABLE(WEB_AUTHN)
&gt; +    clientDataJSON = produceClientDataJson(type, challenge, origin);
&gt; +#endif
&gt; +
&gt; +    return clientDataJSON.autorelease();

Another way to write this would be:

#if ENABLE(WEB_AUTHN)
    return produceClientDataJson(type, challenge, origin).autorelease();
#else
    return nullptr;
#endif

This does NOT need to be changed to land the patch, but it makes it clearer what the code path does when ENABLE(WEB_AUTHN) evaluates to false.

(Similar change could be done for the other methods, too, but no need to change this to land it.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814691</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-12 16:55:27 -0800</bug_when>
    <thetext>Committed r285763 (244210@main): &lt;https://commits.webkit.org/244210@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444029.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815248</commentid>
    <comment_count>12</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2021-11-15 15:16:24 -0800</bug_when>
    <thetext>(In reply to Garrett Davidson from comment #9)
&gt; &gt; Any reason we can&apos;t do this?
&gt; 
&gt; Sorry I thought I replied inline on the old patch but I&apos;m not sure what
&gt; happened to it.
&gt; 
&gt; Part of the WebAuthn API contract is that the caller needs the original
&gt; clientDataJSON back, which is used during signature verification, so the
&gt; full value needs to be exposed anywhere a command is encoded. That said,
&gt; _WKWebAuthenticationPanel could definitely start using
&gt; AuthenticatorCoordinator::produceClientDataJson internally instead of having
&gt; its own copy, and/or the other methods on _WKWebAuthenticationPanel could
&gt; accept a full clientDataJSON as well. I think those would both be
&gt; independent of this change though.

We already made _WKWebAuthenticationPanel start using AuthenticatorCoordinator::produceClientDataJson internally in https://trac.webkit.org/changeset/285617/webkit as using a different implementation broke WebAuthn due to the signature not matching the client data json returned.

The complete ClientDataJson is only needed for returning via the api, which is already done in AuthenticatorCoordinator.cpp:238. Everywhere else, ClientDataHash can be passed around. The authenticator does not need this value, noted here: https://www.w3.org/TR/webauthn-3/#iface-authenticatorresponse

To complete same-site i-frames, we are going to have to add a crossOrigin flag to ClientDataJson, which is complicated by _WKWebAuthenticationPanel also having an SPI to calculate ClientDataJson, so we&apos;re going to have to end up removing it and likely changing these new SPIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815292</commentid>
    <comment_count>13</comment_count>
    <who name="Garrett Davidson">garrett_davidson</who>
    <bug_when>2021-11-15 17:24:38 -0800</bug_when>
    <thetext>(In reply to j_pascoe@apple.com from comment #12)

&gt; We already made _WKWebAuthenticationPanel start using
&gt; AuthenticatorCoordinator::produceClientDataJson internally in
&gt; https://trac.webkit.org/changeset/285617/webkit as using a different
&gt; implementation broke WebAuthn due to the signature not matching the client
&gt; data json returned.

I didn&apos;t realize that. Neat!


&gt; The complete ClientDataJson is only needed for returning via the api, which
&gt; is already done in AuthenticatorCoordinator.cpp:238. Everywhere else,
&gt; ClientDataHash can be passed around. The authenticator does not need this
&gt; value, noted here:
&gt; https://www.w3.org/TR/webauthn-3/#iface-authenticatorresponse
&gt; 
&gt; To complete same-site i-frames, we are going to have to add a crossOrigin
&gt; flag to ClientDataJson, which is complicated by _WKWebAuthenticationPanel
&gt; also having an SPI to calculate ClientDataJson, so we&apos;re going to have to
&gt; end up removing it and likely changing these new SPIs.

Pascoe and I discussed this out of band. We&apos;re still thinking about the best way to reduce duplicated work for all of the intended clients here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443892</attachid>
            <date>2021-11-10 18:17:55 -0800</date>
            <delta_ts>2021-11-11 15:41:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232977-20211110181755.patch</filename>
            <type>text/plain</type>
            <size>6966</size>
            <attacher name="Garrett Davidson">garrett_davidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiYWE4MzNlMTcwMDYwYmI1
MWM1NzI0ZmE5OTNiZmY4NzZmM2UyYjYuLjc0ZWM3MGRhZDFmN2NjZGNkZWJiMTg3NTgwZGY1YTA4
OWQxNjYzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjEtMTEtMTAgIEdhcnJldHQg
RGF2aWRzb24gIDxkYXZpZHNvbi5nYXJyZXR0bUBnbWFpbC5jb20+CisKKyAgICAgICAgX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbCBzaG91bGQgZXhwb3NlIGEgd2F5IHRvIGVuY29kZSBDVEFQIGNv
bW1hbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI5NzcKKyAgICAgICAgPHJkYXI6Ly84NTI3OTMyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgdGhlIGV4aXN0aW5nIENUQVAgY29tbWFu
ZCBlbmNvZGluZyB0aHJvdWdoIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuCisKKyAgICAgICAg
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKGNvcmVVc2VyVmVy
aWZpY2F0aW9uQXZhaWxhYmlsaXR5KToKKyAgICAgICAgKCtbX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCBlbmNvZGVNYWtlQ3JlZGVudGlhbENvbW1hbmRXaXRoQ2hhbGxlbmdlOm9yaWdpbjpvcHRp
b25zOnVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6XSk6CisgICAgICAgICgrW19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwgZW5jb2RlR2V0QXNzZXJ0aW9uQ29tbWFuZFdpdGhDaGFsbGVuZ2U6
b3JpZ2luOm9wdGlvbnM6dXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTpdKToKKwogMjAyMS0x
MS0xMCAgUGVyIEFybmUgVm9sbGFuIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBCbG9j
ayBzYW5kYm94IGFjY2VzcyB0byBjb25zdW1lIG1hY2ggZXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLmgKaW5kZXggOTg1NDBmZWY4NDZkNmE5YjJiMmEzYmIwNWQwZDEzNmUyYmFjOWIw
NS4uZmM5N2JlZGQ5ODI2MzU4YjNjYjQ5NDJkNThiYzE1NmExNTNjNzhhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5oCkBAIC04MCw2ICs4MCwxMiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRl
Z2VyLCBfV0tXZWJBdXRoZW50aWNhdGlvblNvdXJjZSkgewogICAgIF9XS1dlYkF1dGhlbnRpY2F0
aW9uU291cmNlRXh0ZXJuYWwsCiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygx
NC4wKSk7CiAKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0aW9u
VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSkgeworICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9u
VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eVN1cHBvcnRlZEFuZENvbmZpZ3VyZWQsCisgICAg
X1dLV2ViQXV0aGVudGljYXRpb25Vc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5U3VwcG9ydGVk
QnV0Tm90Q29uZmlndXJlZCwKKyAgICBfV0tXZWJBdXRoZW50aWNhdGlvblVzZXJWZXJpZmljYXRp
b25BdmFpbGFiaWxpdHlOb3RTdXBwb3J0ZWQsCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIFdLX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcg
KiBjb25zdCBfV0tMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsTmFtZUtleTsKIFdLX0VYUE9S
VCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBfV0tMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFs
SURLZXk7CiBXS19FWFBPUlQgZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgX1dLTG9jYWxBdXRoZW50
aWNhdG9yQ3JlZGVudGlhbFJlbHlpbmdQYXJ0eUlES2V5OwpAQCAtMTEyLDYgKzExOCw5IEBAIFdL
X0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwgaW9zKDEzLjQpKQogCiArIChCT09MKWlz
VXNlclZlcmlmeWluZ1BsYXRmb3JtQXV0aGVudGljYXRvckF2YWlsYWJsZSBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogCisrIChOU0RhdGEgKillbmNvZGVNYWtlQ3Jl
ZGVudGlhbENvbW1hbmRXaXRoQ2hhbGxlbmdlOihOU0RhdGEgKiljaGFsbGVuZ2Ugb3JpZ2luOihO
U1N0cmluZyAqKW9yaWdpbiBvcHRpb25zOihfV0tQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zICopb3B0aW9ucyB1c2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5OihfV0tXZWJBdXRo
ZW50aWNhdGlvblVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkpdXNlclZlcmlmaWNhdGlvbkF2
YWlsYWJpbGl0eSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOworKyAoTlNEYXRhICopZW5jb2RlR2V0QXNzZXJ0aW9uQ29tbWFuZFdpdGhDaGFsbGVu
Z2U6KE5TRGF0YSAqKWNoYWxsZW5nZSBvcmlnaW46KE5TU3RyaW5nICopb3JpZ2luIG9wdGlvbnM6
KF9XS1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyAqKW9wdGlvbnMgdXNlclZlcmlm
aWNhdGlvbkF2YWlsYWJpbGl0eTooX1dLV2ViQXV0aGVudGljYXRpb25Vc2VyVmVyaWZpY2F0aW9u
QXZhaWxhYmlsaXR5KXVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAoaW5zdGFuY2V0eXBl
KWluaXQ7CiAKIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNzE1MDk0ODU+IEFkZHMgZGV0YWls
ZWQgTlNFcnJvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggNTc1OGZiN2QwNGZi
ZmRhZjNhYjljZjU1YTA4NzAzNzVhODA4NjFjNy4uMGVlNzkwOWVhYjEyNWZjNjhhMDBlODMyN2Uy
ZGQ5NmU0ZTZhMmNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTQ3LDYgKzQ3
LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRvclJlc3BvbnNlRGF0YS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9DQk9SUmVhZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NCT1JXcml0ZXIu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlUmVxdWVzdENvbnZlcnRlci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9GaWRvQ29uc3RhbnRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucy5oPgpAQCAtMTkyLDYgKzE5MywyMCBAQCBzdGF0aWMgX1dLV2Vi
QXV0aGVudGljYXRpb25UeXBlIHdrV2ViQXV0aGVudGljYXRpb25UeXBlKFdlYkNvcmU6OkNsaWVu
dERhdGFUeXBlCiAgICAgfQogfQogCitzdGF0aWMgZmlkbzo6QXV0aGVudGljYXRvclN1cHBvcnRl
ZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkgY29yZVVzZXJWZXJpZmljYXRp
b25BdmFpbGFiaWxpdHkoX1dLV2ViQXV0aGVudGljYXRpb25Vc2VyVmVyaWZpY2F0aW9uQXZhaWxh
YmlsaXR5IHdrQXZhaWxhYmlsaXR5KQoreworICAgIHN3aXRjaCAod2tBdmFpbGFiaWxpdHkpIHsK
KyAgICBjYXNlIF9XS1dlYkF1dGhlbnRpY2F0aW9uVXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0
eVN1cHBvcnRlZEFuZENvbmZpZ3VyZWQ6CisgICAgICAgIHJldHVybiBmaWRvOjpBdXRoZW50aWNh
dG9yU3VwcG9ydGVkT3B0aW9uczo6VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTo6a1N1cHBv
cnRlZEFuZENvbmZpZ3VyZWQ7CisgICAgY2FzZSBfV0tXZWJBdXRoZW50aWNhdGlvblVzZXJWZXJp
ZmljYXRpb25BdmFpbGFiaWxpdHlTdXBwb3J0ZWRCdXROb3RDb25maWd1cmVkOgorICAgICAgICBy
ZXR1cm4gZmlkbzo6QXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRp
b25BdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRCdXROb3RDb25maWd1cmVkOworICAgIGNhc2UgX1dL
V2ViQXV0aGVudGljYXRpb25Vc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5Tm90U3VwcG9ydGVk
OgorICAgICAgICByZXR1cm4gZmlkbzo6QXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVz
ZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6OmtOb3RTdXBwb3J0ZWQ7CisgICAgfQorCisgICAg
cmV0dXJuIGZpZG86OkF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0
aW9uQXZhaWxhYmlsaXR5OjprTm90U3VwcG9ydGVkOworfQorCiAtIChfV0tXZWJBdXRoZW50aWNh
dGlvblR5cGUpdHlwZQogewogICAgIHJldHVybiB3a1dlYkF1dGhlbnRpY2F0aW9uVHlwZShfcGFu
ZWwtPmNsaWVudERhdGFUeXBlKCkpOwpAQCAtNjIxLDYgKzYzNiwzNCBAQCBzdGF0aWMgUmV0YWlu
UHRyPF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcAogI2VuZGlmCiB9CiAKKysgKE5TRGF0YSAqKWVuY29kZU1ha2VDcmVkZW50aWFs
Q29tbWFuZFdpdGhDaGFsbGVuZ2U6KE5TRGF0YSAqKWNoYWxsZW5nZSBvcmlnaW46KE5TU3RyaW5n
ICopb3JpZ2luIG9wdGlvbnM6KF9XS1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMg
KilvcHRpb25zIHVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6KF9XS1dlYkF1dGhlbnRpY2F0
aW9uVXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSl1c2VyVmVyaWZpY2F0aW9uQXZhaWxhYmls
aXR5Cit7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gZW5jb2RlZENvbW1hbmQ7CisjaWYgRU5BQkxF
KFdFQl9BVVRITikKKyAgICBhdXRvIGNsaWVudERhdGFKU09OID0gcHJvZHVjZUNsaWVudERhdGFK
c29uKF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZUNyZWF0ZSwgY2hhbGxlbmdlLCBvcmlnaW4pOwor
ICAgIGF1dG8gaGFzaCA9IHByb2R1Y2VDbGllbnREYXRhSnNvbkhhc2goY2xpZW50RGF0YUpTT04u
Z2V0KCkpOworCisgICAgYXV0byBlbmNvZGVkVmVjdG9yID0gZmlkbzo6ZW5jb2RlTWFrZUNyZWRl
bml0YWxSZXF1ZXN0QXNDQk9SKGhhc2gsIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZl
cnRUb0NvcmVDcmVhdGlvbk9wdGlvbnNXaXRoT3B0aW9uczpvcHRpb25zXSwgY29yZVVzZXJWZXJp
ZmljYXRpb25BdmFpbGFiaWxpdHkodXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSksIHN0ZDo6
bnVsbG9wdCk7CisgICAgZW5jb2RlZENvbW1hbmQgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBp
bml0V2l0aEJ5dGVzOmVuY29kZWRWZWN0b3IuZGF0YSgpIGxlbmd0aDplbmNvZGVkVmVjdG9yLnNp
emUoKV0pOworI2VuZGlmCisKKyAgICByZXR1cm4gZW5jb2RlZENvbW1hbmQuYXV0b3JlbGVhc2Uo
KTsKK30KKworKyAoTlNEYXRhICopZW5jb2RlR2V0QXNzZXJ0aW9uQ29tbWFuZFdpdGhDaGFsbGVu
Z2U6KE5TRGF0YSAqKWNoYWxsZW5nZSBvcmlnaW46KE5TU3RyaW5nICopb3JpZ2luIG9wdGlvbnM6
KF9XS1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyAqKW9wdGlvbnMgdXNlclZlcmlm
aWNhdGlvbkF2YWlsYWJpbGl0eTooX1dLV2ViQXV0aGVudGljYXRpb25Vc2VyVmVyaWZpY2F0aW9u
QXZhaWxhYmlsaXR5KXVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkKK3sKKyAgICBSZXRhaW5Q
dHI8TlNEYXRhPiBlbmNvZGVkQ29tbWFuZDsKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIGF1
dG8gY2xpZW50RGF0YUpTT04gPSBwcm9kdWNlQ2xpZW50RGF0YUpzb24oX1dLV2ViQXV0aGVudGlj
YXRpb25UeXBlR2V0LCBjaGFsbGVuZ2UsIG9yaWdpbik7CisgICAgYXV0byBoYXNoID0gcHJvZHVj
ZUNsaWVudERhdGFKc29uSGFzaChjbGllbnREYXRhSlNPTi5nZXQoKSk7CisKKyAgICBhdXRvIGVu
Y29kZWRWZWN0b3IgPSBmaWRvOjplbmNvZGVHZXRBc3NlcnRpb25SZXF1ZXN0QXNDQk9SKGhhc2gs
IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9uc1dp
dGhPcHRpb25zOm9wdGlvbnNdLCBjb3JlVXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSh1c2Vy
VmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5KSwgc3RkOjpudWxsb3B0KTsKKyAgICBlbmNvZGVkQ29t
bWFuZCA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6ZW5jb2RlZFZlY3Rv
ci5kYXRhKCkgbGVuZ3RoOmVuY29kZWRWZWN0b3Iuc2l6ZSgpXSk7CisjZW5kaWYKKworICAgIHJl
dHVybiBlbmNvZGVkQ29tbWFuZC5hdXRvcmVsZWFzZSgpOworfQorCiAtICh2b2lkKXNldE1vY2tD
b25maWd1cmF0aW9uOihOU0RpY3Rpb25hcnkgKiljb25maWd1cmF0aW9uCiB7CiAjaWYgRU5BQkxF
KFdFQl9BVVRITikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444012</attachid>
            <date>2021-11-11 15:41:21 -0800</date>
            <delta_ts>2021-11-11 17:13:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232977-20211111154121.patch</filename>
            <type>text/plain</type>
            <size>7199</size>
            <attacher name="Garrett Davidson">garrett_davidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiYWE4MzNlMTcwMDYwYmI1
MWM1NzI0ZmE5OTNiZmY4NzZmM2UyYjYuLjFiOGFjZWVhZTZlMWYxMTc2OGQ2NGQ4N2M1ZjhkMzIz
ZGRlMDM4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMTEtMTAgIEdhcnJldHQg
RGF2aWRzb24gIDxkYXZpZHNvbi5nYXJyZXR0bUBnbWFpbC5jb20+CisKKyAgICAgICAgX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbCBzaG91bGQgZXhwb3NlIGEgd2F5IHRvIGVuY29kZSBDVEFQIGNv
bW1hbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI5NzcKKyAgICAgICAgPHJkYXI6Ly84NTI3OTMyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgdGhlIGV4aXN0aW5nIENUQVAgY29tbWFu
ZCBlbmNvZGluZyB0aHJvdWdoIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuCisKKyAgICAgICAg
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKGNvcmVVc2VyVmVy
aWZpY2F0aW9uQXZhaWxhYmlsaXR5KToKKyAgICAgICAgKCtbX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCBnZXRDbGllbnREYXRhSlNPTkZvckF1dGhlbnRpY2F0aW9uVHlwZTpjaGFsbGVuZ2U6b3Jp
Z2luOl0pCisgICAgICAgICgrW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgZW5jb2RlTWFrZUNy
ZWRlbnRpYWxDb21tYW5kV2l0aENsaWVudERhdGFKU09OOm9wdGlvbnM6dXNlclZlcmlmaWNhdGlv
bkF2YWlsYWJpbGl0eTpdKToKKyAgICAgICAgKCtbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBl
bmNvZGVHZXRBc3NlcnRpb25Db21tYW5kV2l0aENsaWVudERhdGFKU09OOm9wdGlvbnM6dXNlclZl
cmlmaWNhdGlvbkF2YWlsYWJpbGl0eTpdKToKKwogMjAyMS0xMS0xMCAgUGVyIEFybmUgVm9sbGFu
IDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBCbG9jayBzYW5kYm94IGFjY2VzcyB0byBj
b25zdW1lIG1hY2ggZXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKaW5kZXggOTg1
NDBmZWY4NDZkNmE5YjJiMmEzYmIwNWQwZDEzNmUyYmFjOWIwNS4uZDJhNTkxN2YyZDkwM2ZiMTNl
NmVhMzVjMDRhMTQzMmEyZDBhZjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCkBAIC04
MCw2ICs4MCwxMiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNh
dGlvblNvdXJjZSkgewogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uU291cmNlRXh0ZXJuYWwsCiB9
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiAKK3R5cGVkZWYgTlNf
RU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0aW9uVXNlclZlcmlmaWNhdGlvbkF2YWls
YWJpbGl0eSkgeworICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uVXNlclZlcmlmaWNhdGlvbkF2YWls
YWJpbGl0eVN1cHBvcnRlZEFuZENvbmZpZ3VyZWQsCisgICAgX1dLV2ViQXV0aGVudGljYXRpb25V
c2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5U3VwcG9ydGVkQnV0Tm90Q29uZmlndXJlZCwKKyAg
ICBfV0tXZWJBdXRoZW50aWNhdGlvblVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHlOb3RTdXBw
b3J0ZWQsCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CisKIFdLX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBfV0tMb2NhbEF1dGhl
bnRpY2F0b3JDcmVkZW50aWFsTmFtZUtleTsKIFdLX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcgKiBj
b25zdCBfV0tMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsSURLZXk7CiBXS19FWFBPUlQgZXh0
ZXJuIE5TU3RyaW5nICogY29uc3QgX1dLTG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbFJlbHlp
bmdQYXJ0eUlES2V5OwpAQCAtMTEyLDYgKzExOCwxMCBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFj
b3MoMTAuMTUuNCksIGlvcygxMy40KSkKIAogKyAoQk9PTClpc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9z
KDE1LjApKTsKIAorKyAoTlNEYXRhICopZ2V0Q2xpZW50RGF0YUpTT05Gb3JBdXRoZW50aWNhdGlv
blR5cGU6KF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSl0eXBlIGNoYWxsZW5nZTooTlNEYXRhICop
Y2hhbGxlbmdlIG9yaWdpbjooTlNTdHJpbmcgKilvcmlnaW4gV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKysgKE5TRGF0YSAqKWVuY29kZU1ha2VD
cmVkZW50aWFsQ29tbWFuZFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpT
T04gb3B0aW9uczooX1dLUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyAqKW9wdGlv
bnMgdXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTooX1dLV2ViQXV0aGVudGljYXRpb25Vc2Vy
VmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5KXVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKysgKE5T
RGF0YSAqKWVuY29kZUdldEFzc2VydGlvbkNvbW1hbmRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0
YSAqKWNsaWVudERhdGFKU09OIG9wdGlvbnM6KF9XS1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucyAqKW9wdGlvbnMgdXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTooX1dLV2ViQXV0
aGVudGljYXRpb25Vc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5KXVzZXJWZXJpZmljYXRpb25B
dmFpbGFiaWxpdHkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKwogLSAoaW5zdGFuY2V0eXBlKWluaXQ7CiAKIC8vIEZJWE1FOiA8cmRhcjovL3By
b2JsZW0vNzE1MDk0ODU+IEFkZHMgZGV0YWlsZWQgTlNFcnJvci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW0KaW5kZXggNTc1OGZiN2QwNGZiZmRhZjNhYjljZjU1YTA4NzAzNzVhODA4NjFjNy4u
Y2IwMDNkZjY2ZDNjOGE5YTg0ZmMzNzEwYzc4MzllNzRlYjE0NWY0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0KQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVu
dGljYXRvclJlc3BvbnNlRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DQk9SUmVhZGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0NCT1JXcml0ZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlUmVx
dWVzdENvbnZlcnRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaWRvQ29uc3RhbnRzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KICNpbXBv
cnQgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgpAQCAtMTky
LDYgKzE5MywyMCBAQCBzdGF0aWMgX1dLV2ViQXV0aGVudGljYXRpb25UeXBlIHdrV2ViQXV0aGVu
dGljYXRpb25UeXBlKFdlYkNvcmU6OkNsaWVudERhdGFUeXBlCiAgICAgfQogfQogCitzdGF0aWMg
Zmlkbzo6QXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFp
bGFiaWxpdHkgY29yZVVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoX1dLV2ViQXV0aGVudGlj
YXRpb25Vc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5IHdrQXZhaWxhYmlsaXR5KQoreworICAg
IHN3aXRjaCAod2tBdmFpbGFiaWxpdHkpIHsKKyAgICBjYXNlIF9XS1dlYkF1dGhlbnRpY2F0aW9u
VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eVN1cHBvcnRlZEFuZENvbmZpZ3VyZWQ6CisgICAg
ICAgIHJldHVybiBmaWRvOjpBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNlclZlcmlm
aWNhdGlvbkF2YWlsYWJpbGl0eTo6a1N1cHBvcnRlZEFuZENvbmZpZ3VyZWQ7CisgICAgY2FzZSBf
V0tXZWJBdXRoZW50aWNhdGlvblVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHlTdXBwb3J0ZWRC
dXROb3RDb25maWd1cmVkOgorICAgICAgICByZXR1cm4gZmlkbzo6QXV0aGVudGljYXRvclN1cHBv
cnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRCdXRO
b3RDb25maWd1cmVkOworICAgIGNhc2UgX1dLV2ViQXV0aGVudGljYXRpb25Vc2VyVmVyaWZpY2F0
aW9uQXZhaWxhYmlsaXR5Tm90U3VwcG9ydGVkOgorICAgICAgICByZXR1cm4gZmlkbzo6QXV0aGVu
dGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6OmtO
b3RTdXBwb3J0ZWQ7CisgICAgfQorCisgICAgcmV0dXJuIGZpZG86OkF1dGhlbnRpY2F0b3JTdXBw
b3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5OjprTm90U3VwcG9ydGVk
OworfQorCiAtIChfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpdHlwZQogewogICAgIHJldHVybiB3
a1dlYkF1dGhlbnRpY2F0aW9uVHlwZShfcGFuZWwtPmNsaWVudERhdGFUeXBlKCkpOwpAQCAtNjIx
LDYgKzYzNiwzNyBAQCBzdGF0aWMgUmV0YWluUHRyPF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcAogI2VuZGlmCiB9CiAKKysgKE5T
RGF0YSAqKWdldENsaWVudERhdGFKU09ORm9yQXV0aGVudGljYXRpb25UeXBlOihfV0tXZWJBdXRo
ZW50aWNhdGlvblR5cGUpdHlwZSBjaGFsbGVuZ2U6KE5TRGF0YSAqKWNoYWxsZW5nZSBvcmlnaW46
KE5TU3RyaW5nICopb3JpZ2luCit7CisgICAgcmV0dXJuIHByb2R1Y2VDbGllbnREYXRhSnNvbih0
eXBlLCBjaGFsbGVuZ2UsIG9yaWdpbikuYXV0b3JlbGVhc2UoKTsKK30KKworKyAoTlNEYXRhICop
ZW5jb2RlTWFrZUNyZWRlbnRpYWxDb21tYW5kV2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKilj
bGllbnREYXRhSlNPTiBvcHRpb25zOihfV0tQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zICopb3B0aW9ucyB1c2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5OihfV0tXZWJBdXRoZW50
aWNhdGlvblVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkpdXNlclZlcmlmaWNhdGlvbkF2YWls
YWJpbGl0eQoreworICAgIFJldGFpblB0cjxOU0RhdGE+IGVuY29kZWRDb21tYW5kOworI2lmIEVO
QUJMRShXRUJfQVVUSE4pCisgICAgYXV0byBoYXNoID0gcHJvZHVjZUNsaWVudERhdGFKc29uSGFz
aChjbGllbnREYXRhSlNPTik7CisKKyAgICBhdXRvIGVuY29kZWRWZWN0b3IgPSBmaWRvOjplbmNv
ZGVNYWtlQ3JlZGVuaXRhbFJlcXVlc3RBc0NCT1IoaGFzaCwgW19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwgY29udmVydFRvQ29yZUNyZWF0aW9uT3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBj
b3JlVXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSh1c2VyVmVyaWZpY2F0aW9uQXZhaWxhYmls
aXR5KSwgc3RkOjpudWxsb3B0KTsKKyAgICBlbmNvZGVkQ29tbWFuZCA9IGFkb3B0TlMoW1tOU0Rh
dGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6ZW5jb2RlZFZlY3Rvci5kYXRhKCkgbGVuZ3RoOmVuY29k
ZWRWZWN0b3Iuc2l6ZSgpXSk7CisjZW5kaWYKKworICAgIHJldHVybiBlbmNvZGVkQ29tbWFuZC5h
dXRvcmVsZWFzZSgpOworfQorCisrIChOU0RhdGEgKillbmNvZGVHZXRBc3NlcnRpb25Db21tYW5k
V2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiBvcHRpb25zOihfV0tQ
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMgKilvcHRpb25zIHVzZXJWZXJpZmljYXRp
b25BdmFpbGFiaWxpdHk6KF9XS1dlYkF1dGhlbnRpY2F0aW9uVXNlclZlcmlmaWNhdGlvbkF2YWls
YWJpbGl0eSl1c2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5Cit7CisgICAgUmV0YWluUHRyPE5T
RGF0YT4gZW5jb2RlZENvbW1hbmQ7CisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBhdXRvIGhh
c2ggPSBwcm9kdWNlQ2xpZW50RGF0YUpzb25IYXNoKGNsaWVudERhdGFKU09OKTsKKworICAgIGF1
dG8gZW5jb2RlZFZlY3RvciA9IGZpZG86OmVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1Io
aGFzaCwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVydFRvQ29yZVJlcXVlc3RPcHRp
b25zV2l0aE9wdGlvbnM6b3B0aW9uc10sIGNvcmVVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5
KHVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkpLCBzdGQ6Om51bGxvcHQpOworICAgIGVuY29k
ZWRDb21tYW5kID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczplbmNvZGVk
VmVjdG9yLmRhdGEoKSBsZW5ndGg6ZW5jb2RlZFZlY3Rvci5zaXplKCldKTsKKyNlbmRpZgorCisg
ICAgcmV0dXJuIGVuY29kZWRDb21tYW5kLmF1dG9yZWxlYXNlKCk7Cit9CisKIC0gKHZvaWQpc2V0
TW9ja0NvbmZpZ3VyYXRpb246KE5TRGljdGlvbmFyeSAqKWNvbmZpZ3VyYXRpb24KIHsKICNpZiBF
TkFCTEUoV0VCX0FVVEhOKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444027</attachid>
            <date>2021-11-11 17:13:54 -0800</date>
            <delta_ts>2021-11-11 17:20:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232977-20211111171353.patch</filename>
            <type>text/plain</type>
            <size>7352</size>
            <attacher name="Garrett Davidson">garrett_davidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiYWE4MzNlMTcwMDYwYmI1
MWM1NzI0ZmE5OTNiZmY4NzZmM2UyYjYuLjFiOGFjZWVhZTZlMWYxMTc2OGQ2NGQ4N2M1ZjhkMzIz
ZGRlMDM4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMTEtMTAgIEdhcnJldHQg
RGF2aWRzb24gIDxkYXZpZHNvbi5nYXJyZXR0bUBnbWFpbC5jb20+CisKKyAgICAgICAgX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbCBzaG91bGQgZXhwb3NlIGEgd2F5IHRvIGVuY29kZSBDVEFQIGNv
bW1hbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI5NzcKKyAgICAgICAgPHJkYXI6Ly84NTI3OTMyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgdGhlIGV4aXN0aW5nIENUQVAgY29tbWFu
ZCBlbmNvZGluZyB0aHJvdWdoIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuCisKKyAgICAgICAg
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKGNvcmVVc2VyVmVy
aWZpY2F0aW9uQXZhaWxhYmlsaXR5KToKKyAgICAgICAgKCtbX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCBnZXRDbGllbnREYXRhSlNPTkZvckF1dGhlbnRpY2F0aW9uVHlwZTpjaGFsbGVuZ2U6b3Jp
Z2luOl0pCisgICAgICAgICgrW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgZW5jb2RlTWFrZUNy
ZWRlbnRpYWxDb21tYW5kV2l0aENsaWVudERhdGFKU09OOm9wdGlvbnM6dXNlclZlcmlmaWNhdGlv
bkF2YWlsYWJpbGl0eTpdKToKKyAgICAgICAgKCtbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBl
bmNvZGVHZXRBc3NlcnRpb25Db21tYW5kV2l0aENsaWVudERhdGFKU09OOm9wdGlvbnM6dXNlclZl
cmlmaWNhdGlvbkF2YWlsYWJpbGl0eTpdKToKKwogMjAyMS0xMS0xMCAgUGVyIEFybmUgVm9sbGFu
IDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBCbG9jayBzYW5kYm94IGFjY2VzcyB0byBj
b25zdW1lIG1hY2ggZXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKaW5kZXggOTg1
NDBmZWY4NDZkNmE5YjJiMmEzYmIwNWQwZDEzNmUyYmFjOWIwNS4uZDJhNTkxN2YyZDkwM2ZiMTNl
NmVhMzVjMDRhMTQzMmEyZDBhZjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCkBAIC04
MCw2ICs4MCwxMiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNh
dGlvblNvdXJjZSkgewogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uU291cmNlRXh0ZXJuYWwsCiB9
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiAKK3R5cGVkZWYgTlNf
RU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0aW9uVXNlclZlcmlmaWNhdGlvbkF2YWls
YWJpbGl0eSkgeworICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uVXNlclZlcmlmaWNhdGlvbkF2YWls
YWJpbGl0eVN1cHBvcnRlZEFuZENvbmZpZ3VyZWQsCisgICAgX1dLV2ViQXV0aGVudGljYXRpb25V
c2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5U3VwcG9ydGVkQnV0Tm90Q29uZmlndXJlZCwKKyAg
ICBfV0tXZWJBdXRoZW50aWNhdGlvblVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHlOb3RTdXBw
b3J0ZWQsCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CisKIFdLX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBfV0tMb2NhbEF1dGhl
bnRpY2F0b3JDcmVkZW50aWFsTmFtZUtleTsKIFdLX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcgKiBj
b25zdCBfV0tMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsSURLZXk7CiBXS19FWFBPUlQgZXh0
ZXJuIE5TU3RyaW5nICogY29uc3QgX1dLTG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbFJlbHlp
bmdQYXJ0eUlES2V5OwpAQCAtMTEyLDYgKzExOCwxMCBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFj
b3MoMTAuMTUuNCksIGlvcygxMy40KSkKIAogKyAoQk9PTClpc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9z
KDE1LjApKTsKIAorKyAoTlNEYXRhICopZ2V0Q2xpZW50RGF0YUpTT05Gb3JBdXRoZW50aWNhdGlv
blR5cGU6KF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSl0eXBlIGNoYWxsZW5nZTooTlNEYXRhICop
Y2hhbGxlbmdlIG9yaWdpbjooTlNTdHJpbmcgKilvcmlnaW4gV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKysgKE5TRGF0YSAqKWVuY29kZU1ha2VD
cmVkZW50aWFsQ29tbWFuZFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpT
T04gb3B0aW9uczooX1dLUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyAqKW9wdGlv
bnMgdXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTooX1dLV2ViQXV0aGVudGljYXRpb25Vc2Vy
VmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5KXVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKysgKE5T
RGF0YSAqKWVuY29kZUdldEFzc2VydGlvbkNvbW1hbmRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0
YSAqKWNsaWVudERhdGFKU09OIG9wdGlvbnM6KF9XS1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucyAqKW9wdGlvbnMgdXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTooX1dLV2ViQXV0
aGVudGljYXRpb25Vc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5KXVzZXJWZXJpZmljYXRpb25B
dmFpbGFiaWxpdHkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKwogLSAoaW5zdGFuY2V0eXBlKWluaXQ7CiAKIC8vIEZJWE1FOiA8cmRhcjovL3By
b2JsZW0vNzE1MDk0ODU+IEFkZHMgZGV0YWlsZWQgTlNFcnJvci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW0KaW5kZXggNTc1OGZiN2QwNGZiZmRhZjNhYjljZjU1YTA4NzAzNzVhODA4NjFjNy4u
MGIzYmFmNzEwZGQwMjMyZmRhYTBiMWM0ZDJmZTA0NmM2OTc3YTE0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0KQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVu
dGljYXRvclJlc3BvbnNlRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DQk9SUmVhZGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0NCT1JXcml0ZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlUmVx
dWVzdENvbnZlcnRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaWRvQ29uc3RhbnRzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KICNpbXBv
cnQgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgpAQCAtMTky
LDYgKzE5MywyMSBAQCBzdGF0aWMgX1dLV2ViQXV0aGVudGljYXRpb25UeXBlIHdrV2ViQXV0aGVu
dGljYXRpb25UeXBlKFdlYkNvcmU6OkNsaWVudERhdGFUeXBlCiAgICAgfQogfQogCitzdGF0aWMg
Zmlkbzo6QXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFp
bGFiaWxpdHkgY29yZVVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoX1dLV2ViQXV0aGVudGlj
YXRpb25Vc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5IHdrQXZhaWxhYmlsaXR5KQoreworICAg
IHN3aXRjaCAod2tBdmFpbGFiaWxpdHkpIHsKKyAgICBjYXNlIF9XS1dlYkF1dGhlbnRpY2F0aW9u
VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eVN1cHBvcnRlZEFuZENvbmZpZ3VyZWQ6CisgICAg
ICAgIHJldHVybiBmaWRvOjpBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNlclZlcmlm
aWNhdGlvbkF2YWlsYWJpbGl0eTo6a1N1cHBvcnRlZEFuZENvbmZpZ3VyZWQ7CisgICAgY2FzZSBf
V0tXZWJBdXRoZW50aWNhdGlvblVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHlTdXBwb3J0ZWRC
dXROb3RDb25maWd1cmVkOgorICAgICAgICByZXR1cm4gZmlkbzo6QXV0aGVudGljYXRvclN1cHBv
cnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRCdXRO
b3RDb25maWd1cmVkOworICAgIGNhc2UgX1dLV2ViQXV0aGVudGljYXRpb25Vc2VyVmVyaWZpY2F0
aW9uQXZhaWxhYmlsaXR5Tm90U3VwcG9ydGVkOgorICAgICAgICByZXR1cm4gZmlkbzo6QXV0aGVu
dGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6OmtO
b3RTdXBwb3J0ZWQ7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZpZG86OkF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9u
QXZhaWxhYmlsaXR5OjprTm90U3VwcG9ydGVkOworfQorCiAtIChfV0tXZWJBdXRoZW50aWNhdGlv
blR5cGUpdHlwZQogewogICAgIHJldHVybiB3a1dlYkF1dGhlbnRpY2F0aW9uVHlwZShfcGFuZWwt
PmNsaWVudERhdGFUeXBlKCkpOwpAQCAtNjIxLDYgKzYzNyw0MyBAQCBzdGF0aWMgUmV0YWluUHRy
PF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcAogI2VuZGlmCiB9CiAKKysgKE5TRGF0YSAqKWdldENsaWVudERhdGFKU09ORm9yQXV0
aGVudGljYXRpb25UeXBlOihfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpdHlwZSBjaGFsbGVuZ2U6
KE5TRGF0YSAqKWNoYWxsZW5nZSBvcmlnaW46KE5TU3RyaW5nICopb3JpZ2luCit7CisgICAgUmV0
YWluUHRyPE5TRGF0YT4gY2xpZW50RGF0YUpTT047CisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQor
ICAgIGNsaWVudERhdGFKU09OID0gcHJvZHVjZUNsaWVudERhdGFKc29uKHR5cGUsIGNoYWxsZW5n
ZSwgb3JpZ2luKS5hdXRvcmVsZWFzZSgpOworI2VuZGlmCisKKyAgICByZXR1cm4gY2xpZW50RGF0
YUpTT04uYXV0b3JlbGVhc2UoKTsKK30KKworKyAoTlNEYXRhICopZW5jb2RlTWFrZUNyZWRlbnRp
YWxDb21tYW5kV2l0aENsaWVudERhdGFKU09OOihOU0RhdGEgKiljbGllbnREYXRhSlNPTiBvcHRp
b25zOihfV0tQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zICopb3B0aW9ucyB1c2Vy
VmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5OihfV0tXZWJBdXRoZW50aWNhdGlvblVzZXJWZXJpZmlj
YXRpb25BdmFpbGFiaWxpdHkpdXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eQoreworICAgIFJl
dGFpblB0cjxOU0RhdGE+IGVuY29kZWRDb21tYW5kOworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisg
ICAgYXV0byBoYXNoID0gcHJvZHVjZUNsaWVudERhdGFKc29uSGFzaChjbGllbnREYXRhSlNPTik7
CisKKyAgICBhdXRvIGVuY29kZWRWZWN0b3IgPSBmaWRvOjplbmNvZGVNYWtlQ3JlZGVuaXRhbFJl
cXVlc3RBc0NCT1IoaGFzaCwgW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVydFRvQ29y
ZUNyZWF0aW9uT3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBjb3JlVXNlclZlcmlmaWNhdGlv
bkF2YWlsYWJpbGl0eSh1c2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5KSwgc3RkOjpudWxsb3B0
KTsKKyAgICBlbmNvZGVkQ29tbWFuZCA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRo
Qnl0ZXM6ZW5jb2RlZFZlY3Rvci5kYXRhKCkgbGVuZ3RoOmVuY29kZWRWZWN0b3Iuc2l6ZSgpXSk7
CisjZW5kaWYKKworICAgIHJldHVybiBlbmNvZGVkQ29tbWFuZC5hdXRvcmVsZWFzZSgpOworfQor
CisrIChOU0RhdGEgKillbmNvZGVHZXRBc3NlcnRpb25Db21tYW5kV2l0aENsaWVudERhdGFKU09O
OihOU0RhdGEgKiljbGllbnREYXRhSlNPTiBvcHRpb25zOihfV0tQdWJsaWNLZXlDcmVkZW50aWFs
UmVxdWVzdE9wdGlvbnMgKilvcHRpb25zIHVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6KF9X
S1dlYkF1dGhlbnRpY2F0aW9uVXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSl1c2VyVmVyaWZp
Y2F0aW9uQXZhaWxhYmlsaXR5Cit7CisgICAgUmV0YWluUHRyPE5TRGF0YT4gZW5jb2RlZENvbW1h
bmQ7CisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBhdXRvIGhhc2ggPSBwcm9kdWNlQ2xpZW50
RGF0YUpzb25IYXNoKGNsaWVudERhdGFKU09OKTsKKworICAgIGF1dG8gZW5jb2RlZFZlY3RvciA9
IGZpZG86OmVuY29kZUdldEFzc2VydGlvblJlcXVlc3RBc0NCT1IoaGFzaCwgW19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwgY29udmVydFRvQ29yZVJlcXVlc3RPcHRpb25zV2l0aE9wdGlvbnM6b3B0
aW9uc10sIGNvcmVVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5KHVzZXJWZXJpZmljYXRpb25B
dmFpbGFiaWxpdHkpLCBzdGQ6Om51bGxvcHQpOworICAgIGVuY29kZWRDb21tYW5kID0gYWRvcHRO
UyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczplbmNvZGVkVmVjdG9yLmRhdGEoKSBsZW5n
dGg6ZW5jb2RlZFZlY3Rvci5zaXplKCldKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGVuY29kZWRD
b21tYW5kLmF1dG9yZWxlYXNlKCk7Cit9CisKIC0gKHZvaWQpc2V0TW9ja0NvbmZpZ3VyYXRpb246
KE5TRGljdGlvbmFyeSAqKWNvbmZpZ3VyYXRpb24KIHsKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444029</attachid>
            <date>2021-11-11 17:20:32 -0800</date>
            <delta_ts>2021-11-12 16:55:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232977-20211111172032.patch</filename>
            <type>text/plain</type>
            <size>7338</size>
            <attacher name="Garrett Davidson">garrett_davidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NjE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNiYWE4MzNlMTcwMDYwYmI1
MWM1NzI0ZmE5OTNiZmY4NzZmM2UyYjYuLjFiOGFjZWVhZTZlMWYxMTc2OGQ2NGQ4N2M1ZjhkMzIz
ZGRlMDM4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjEtMTEtMTAgIEdhcnJldHQg
RGF2aWRzb24gIDxkYXZpZHNvbi5nYXJyZXR0bUBnbWFpbC5jb20+CisKKyAgICAgICAgX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbCBzaG91bGQgZXhwb3NlIGEgd2F5IHRvIGVuY29kZSBDVEFQIGNv
bW1hbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzI5NzcKKyAgICAgICAgPHJkYXI6Ly84NTI3OTMyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgdGhlIGV4aXN0aW5nIENUQVAgY29tbWFu
ZCBlbmNvZGluZyB0aHJvdWdoIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuCisKKyAgICAgICAg
Q292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKGNvcmVVc2VyVmVy
aWZpY2F0aW9uQXZhaWxhYmlsaXR5KToKKyAgICAgICAgKCtbX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCBnZXRDbGllbnREYXRhSlNPTkZvckF1dGhlbnRpY2F0aW9uVHlwZTpjaGFsbGVuZ2U6b3Jp
Z2luOl0pCisgICAgICAgICgrW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgZW5jb2RlTWFrZUNy
ZWRlbnRpYWxDb21tYW5kV2l0aENsaWVudERhdGFKU09OOm9wdGlvbnM6dXNlclZlcmlmaWNhdGlv
bkF2YWlsYWJpbGl0eTpdKToKKyAgICAgICAgKCtbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBl
bmNvZGVHZXRBc3NlcnRpb25Db21tYW5kV2l0aENsaWVudERhdGFKU09OOm9wdGlvbnM6dXNlclZl
cmlmaWNhdGlvbkF2YWlsYWJpbGl0eTpdKToKKwogMjAyMS0xMS0xMCAgUGVyIEFybmUgVm9sbGFu
IDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBCbG9jayBzYW5kYm94IGFjY2VzcyB0byBj
b25zdW1lIG1hY2ggZXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKaW5kZXggOTg1
NDBmZWY4NDZkNmE5YjJiMmEzYmIwNWQwZDEzNmUyYmFjOWIwNS4uZDJhNTkxN2YyZDkwM2ZiMTNl
NmVhMzVjMDRhMTQzMmEyZDBhZjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCkBAIC04
MCw2ICs4MCwxMiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJBdXRoZW50aWNh
dGlvblNvdXJjZSkgewogICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uU291cmNlRXh0ZXJuYWwsCiB9
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CiAKK3R5cGVkZWYgTlNf
RU5VTShOU0ludGVnZXIsIF9XS1dlYkF1dGhlbnRpY2F0aW9uVXNlclZlcmlmaWNhdGlvbkF2YWls
YWJpbGl0eSkgeworICAgIF9XS1dlYkF1dGhlbnRpY2F0aW9uVXNlclZlcmlmaWNhdGlvbkF2YWls
YWJpbGl0eVN1cHBvcnRlZEFuZENvbmZpZ3VyZWQsCisgICAgX1dLV2ViQXV0aGVudGljYXRpb25V
c2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5U3VwcG9ydGVkQnV0Tm90Q29uZmlndXJlZCwKKyAg
ICBfV0tXZWJBdXRoZW50aWNhdGlvblVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHlOb3RTdXBw
b3J0ZWQsCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CisKIFdLX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBfV0tMb2NhbEF1dGhl
bnRpY2F0b3JDcmVkZW50aWFsTmFtZUtleTsKIFdLX0VYUE9SVCBleHRlcm4gTlNTdHJpbmcgKiBj
b25zdCBfV0tMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsSURLZXk7CiBXS19FWFBPUlQgZXh0
ZXJuIE5TU3RyaW5nICogY29uc3QgX1dLTG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbFJlbHlp
bmdQYXJ0eUlES2V5OwpAQCAtMTEyLDYgKzExOCwxMCBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFj
b3MoMTAuMTUuNCksIGlvcygxMy40KSkKIAogKyAoQk9PTClpc1VzZXJWZXJpZnlpbmdQbGF0Zm9y
bUF1dGhlbnRpY2F0b3JBdmFpbGFibGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9z
KDE1LjApKTsKIAorKyAoTlNEYXRhICopZ2V0Q2xpZW50RGF0YUpTT05Gb3JBdXRoZW50aWNhdGlv
blR5cGU6KF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSl0eXBlIGNoYWxsZW5nZTooTlNEYXRhICop
Y2hhbGxlbmdlIG9yaWdpbjooTlNTdHJpbmcgKilvcmlnaW4gV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKysgKE5TRGF0YSAqKWVuY29kZU1ha2VD
cmVkZW50aWFsQ29tbWFuZFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpT
T04gb3B0aW9uczooX1dLUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyAqKW9wdGlv
bnMgdXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTooX1dLV2ViQXV0aGVudGljYXRpb25Vc2Vy
VmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5KXVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKysgKE5T
RGF0YSAqKWVuY29kZUdldEFzc2VydGlvbkNvbW1hbmRXaXRoQ2xpZW50RGF0YUpTT046KE5TRGF0
YSAqKWNsaWVudERhdGFKU09OIG9wdGlvbnM6KF9XS1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0
T3B0aW9ucyAqKW9wdGlvbnMgdXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eTooX1dLV2ViQXV0
aGVudGljYXRpb25Vc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5KXVzZXJWZXJpZmljYXRpb25B
dmFpbGFiaWxpdHkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKwogLSAoaW5zdGFuY2V0eXBlKWluaXQ7CiAKIC8vIEZJWE1FOiA8cmRhcjovL3By
b2JsZW0vNzE1MDk0ODU+IEFkZHMgZGV0YWlsZWQgTlNFcnJvci4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW0KaW5kZXggNTc1OGZiN2QwNGZiZmRhZjNhYjljZjU1YTA4NzAzNzVhODA4NjFjNy4u
MDE5NDU1YzBiYWY0NGM1MjM0ZWIyZjY5MThiMDI0ZTU5MmQwNWRlZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0KQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVu
dGljYXRvclJlc3BvbnNlRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DQk9SUmVhZGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0NCT1JXcml0ZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRGV2aWNlUmVx
dWVzdENvbnZlcnRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GaWRvQ29uc3RhbnRzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaD4KICNpbXBv
cnQgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oPgpAQCAtMTky
LDYgKzE5MywyMSBAQCBzdGF0aWMgX1dLV2ViQXV0aGVudGljYXRpb25UeXBlIHdrV2ViQXV0aGVu
dGljYXRpb25UeXBlKFdlYkNvcmU6OkNsaWVudERhdGFUeXBlCiAgICAgfQogfQogCitzdGF0aWMg
Zmlkbzo6QXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFp
bGFiaWxpdHkgY29yZVVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkoX1dLV2ViQXV0aGVudGlj
YXRpb25Vc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5IHdrQXZhaWxhYmlsaXR5KQoreworICAg
IHN3aXRjaCAod2tBdmFpbGFiaWxpdHkpIHsKKyAgICBjYXNlIF9XS1dlYkF1dGhlbnRpY2F0aW9u
VXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eVN1cHBvcnRlZEFuZENvbmZpZ3VyZWQ6CisgICAg
ICAgIHJldHVybiBmaWRvOjpBdXRoZW50aWNhdG9yU3VwcG9ydGVkT3B0aW9uczo6VXNlclZlcmlm
aWNhdGlvbkF2YWlsYWJpbGl0eTo6a1N1cHBvcnRlZEFuZENvbmZpZ3VyZWQ7CisgICAgY2FzZSBf
V0tXZWJBdXRoZW50aWNhdGlvblVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHlTdXBwb3J0ZWRC
dXROb3RDb25maWd1cmVkOgorICAgICAgICByZXR1cm4gZmlkbzo6QXV0aGVudGljYXRvclN1cHBv
cnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRCdXRO
b3RDb25maWd1cmVkOworICAgIGNhc2UgX1dLV2ViQXV0aGVudGljYXRpb25Vc2VyVmVyaWZpY2F0
aW9uQXZhaWxhYmlsaXR5Tm90U3VwcG9ydGVkOgorICAgICAgICByZXR1cm4gZmlkbzo6QXV0aGVu
dGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6OmtO
b3RTdXBwb3J0ZWQ7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIGZpZG86OkF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9u
QXZhaWxhYmlsaXR5OjprTm90U3VwcG9ydGVkOworfQorCiAtIChfV0tXZWJBdXRoZW50aWNhdGlv
blR5cGUpdHlwZQogewogICAgIHJldHVybiB3a1dlYkF1dGhlbnRpY2F0aW9uVHlwZShfcGFuZWwt
PmNsaWVudERhdGFUeXBlKCkpOwpAQCAtNjIxLDYgKzYzNyw0MyBAQCBzdGF0aWMgUmV0YWluUHRy
PF9XS0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gd2tBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcAogI2VuZGlmCiB9CiAKKysgKE5TRGF0YSAqKWdldENsaWVudERhdGFKU09ORm9yQXV0
aGVudGljYXRpb25UeXBlOihfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpdHlwZSBjaGFsbGVuZ2U6
KE5TRGF0YSAqKWNoYWxsZW5nZSBvcmlnaW46KE5TU3RyaW5nICopb3JpZ2luCit7CisgICAgUmV0
YWluUHRyPE5TRGF0YT4gY2xpZW50RGF0YUpTT047CisKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQor
ICAgIGNsaWVudERhdGFKU09OID0gcHJvZHVjZUNsaWVudERhdGFKc29uKHR5cGUsIGNoYWxsZW5n
ZSwgb3JpZ2luKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGNsaWVudERhdGFKU09OLmF1dG9yZWxl
YXNlKCk7Cit9CisKKysgKE5TRGF0YSAqKWVuY29kZU1ha2VDcmVkZW50aWFsQ29tbWFuZFdpdGhD
bGllbnREYXRhSlNPTjooTlNEYXRhICopY2xpZW50RGF0YUpTT04gb3B0aW9uczooX1dLUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyAqKW9wdGlvbnMgdXNlclZlcmlmaWNhdGlvbkF2
YWlsYWJpbGl0eTooX1dLV2ViQXV0aGVudGljYXRpb25Vc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmls
aXR5KXVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkKK3sKKyAgICBSZXRhaW5QdHI8TlNEYXRh
PiBlbmNvZGVkQ29tbWFuZDsKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIGF1dG8gaGFzaCA9
IHByb2R1Y2VDbGllbnREYXRhSnNvbkhhc2goY2xpZW50RGF0YUpTT04pOworCisgICAgYXV0byBl
bmNvZGVkVmVjdG9yID0gZmlkbzo6ZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGhh
c2gsIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGNvbnZlcnRUb0NvcmVDcmVhdGlvbk9wdGlv
bnNXaXRoT3B0aW9uczpvcHRpb25zXSwgY29yZVVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHko
dXNlclZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSksIHN0ZDo6bnVsbG9wdCk7CisgICAgZW5jb2Rl
ZENvbW1hbmQgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmVuY29kZWRW
ZWN0b3IuZGF0YSgpIGxlbmd0aDplbmNvZGVkVmVjdG9yLnNpemUoKV0pOworI2VuZGlmCisKKyAg
ICByZXR1cm4gZW5jb2RlZENvbW1hbmQuYXV0b3JlbGVhc2UoKTsKK30KKworKyAoTlNEYXRhICop
ZW5jb2RlR2V0QXNzZXJ0aW9uQ29tbWFuZFdpdGhDbGllbnREYXRhSlNPTjooTlNEYXRhICopY2xp
ZW50RGF0YUpTT04gb3B0aW9uczooX1dLUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25z
ICopb3B0aW9ucyB1c2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5OihfV0tXZWJBdXRoZW50aWNh
dGlvblVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHkpdXNlclZlcmlmaWNhdGlvbkF2YWlsYWJp
bGl0eQoreworICAgIFJldGFpblB0cjxOU0RhdGE+IGVuY29kZWRDb21tYW5kOworI2lmIEVOQUJM
RShXRUJfQVVUSE4pCisgICAgYXV0byBoYXNoID0gcHJvZHVjZUNsaWVudERhdGFKc29uSGFzaChj
bGllbnREYXRhSlNPTik7CisKKyAgICBhdXRvIGVuY29kZWRWZWN0b3IgPSBmaWRvOjplbmNvZGVH
ZXRBc3NlcnRpb25SZXF1ZXN0QXNDQk9SKGhhc2gsIFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
IGNvbnZlcnRUb0NvcmVSZXF1ZXN0T3B0aW9uc1dpdGhPcHRpb25zOm9wdGlvbnNdLCBjb3JlVXNl
clZlcmlmaWNhdGlvbkF2YWlsYWJpbGl0eSh1c2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5KSwg
c3RkOjpudWxsb3B0KTsKKyAgICBlbmNvZGVkQ29tbWFuZCA9IGFkb3B0TlMoW1tOU0RhdGEgYWxs
b2NdIGluaXRXaXRoQnl0ZXM6ZW5jb2RlZFZlY3Rvci5kYXRhKCkgbGVuZ3RoOmVuY29kZWRWZWN0
b3Iuc2l6ZSgpXSk7CisjZW5kaWYKKworICAgIHJldHVybiBlbmNvZGVkQ29tbWFuZC5hdXRvcmVs
ZWFzZSgpOworfQorCiAtICh2b2lkKXNldE1vY2tDb25maWd1cmF0aW9uOihOU0RpY3Rpb25hcnkg
Kiljb25maWd1cmF0aW9uCiB7CiAjaWYgRU5BQkxFKFdFQl9BVVRITikK
</data>

          </attachment>
      

    </bug>

</bugzilla>