<?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>219711</bug_id>
          
          <creation_ts>2020-12-09 14:59:17 -0800</creation_ts>
          <short_desc>[WebAuthn] Adopt new UI for the Security Key getAssertion flow</short_desc>
          <delta_ts>2020-12-11 18:03:58 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1713318</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-09 14:59:17 -0800</bug_when>
    <thetext>Adopt new UI for the Security Key getAssertion flow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713319</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-09 14:59:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/72154840&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714018</commentid>
    <comment_count>2</comment_count>
      <attachid>416026</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-11 12:00:43 -0800</bug_when>
    <thetext>Created attachment 416026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714048</commentid>
    <comment_count>3</comment_count>
      <attachid>416034</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-11 12:43:49 -0800</bug_when>
    <thetext>Created attachment 416034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714059</commentid>
    <comment_count>4</comment_count>
      <attachid>416034</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-12-11 12:59:54 -0800</bug_when>
    <thetext>Comment on attachment 416034
Patch

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

I don&apos;t think this is quite right. I think the m_credentials store should hold the adopted NS object smart pointers to avoid UAF.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.h:81
&gt; +    HashMap&lt;ASCLoginChoiceProtocol *, WebCore::AuthenticatorAssertionResponse*&gt; m_credentials;

I don&apos;t like raw pointers. Are we sure these are being cleaned up properly and deallocated?

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:111
&gt; +            m_credentials.add((ASCLoginChoiceProtocol *)loginChoice.get(), response.ptr());

I think this would be safer if m_credentals held the adopted NS object. Right now you are relying on the &apos;loginChoices&apos; array retaining the object, but that might not always hold.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:114
&gt; +        [m_presenter updateInterfaceWithLoginChoices:loginChoices.get()];

Once we reach here, loginChoices will dealloc on return,. That means m_credentials will hold pointers to dealloc&apos;d objects. I don&apos;t think we want to do this,

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:152
&gt; +    auto* response = m_credentials.take(loginChoice);

I think this will retrieve a deallocated object in some cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714063</commentid>
    <comment_count>5</comment_count>
      <attachid>416034</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-11 13:08:29 -0800</bug_when>
    <thetext>Comment on attachment 416034
Patch

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

Thanks Brent for reviewing this patch.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.h:81
&gt;&gt; +    HashMap&lt;ASCLoginChoiceProtocol *, WebCore::AuthenticatorAssertionResponse*&gt; m_credentials;
&gt; 
&gt; I don&apos;t like raw pointers. Are we sure these are being cleaned up properly and deallocated?

These are just pointers for indexing. There is no need to access the objects of the pointers or holding the objects alive.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:111
&gt;&gt; +            m_credentials.add((ASCLoginChoiceProtocol *)loginChoice.get(), response.ptr());
&gt; 
&gt; I think this would be safer if m_credentals held the adopted NS object. Right now you are relying on the &apos;loginChoices&apos; array retaining the object, but that might not always hold.

No, I don&apos;t need to hold the login choices. Those are &quot;moved&quot; to the UI. I just need a way to remember the mapping such that I can know which response the selected login choice is corresponding to.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:114
&gt;&gt; +        [m_presenter updateInterfaceWithLoginChoices:loginChoices.get()];
&gt; 
&gt; Once we reach here, loginChoices will dealloc on return,. That means m_credentials will hold pointers to dealloc&apos;d objects. I don&apos;t think we want to do this,

I think the presenter should retain the array. It is going to need that in its lifetime as the presenter will return which login choice the user selected back to us.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:152
&gt;&gt; +    auto* response = m_credentials.take(loginChoice);
&gt; 
&gt; I think this will retrieve a deallocated object in some cases.

All I need is just the pointer. I don&apos;t need the object. The response objects are kept alive in the authenticators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714107</commentid>
    <comment_count>6</comment_count>
      <attachid>416034</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-12-11 15:18:06 -0800</bug_when>
    <thetext>Comment on attachment 416034
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.h:81
&gt;&gt;&gt; +    HashMap&lt;ASCLoginChoiceProtocol *, WebCore::AuthenticatorAssertionResponse*&gt; m_credentials;
&gt;&gt; 
&gt;&gt; I don&apos;t like raw pointers. Are we sure these are being cleaned up properly and deallocated?
&gt; 
&gt; These are just pointers for indexing. There is no need to access the objects of the pointers or holding the objects alive.

It might avoid confusion in the future if we made these uint64_t or something. This structure looks like a mapping of two types of ObjC objects, and someone might try to pull one and use it for something.

&gt;&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:152
&gt;&gt;&gt; +    auto* response = m_credentials.take(loginChoice);
&gt;&gt; 
&gt;&gt; I think this will retrieve a deallocated object in some cases.
&gt; 
&gt; All I need is just the pointer. I don&apos;t need the object. The response objects are kept alive in the authenticators.

If &apos;response&apos; is being passed to m_reesponseHandler as an opaque key, I would suggest you make it a uint64_t (or something) so that someone doesn&apos;t try to use this code in the future in a way that could trigger UAF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714129</commentid>
    <comment_count>7</comment_count>
      <attachid>416034</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-11 15:44:16 -0800</bug_when>
    <thetext>Comment on attachment 416034
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.h:81
&gt;&gt;&gt;&gt; +    HashMap&lt;ASCLoginChoiceProtocol *, WebCore::AuthenticatorAssertionResponse*&gt; m_credentials;
&gt;&gt;&gt; 
&gt;&gt;&gt; I don&apos;t like raw pointers. Are we sure these are being cleaned up properly and deallocated?
&gt;&gt; 
&gt;&gt; These are just pointers for indexing. There is no need to access the objects of the pointers or holding the objects alive.
&gt; 
&gt; It might avoid confusion in the future if we made these uint64_t or something. This structure looks like a mapping of two types of ObjC objects, and someone might try to pull one and use it for something.

I have changed WebCore::AuthenticatorAssertionResponse* to a RefPtr.

&gt;&gt;&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/AuthenticatorPresenterCoordinator.mm:152
&gt;&gt;&gt;&gt; +    auto* response = m_credentials.take(loginChoice);
&gt;&gt;&gt; 
&gt;&gt;&gt; I think this will retrieve a deallocated object in some cases.
&gt;&gt; 
&gt;&gt; All I need is just the pointer. I don&apos;t need the object. The response objects are kept alive in the authenticators.
&gt; 
&gt; If &apos;response&apos; is being passed to m_reesponseHandler as an opaque key, I would suggest you make it a uint64_t (or something) so that someone doesn&apos;t try to use this code in the future in a way that could trigger UAF.

Got you. Maybe we can fix this issue later. The interface of m_responseHandler is defined a while ago, not by this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714133</commentid>
    <comment_count>8</comment_count>
      <attachid>416059</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-11 15:46:21 -0800</bug_when>
    <thetext>Created attachment 416059
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714180</commentid>
    <comment_count>9</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-11 16:59:47 -0800</bug_when>
    <thetext>A build fix:
Committed r270721: &lt;https://trac.webkit.org/changeset/270721&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714189</commentid>
    <comment_count>10</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-11 17:07:13 -0800</bug_when>
    <thetext>Wrongly close it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714203</commentid>
    <comment_count>11</comment_count>
      <attachid>416059</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-12-11 17:55:46 -0800</bug_when>
    <thetext>Comment on attachment 416059
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714204</commentid>
    <comment_count>12</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-12-11 18:03:58 -0800</bug_when>
    <thetext>Committed r270724: &lt;https://trac.webkit.org/changeset/270724&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416026</attachid>
            <date>2020-12-11 12:00:43 -0800</date>
            <delta_ts>2020-12-11 12:43:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219711-20201211120042.patch</filename>
            <type>text/plain</type>
            <size>11000</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEzN2M2NDBhYTc4ZDI2MWI1
NTY5OTYzYWIxZWI1ZjhiMDU3M2UyZGEuLmU3OGUwMjU0OTFhOWM1MzMxMWUzZmQ4MWM0MTZhOTk4
MzNlN2UyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMTItMTEgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFkb3B0IG5l
dyBVSSBmb3IgdGhlIFNlY3VyaXR5IEtleSBnZXRBc3NlcnRpb24gZmxvdworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NzExCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83MjE1NDg0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkb3B0cyB0aGUgbmV3IFVJIGZvciB0aGUgc2VjdXJp
dHkga2V5IGdldEFzc2VydGlvbiBmbG93IHdoaWNoIGNvbnRhaW5zIHR3byBwYXJ0OgorICAgICAg
ICAxLiBzaG93aW5nIGEgaW5mb3JtYXRpdmUgVUkgdG8gYXNrIHRoZSB1c2VyIHRvIGNvbm5lY3Qg
dGhlaXIgc2VjdXJpdHkga2V5cywKKyAgICAgICAgMi4gc2hvd2luZyBhbiBhY2NvdW50IHBpY2tl
ciBmb3IgdXNlcnMgdG8gc2VsZWN0IGEgY3JlZGVudGlhbCB0byB1c2UuCisKKyAgICAgICAgQ292
ZXJlZCBieSBtYW51YWwgdGVzdHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvQ29jb2EvQXV0
aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaDoKKyAgICAgICAgUGFwZXJ3b3JrLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQcmVz
ZW50ZXJDb29yZGluYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW06CisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6QXV0aGVudGljYXRvclBy
ZXNlbnRlckNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclByZXNl
bnRlckNvb3JkaW5hdG9yOjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJL
aXQ6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6ZGlkU2VsZWN0QXNzZXJ0aW9u
UmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
S0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV0tBU0NB
dXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUgYXV0aG9yaXphdGlvblByZXNlbnRlcjpjcmVk
ZW50aWFsUmVxdWVzdGVkRm9yTG9naW5DaG9pY2U6YXV0aGVudGljYXRlZENvbnRleHQ6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgIEltcGxlbWVudHMgdGhlIHR3byBmbG93cy4KKwogMjAy
MC0xMi0xMCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWJBdXRobl0gQWRvcHQgbmV3IFVJIGZvciB0aGUgUGxhdGZvcm0gQXV0aGVudGljYXRvciBtYWtl
Q3JlZGVudGlhbCBmbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9D
b2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaAppbmRleCA3ZmNk
ZGQ3MWM1YzIwMjdlYjA3MGZkOThkOTU5NWU1Yzc3NWQ1NzcyLi4xNTFhZWFiNjQ2N2EzOTIyMDZm
Mzk3YzBjZjdlOWQxNDlmNGFlMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgK
QEAgLTg5LDcgKzg5LDcgQEAgZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgQVNDQXV0aG9yaXphdGlv
blByZXNlbnRhdGlvbkNvbnRleHREYXRhS2V5OwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHksIGNvcHkpIE5TU3RyaW5nICphcHBJZGVudGlmaWVyOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PGlkPEFTQ0xvZ2luQ2hvaWNlUHJvdG9jb2w+PiAq
bG9naW5DaG9pY2VzOwotQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1N0
cmluZyAqcmVseWluZ1BhcnR5SWRlbnRpZmllcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxs
YWJsZSwgY29weSkgTlNTdHJpbmcgKnNlcnZpY2VOYW1lOwogCiBAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgTlNTdHJpbmcgKnByb3hpZWRBcHBOYW1lOwogQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKnByb3hpZWRBc3NvY2lhdGVkRG9tYWluczsKQEAg
LTEwMiwxNSArMTAyLDIyIEBAIGV4dGVybiBOU1N0cmluZyAqIGNvbnN0IEFTQ0F1dGhvcml6YXRp
b25QcmVzZW50YXRpb25Db250ZXh0RGF0YUtleTsKIAogQGVuZAogCit0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxMb2dpbkNob2ljZUtp
bmQpIHsKKyAgICBBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxMb2dpbkNob2ljZUtp
bmRSZWdpc3RyYXRpb24sCisgICAgQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsTG9n
aW5DaG9pY2VLaW5kQXNzZXJ0aW9uLAorICAgIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVu
dGlhbExvZ2luQ2hvaWNlS2luZEFzc2VydGlvblBsYWNlaG9sZGVyLAorfTsKKwogQGludGVyZmFj
ZSBBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxMb2dpbkNob2ljZSA6IE5TT2JqZWN0
IDxBU0NMb2dpbkNob2ljZVByb3RvY29sPgogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFJlZ2lzdHJh
dGlvbkNob2ljZTsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFt
ZSBkaXNwbGF5TmFtZTooTlNTdHJpbmcgKilkaXNwbGF5TmFtZSB1c2VySGFuZGxlOihOU0RhdGEg
Kil1c2VySGFuZGxlOworLSAoaW5zdGFuY2V0eXBlKWluaXRBc3NlcnRpb25QbGFjZWhvbGRlckNo
b2ljZTsKIAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAq
bmFtZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmRp
c3BsYXlOYW1lOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEg
KnVzZXJIYW5kbGU7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgaXNSZWdp
c3RyYXRpb25SZXF1ZXN0OworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCByZWFkb25s
eSwgY29weSkgTlNTdHJpbmcgKm5hbWU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUs
IHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqZGlzcGxheU5hbWU7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgbnVsbGFibGUsIHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEgKnVzZXJIYW5kbGU7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVu
dGlhbExvZ2luQ2hvaWNlS2luZCBsb2dpbkNob2ljZUtpbmQ7CiAKICsgKGluc3RhbmNldHlwZSlu
ZXcgTlNfVU5BVkFJTEFCTEU7CiAtIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0F1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNv
b3JkaW5hdG9yLmgKaW5kZXggY2MzMTg0N2Y4OTNjNTQ0YjI2M2QyMmNhYzVjODYxMzI5ZjRkZjJk
Yi4uZjA1NmIwMjg2NzY0MmQ0YmNkYTJmNzkxMTU3YjU0MDdkOGRlZTliNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGlj
YXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9y
LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBPQkpDX0NM
QVNTIEFTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXI7CitPQkpDX0NMQVNTIEFTQ0xvZ2luQ2hvaWNl
UHJvdG9jb2w7CiBPQkpDX0NMQVNTIExBQ29udGV4dDsKIE9CSkNfQ0xBU1MgV0tBU0NBdXRob3Jp
emF0aW9uUHJlc2VudGVyRGVsZWdhdGU7CiAKQEAgLTY0LDYgKzY1LDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0Q3JlZGVudGlhbFJlcXVlc3RIYW5kbGVyKENyZWRlbnRpYWxSZXF1ZXN0SGFuZGxl
ciYmIGhhbmRsZXIpIHsgbV9jcmVkZW50aWFsUmVxdWVzdEhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRs
ZXIpOyB9CiAgICAgdm9pZCBzZXRMQUNvbnRleHQoTEFDb250ZXh0ICopOwogCisgICAgdm9pZCBk
aWRTZWxlY3RBc3NlcnRpb25SZXNwb25zZShBU0NMb2dpbkNob2ljZVByb3RvY29sICopOworCiBw
cml2YXRlOgogICAgIFdlYWtQdHI8QXV0aGVudGljYXRvck1hbmFnZXI+IG1fbWFuYWdlcjsKICAg
ICBSZXRhaW5QdHI8QVNDQXV0aG9yaXphdGlvblByZXNlbnRlcj4gbV9wcmVzZW50ZXI7CkBAIC03
Myw2ICs3Niw5IEBAIHByaXZhdGU6CiAKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExBQ29u
dGV4dCAqKT4gbV9sYUNvbnRleHRIYW5kbGVyOwogICAgIFJldGFpblB0cjxMQUNvbnRleHQ+IG1f
bGFDb250ZXh0OworCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpBdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UqKT4gbV9yZXNwb25zZUhhbmRsZXI7CisgICAgSGFzaE1h
cDxBU0NMb2dpbkNob2ljZVByb3RvY29sICosIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZSo+IG1fY3JlZGVudGlhbHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0F1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQcmVzZW50ZXJD
b29yZGluYXRvci5tbQppbmRleCA2MGFjYmYwODU3NzIzODE2NGUyODA2NDhlYTdkNzRiNTFmNGJk
YTBiLi5iZWZhMGVhMzJkZmViMzA5ZWMzM2QyM2Y1OGE2NTE1Njg2MDQ1MTIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50
aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5h
dG9yLm1tCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbXBvcnQgIkF1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmgiCiAjaW1wb3J0ICJXS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5oIgotI2lt
cG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50
aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCiAj
aW1wb3J0ICJBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNvZnRMaW5rLmgiCkBAIC00Myw3ICs0
Myw3IEBAIEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6QXV0aGVudGljYXRvclBy
ZXNlbnRlckNvb3JkaW5hdG9yKGNvbnN0IEF1dGhlCiB7CiAjaWYgSEFWRShBU0NfQVVUSF9VSSkK
ICAgICBhdXRvIHByZXNlbnRhdGlvbkNvbnRleHQgPSBhZG9wdE5TKFthbGxvY0FTQ0F1dGhvcml6
YXRpb25QcmVzZW50YXRpb25Db250ZXh0SW5zdGFuY2UoKSBpbml0V2l0aFJlcXVlc3RDb250ZXh0
Om51bGxwdHIgYXBwSWRlbnRpZmllcjpudWxscHRyXSk7Ci0gICAgW3ByZXNlbnRhdGlvbkNvbnRl
eHQgc2V0UmVseWluZ1BhcnR5SWRlbnRpZmllcjogcnBJZF07CisgICAgW3ByZXNlbnRhdGlvbkNv
bnRleHQgc2V0U2VydmljZU5hbWU6IHJwSWRdOwogCiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
Y2FzZSBDbGllbnREYXRhVHlwZTo6Q3JlYXRlOgpAQCAtNTMsOCArNTMsOCBAQCBBdXRoZW50aWNh
dG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRv
cihjb25zdCBBdXRoZQogICAgICAgICAgICAgW3ByZXNlbnRhdGlvbkNvbnRleHQgYWRkTG9naW5D
aG9pY2U6YWRvcHROUyhbYWxsb2NBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxMb2dp
bkNob2ljZUluc3RhbmNlKCkgaW5pdFJlZ2lzdHJhdGlvbkNob2ljZV0pLmdldCgpXTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDbGllbnREYXRhVHlwZTo6R2V0OgotICAgICAgICAvLyBGSVhN
RSgyMTk3MTApOiBBZG9wdCBuZXcgVUkgZm9yIHRoZSBQbGF0Zm9ybSBBdXRoZW50aWNhdG9yIGdl
dEFzc2VydGlvbiBmbG93LgotICAgICAgICAvLyBGSVhNRSgyMTk3MTEpOiBBZG9wdCBuZXcgVUkg
Zm9yIHRoZSBTZWN1cml0eSBLZXkgZ2V0QXNzZXJ0aW9uIGZsb3cuCisgICAgICAgIGlmICh0cmFu
c3BvcnRzLmNvbnRhaW5zKEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYikgfHwgdHJhbnNwb3J0
cy5jb250YWlucyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpKQorICAgICAgICAgICAgW3By
ZXNlbnRhdGlvbkNvbnRleHQgYWRkTG9naW5DaG9pY2U6YWRvcHROUyhbYWxsb2NBU0NTZWN1cml0
eUtleVB1YmxpY0tleUNyZWRlbnRpYWxMb2dpbkNob2ljZUluc3RhbmNlKCkgaW5pdEFzc2VydGlv
blBsYWNlaG9sZGVyQ2hvaWNlXSkuZ2V0KCldOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTkwLDEwICs5MCwzMiBAQCB2b2lk
IEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6cmVxdWVzdFBpbih1aW50NjRfdCwg
Q29tcGxldGlvbkhhbmRsZXI8dgogICAgIC8vIEZJWE1FKDIxOTcxMik6IEFkb3B0IG5ldyBVSSBm
b3IgdGhlIENsaWVudCBQSU4gZmxvdy4KIH0KIAotdm9pZCBBdXRoZW50aWNhdG9yUHJlc2VudGVy
Q29vcmRpbmF0b3I6OnNlbGVjdEFzc2VydGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8QXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlPj4mJiwgV2ViQXV0aGVudGljYXRpb25Tb3VyY2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKik+JiYpCit2
b2lkIEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6c2VsZWN0QXNzZXJ0aW9uUmVz
cG9uc2UoVmVjdG9yPFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYmIHJlc3Bv
bnNlcywgV2ViQXV0aGVudGljYXRpb25Tb3VyY2Ugc291cmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSopPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogeworI2lmIEhBVkUoQVNDX0FVVEhfVUkpCisgICAgaWYgKG1fcmVzcG9uc2VIYW5kbGVyKQor
ICAgICAgICBtX3Jlc3BvbnNlSGFuZGxlcihudWxscHRyKTsKKyAgICBtX3Jlc3BvbnNlSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworCisgICAgaWYgKHNvdXJjZSA9PSBXZWJB
dXRoZW50aWNhdGlvblNvdXJjZTo6RXh0ZXJuYWwpIHsKKyAgICAgICAgYXV0byBsb2dpbkNob2lj
ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKworICAgICAgICBm
b3IgKGF1dG8mIHJlc3BvbnNlIDogcmVzcG9uc2VzKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8
TlNEYXRhPiB1c2VySGFuZGxlOworICAgICAgICAgICAgaWYgKHJlc3BvbnNlLT51c2VySGFuZGxl
KCkpCisgICAgICAgICAgICAgICAgdXNlckhhbmRsZSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2Nd
IGluaXRXaXRoQnl0ZXM6cmVzcG9uc2UtPnVzZXJIYW5kbGUoKS0+ZGF0YSgpIGxlbmd0aDpyZXNw
b25zZS0+dXNlckhhbmRsZSgpLT5ieXRlTGVuZ3RoKCldKTsKKworICAgICAgICAgICAgYXV0byBs
b2dpbkNob2ljZSA9IGFkb3B0TlMoW2FsbG9jQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50
aWFsTG9naW5DaG9pY2VJbnN0YW5jZSgpIGluaXRXaXRoTmFtZTpyZXNwb25zZS0+bmFtZSgpIGRp
c3BsYXlOYW1lOnJlc3BvbnNlLT5kaXNwbGF5TmFtZSgpIHVzZXJIYW5kbGU6dXNlckhhbmRsZS5n
ZXQoKV0pOworICAgICAgICAgICAgW2xvZ2luQ2hvaWNlcyBhZGRPYmplY3Q6bG9naW5DaG9pY2Uu
Z2V0KCldOworCisgICAgICAgICAgICBtX2NyZWRlbnRpYWxzLmFkZCgoQVNDTG9naW5DaG9pY2VQ
cm90b2NvbCAqKWxvZ2luQ2hvaWNlLmdldCgpLCByZXNwb25zZS5wdHIoKSk7CisgICAgICAgIH0K
KworICAgICAgICBbbV9wcmVzZW50ZXIgdXBkYXRlSW50ZXJmYWNlV2l0aExvZ2luQ2hvaWNlczps
b2dpbkNob2ljZXMuZ2V0KCldOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIC8vIEZJWE1F
KDIxOTcxMCk6IEFkb3B0IG5ldyBVSSBmb3IgdGhlIFBsYXRmb3JtIEF1dGhlbnRpY2F0b3IgZ2V0
QXNzZXJ0aW9uIGZsb3cuCi0gICAgLy8gRklYTUUoMjE5NzExKTogQWRvcHQgbmV3IFVJIGZvciB0
aGUgU2VjdXJpdHkgS2V5IGdldEFzc2VydGlvbiBmbG93LgorI2VuZGlmIC8vIEhBVkUoQVNDX0FV
VEhfVUkpCiB9CiAKIHZvaWQgQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpyZXF1
ZXN0TEFDb250ZXh0Rm9yVXNlclZlcmlmaWNhdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKExB
Q29udGV4dCAqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEyNSw2ICsxNDcsMTUgQEAgdm9p
ZCBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6OnNldExBQ29udGV4dChMQUNvbnRl
eHQgKmNvbnRleHQpCiAgICAgbV9sYUNvbnRleHQgPSBjb250ZXh0OwogfQogCit2b2lkIEF1dGhl
bnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6ZGlkU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2Uo
QVNDTG9naW5DaG9pY2VQcm90b2NvbCAqbG9naW5DaG9pY2UpCit7CisgICAgYXV0byogcmVzcG9u
c2UgPSBtX2NyZWRlbnRpYWxzLnRha2UobG9naW5DaG9pY2UpOworICAgIGlmICghcmVzcG9uc2Up
CisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVzcG9uc2VIYW5kbGVyKHJlc3BvbnNlKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS0FTQ0F1dGhvcml6YXRpb25QcmVz
ZW50ZXJEZWxlZ2F0ZS5tbQppbmRleCBlMWVmN2YyNDA3M2ZiOWIxOTUyODk2NDlhNmZiMDc4MGM2
NjJjZGViLi4zNGFhMzE3MDNkNzY4OGE0ZTRhN2NmMDM0OTg0MTBlYTZkNDU3MGRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS0FT
Q0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50
ZXJEZWxlZ2F0ZS5tbQpAQCAtNjUsNiArNjUsMTYgQEAgLSAodm9pZClhdXRob3JpemF0aW9uUHJl
c2VudGVyOihBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyICopcHJlc2VudGVyIGNyZWRlbnRpYWwK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KKworICAgIGlmIChbbG9naW5D
aG9pY2UgaXNLaW5kT2ZDbGFzczpXZWJLaXQ6OmdldEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3Jl
ZGVudGlhbExvZ2luQ2hvaWNlQ2xhc3MoKV0pIHsKKyAgICAgICAgaWYgKFsoQVNDU2VjdXJpdHlL
ZXlQdWJsaWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2UgKilsb2dpbkNob2ljZSBsb2dpbkNob2lj
ZUtpbmRdID09IEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlS2lu
ZEFzc2VydGlvbikgeworICAgICAgICAgICAgW3NlbGYgZGlzcGF0Y2hDb29yZGluYXRvckNhbGxi
YWNrOltsb2dpbkNob2ljZV0gKFdlYktpdDo6QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5h
dG9yJiBjb29yZGluYXRvcikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgY29vcmRpbmF0b3Iu
ZGlkU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoKEFTQ0xvZ2luQ2hvaWNlUHJvdG9jb2wgKilsb2dp
bkNob2ljZSk7CisgICAgICAgICAgICB9XTsKKworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQogfQogCiAtICh2b2lkKWF1dGhvcml6YXRpb25QcmVzZW50ZXI6KEFTQ0F1dGhv
cml6YXRpb25QcmVzZW50ZXIgKilwcmVzZW50ZXIgdmFsaWRhdGVVc2VyRW50ZXJlZFBJTjooTlNT
dHJpbmcgKilwaW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkIDxBU0NDcmVkZW50aWFs
UHJvdG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416034</attachid>
            <date>2020-12-11 12:43:49 -0800</date>
            <delta_ts>2020-12-11 15:46:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219711-20201211124348.patch</filename>
            <type>text/plain</type>
            <size>11503</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEzN2M2NDBhYTc4ZDI2MWI1
NTY5OTYzYWIxZWI1ZjhiMDU3M2UyZGEuLmU3OGUwMjU0OTFhOWM1MzMxMWUzZmQ4MWM0MTZhOTk4
MzNlN2UyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMTItMTEgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFkb3B0IG5l
dyBVSSBmb3IgdGhlIFNlY3VyaXR5IEtleSBnZXRBc3NlcnRpb24gZmxvdworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NzExCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83MjE1NDg0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkb3B0cyB0aGUgbmV3IFVJIGZvciB0aGUgc2VjdXJp
dHkga2V5IGdldEFzc2VydGlvbiBmbG93IHdoaWNoIGNvbnRhaW5zIHR3byBwYXJ0OgorICAgICAg
ICAxLiBzaG93aW5nIGEgaW5mb3JtYXRpdmUgVUkgdG8gYXNrIHRoZSB1c2VyIHRvIGNvbm5lY3Qg
dGhlaXIgc2VjdXJpdHkga2V5cywKKyAgICAgICAgMi4gc2hvd2luZyBhbiBhY2NvdW50IHBpY2tl
ciBmb3IgdXNlcnMgdG8gc2VsZWN0IGEgY3JlZGVudGlhbCB0byB1c2UuCisKKyAgICAgICAgQ292
ZXJlZCBieSBtYW51YWwgdGVzdHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvQ29jb2EvQXV0
aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaDoKKyAgICAgICAgUGFwZXJ3b3JrLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQcmVz
ZW50ZXJDb29yZGluYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW06CisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6QXV0aGVudGljYXRvclBy
ZXNlbnRlckNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclByZXNl
bnRlckNvb3JkaW5hdG9yOjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJL
aXQ6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6ZGlkU2VsZWN0QXNzZXJ0aW9u
UmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
S0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV0tBU0NB
dXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUgYXV0aG9yaXphdGlvblByZXNlbnRlcjpjcmVk
ZW50aWFsUmVxdWVzdGVkRm9yTG9naW5DaG9pY2U6YXV0aGVudGljYXRlZENvbnRleHQ6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgIEltcGxlbWVudHMgdGhlIHR3byBmbG93cy4KKwogMjAy
MC0xMi0xMCAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWJBdXRobl0gQWRvcHQgbmV3IFVJIGZvciB0aGUgUGxhdGZvcm0gQXV0aGVudGljYXRvciBtYWtl
Q3JlZGVudGlhbCBmbG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9D
b2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaAppbmRleCA3ZmNk
ZGQ3MWM1YzIwMjdlYjA3MGZkOThkOTU5NWU1Yzc3NWQ1NzcyLi5jNTVkMmEwYmM2YzYwMmU5ODQ5
MGVlYjBmYWI4ZmRlODk1MmQzMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgK
QEAgLTY5LDYgKzY5LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIEBpbnRlcmZhY2UgQVND
QXV0aG9yaXphdGlvblByZXNlbnRlciA6IE5TT2JqZWN0IDxBU0NBdXRob3JpemF0aW9uUHJlc2Vu
dGVySG9zdFByb3RvY29sPgogCiAtICh2b2lkKXByZXNlbnRBdXRob3JpemF0aW9uV2l0aENvbnRl
eHQ6KEFTQ0F1dGhvcml6YXRpb25QcmVzZW50YXRpb25Db250ZXh0ICopY29udGV4dCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoaWQ8QVNDQ3JlZGVudGlhbFByb3RvY29sPiBfTnVsbGFibGUs
IE5TRXJyb3IgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOworLSAodm9pZCl1cGRhdGVJ
bnRlcmZhY2VXaXRoTG9naW5DaG9pY2VzOihOU0FycmF5PGlkIDxBU0NMb2dpbkNob2ljZVByb3Rv
Y29sPj4gKilsb2dpbkNob2ljZXM7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8
QVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKIApAQCAtODksNyAr
OTAsNyBAQCBleHRlcm4gTlNTdHJpbmcgKiBjb25zdCBBU0NBdXRob3JpemF0aW9uUHJlc2VudGF0
aW9uQ29udGV4dERhdGFLZXk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29w
eSkgTlNTdHJpbmcgKmFwcElkZW50aWZpZXI7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHksIGNvcHkpIE5TQXJyYXk8aWQ8QVNDTG9naW5DaG9pY2VQcm90b2NvbD4+ICpsb2dpbkNob2lj
ZXM7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICpyZWx5
aW5nUGFydHlJZGVudGlmaWVyOworQHByb3BlcnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5
KSBOU1N0cmluZyAqc2VydmljZU5hbWU7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBO
U1N0cmluZyAqcHJveGllZEFwcE5hbWU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNB
cnJheTxOU1N0cmluZyAqPiAqcHJveGllZEFzc29jaWF0ZWREb21haW5zOwpAQCAtMTAyLDE1ICsx
MDMsMjIgQEAgZXh0ZXJuIE5TU3RyaW5nICogY29uc3QgQVNDQXV0aG9yaXphdGlvblByZXNlbnRh
dGlvbkNvbnRleHREYXRhS2V5OwogCiBAZW5kCiAKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlS2luZCkgeworICAg
IEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlS2luZFJlZ2lzdHJh
dGlvbiwKKyAgICBBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxMb2dpbkNob2ljZUtp
bmRBc3NlcnRpb24sCisgICAgQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsTG9naW5D
aG9pY2VLaW5kQXNzZXJ0aW9uUGxhY2Vob2xkZXIsCit9OworCiBAaW50ZXJmYWNlIEFTQ1NlY3Vy
aXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlIDogTlNPYmplY3QgPEFTQ0xvZ2lu
Q2hvaWNlUHJvdG9jb2w+CiAKIC0gKGluc3RhbmNldHlwZSlpbml0UmVnaXN0cmF0aW9uQ2hvaWNl
OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lIGRpc3BsYXlO
YW1lOihOU1N0cmluZyAqKWRpc3BsYXlOYW1lIHVzZXJIYW5kbGU6KE5TRGF0YSAqKXVzZXJIYW5k
bGU7CistIChpbnN0YW5jZXR5cGUpaW5pdEFzc2VydGlvblBsYWNlaG9sZGVyQ2hvaWNlOwogCi1A
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpuYW1lOwotQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqZGlzcGxheU5hbWU7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGF0YSAqdXNlckhhbmRs
ZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBpc1JlZ2lzdHJhdGlvblJl
cXVlc3Q7CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIHJlYWRvbmx5LCBjb3B5KSBO
U1N0cmluZyAqbmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgcmVhZG9ubHks
IGNvcHkpIE5TU3RyaW5nICpkaXNwbGF5TmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxs
YWJsZSwgcmVhZG9ubHksIGNvcHkpIE5TRGF0YSAqdXNlckhhbmRsZTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsTG9naW5D
aG9pY2VLaW5kIGxvZ2luQ2hvaWNlS2luZDsKIAogKyAoaW5zdGFuY2V0eXBlKW5ldyBOU19VTkFW
QUlMQUJMRTsKIC0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVu
dGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3Iu
aAppbmRleCBjYzMxODQ3Zjg5M2M1NDRiMjYzZDIyY2FjNWM4NjEzMjlmNGRmMmRiLi5mMDU2YjAy
ODY3NjQyZDRiY2RhMmY3OTExNTdiNTQwN2Q4ZGVlOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2Vu
dGVyQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IuaApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIE9CSkNfQ0xBU1MgQVNDQXV0
aG9yaXphdGlvblByZXNlbnRlcjsKK09CSkNfQ0xBU1MgQVNDTG9naW5DaG9pY2VQcm90b2NvbDsK
IE9CSkNfQ0xBU1MgTEFDb250ZXh0OwogT0JKQ19DTEFTUyBXS0FTQ0F1dGhvcml6YXRpb25QcmVz
ZW50ZXJEZWxlZ2F0ZTsKIApAQCAtNjQsNiArNjUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRD
cmVkZW50aWFsUmVxdWVzdEhhbmRsZXIoQ3JlZGVudGlhbFJlcXVlc3RIYW5kbGVyJiYgaGFuZGxl
cikgeyBtX2NyZWRlbnRpYWxSZXF1ZXN0SGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcik7IH0KICAg
ICB2b2lkIHNldExBQ29udGV4dChMQUNvbnRleHQgKik7CiAKKyAgICB2b2lkIGRpZFNlbGVjdEFz
c2VydGlvblJlc3BvbnNlKEFTQ0xvZ2luQ2hvaWNlUHJvdG9jb2wgKik7CisKIHByaXZhdGU6CiAg
ICAgV2Vha1B0cjxBdXRoZW50aWNhdG9yTWFuYWdlcj4gbV9tYW5hZ2VyOwogICAgIFJldGFpblB0
cjxBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyPiBtX3ByZXNlbnRlcjsKQEAgLTczLDYgKzc2LDkg
QEAgcHJpdmF0ZToKIAogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICopPiBt
X2xhQ29udGV4dEhhbmRsZXI7CiAgICAgUmV0YWluUHRyPExBQ29udGV4dD4gbV9sYUNvbnRleHQ7
CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZSopPiBtX3Jlc3BvbnNlSGFuZGxlcjsKKyAgICBIYXNoTWFwPEFTQ0xvZ2lu
Q2hvaWNlUHJvdG9jb2wgKiwgV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
Kj4gbV9jcmVkZW50aWFsczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVu
dGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9y
Lm1tCmluZGV4IDYwYWNiZjA4NTc3MjM4MTY0ZTI4MDY0OGVhN2Q3NGI1MWY0YmRhMGIuLmJlZmEw
ZWEzMmRmZWIzMDllYzMzZDIzZjU4YTY1MTU2ODYwNDUxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQcmVz
ZW50ZXJDb29yZGluYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW0KQEAg
LTMwLDcgKzMwLDcgQEAKIAogI2ltcG9ydCAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbXBv
cnQgIldLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRlLmgiCi0jaW1wb3J0IDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CisjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKICNpbXBvcnQgIkF1
dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU29mdExpbmsuaCIKQEAgLTQzLDcgKzQzLDcgQEAgQXV0
aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29v
cmRpbmF0b3IoY29uc3QgQXV0aGUKIHsKICNpZiBIQVZFKEFTQ19BVVRIX1VJKQogICAgIGF1dG8g
cHJlc2VudGF0aW9uQ29udGV4dCA9IGFkb3B0TlMoW2FsbG9jQVNDQXV0aG9yaXphdGlvblByZXNl
bnRhdGlvbkNvbnRleHRJbnN0YW5jZSgpIGluaXRXaXRoUmVxdWVzdENvbnRleHQ6bnVsbHB0ciBh
cHBJZGVudGlmaWVyOm51bGxwdHJdKTsKLSAgICBbcHJlc2VudGF0aW9uQ29udGV4dCBzZXRSZWx5
aW5nUGFydHlJZGVudGlmaWVyOiBycElkXTsKKyAgICBbcHJlc2VudGF0aW9uQ29udGV4dCBzZXRT
ZXJ2aWNlTmFtZTogcnBJZF07CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIENsaWVu
dERhdGFUeXBlOjpDcmVhdGU6CkBAIC01Myw4ICs1Myw4IEBAIEF1dGhlbnRpY2F0b3JQcmVzZW50
ZXJDb29yZGluYXRvcjo6QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yKGNvbnN0IEF1
dGhlCiAgICAgICAgICAgICBbcHJlc2VudGF0aW9uQ29udGV4dCBhZGRMb2dpbkNob2ljZTphZG9w
dE5TKFthbGxvY0FTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlSW5z
dGFuY2UoKSBpbml0UmVnaXN0cmF0aW9uQ2hvaWNlXSkuZ2V0KCldOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENsaWVudERhdGFUeXBlOjpHZXQ6Ci0gICAgICAgIC8vIEZJWE1FKDIxOTcxMCk6
IEFkb3B0IG5ldyBVSSBmb3IgdGhlIFBsYXRmb3JtIEF1dGhlbnRpY2F0b3IgZ2V0QXNzZXJ0aW9u
IGZsb3cuCi0gICAgICAgIC8vIEZJWE1FKDIxOTcxMSk6IEFkb3B0IG5ldyBVSSBmb3IgdGhlIFNl
Y3VyaXR5IEtleSBnZXRBc3NlcnRpb24gZmxvdy4KKyAgICAgICAgaWYgKHRyYW5zcG9ydHMuY29u
dGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6VXNiKSB8fCB0cmFuc3BvcnRzLmNvbnRhaW5z
KEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYykpCisgICAgICAgICAgICBbcHJlc2VudGF0aW9u
Q29udGV4dCBhZGRMb2dpbkNob2ljZTphZG9wdE5TKFthbGxvY0FTQ1NlY3VyaXR5S2V5UHVibGlj
S2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlSW5zdGFuY2UoKSBpbml0QXNzZXJ0aW9uUGxhY2Vob2xk
ZXJDaG9pY2VdKS5nZXQoKV07CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtOTAsMTAgKzkwLDMyIEBAIHZvaWQgQXV0aGVudGlj
YXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpyZXF1ZXN0UGluKHVpbnQ2NF90LCBDb21wbGV0aW9u
SGFuZGxlcjx2CiAgICAgLy8gRklYTUUoMjE5NzEyKTogQWRvcHQgbmV3IFVJIGZvciB0aGUgQ2xp
ZW50IFBJTiBmbG93LgogfQogCi12b2lkIEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRv
cjo6c2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoVmVjdG9yPFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U+PiYmLCBXZWJBdXRoZW50aWNhdGlvblNvdXJjZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UqKT4mJikKK3ZvaWQgQXV0aGVu
dGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZShWZWN0
b3I8UmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiYgcmVzcG9uc2VzLCBXZWJB
dXRoZW50aWNhdGlvblNvdXJjZSBzb3VyY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisjaWYg
SEFWRShBU0NfQVVUSF9VSSkKKyAgICBpZiAobV9yZXNwb25zZUhhbmRsZXIpCisgICAgICAgIG1f
cmVzcG9uc2VIYW5kbGVyKG51bGxwdHIpOworICAgIG1fcmVzcG9uc2VIYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBpZiAoc291cmNlID09IFdlYkF1dGhlbnRpY2F0
aW9uU291cmNlOjpFeHRlcm5hbCkgeworICAgICAgICBhdXRvIGxvZ2luQ2hvaWNlcyA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworCisgICAgICAgIGZvciAoYXV0byYg
cmVzcG9uc2UgOiByZXNwb25zZXMpIHsKKyAgICAgICAgICAgIFJldGFpblB0cjxOU0RhdGE+IHVz
ZXJIYW5kbGU7CisgICAgICAgICAgICBpZiAocmVzcG9uc2UtPnVzZXJIYW5kbGUoKSkKKyAgICAg
ICAgICAgICAgICB1c2VySGFuZGxlID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhC
eXRlczpyZXNwb25zZS0+dXNlckhhbmRsZSgpLT5kYXRhKCkgbGVuZ3RoOnJlc3BvbnNlLT51c2Vy
SGFuZGxlKCktPmJ5dGVMZW5ndGgoKV0pOworCisgICAgICAgICAgICBhdXRvIGxvZ2luQ2hvaWNl
ID0gYWRvcHROUyhbYWxsb2NBU0NTZWN1cml0eUtleVB1YmxpY0tleUNyZWRlbnRpYWxMb2dpbkNo
b2ljZUluc3RhbmNlKCkgaW5pdFdpdGhOYW1lOnJlc3BvbnNlLT5uYW1lKCkgZGlzcGxheU5hbWU6
cmVzcG9uc2UtPmRpc3BsYXlOYW1lKCkgdXNlckhhbmRsZTp1c2VySGFuZGxlLmdldCgpXSk7Cisg
ICAgICAgICAgICBbbG9naW5DaG9pY2VzIGFkZE9iamVjdDpsb2dpbkNob2ljZS5nZXQoKV07CisK
KyAgICAgICAgICAgIG1fY3JlZGVudGlhbHMuYWRkKChBU0NMb2dpbkNob2ljZVByb3RvY29sICop
bG9naW5DaG9pY2UuZ2V0KCksIHJlc3BvbnNlLnB0cigpKTsKKyAgICAgICAgfQorCisgICAgICAg
IFttX3ByZXNlbnRlciB1cGRhdGVJbnRlcmZhY2VXaXRoTG9naW5DaG9pY2VzOmxvZ2luQ2hvaWNl
cy5nZXQoKV07CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgLy8gRklYTUUoMjE5NzEwKTog
QWRvcHQgbmV3IFVJIGZvciB0aGUgUGxhdGZvcm0gQXV0aGVudGljYXRvciBnZXRBc3NlcnRpb24g
Zmxvdy4KLSAgICAvLyBGSVhNRSgyMTk3MTEpOiBBZG9wdCBuZXcgVUkgZm9yIHRoZSBTZWN1cml0
eSBLZXkgZ2V0QXNzZXJ0aW9uIGZsb3cuCisjZW5kaWYgLy8gSEFWRShBU0NfQVVUSF9VSSkKIH0K
IAogdm9pZCBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6OnJlcXVlc3RMQUNvbnRl
eHRGb3JVc2VyVmVyaWZpY2F0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTEFDb250ZXh0ICop
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTI1LDYgKzE0NywxNSBAQCB2b2lkIEF1dGhlbnRp
Y2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6c2V0TEFDb250ZXh0KExBQ29udGV4dCAqY29udGV4
dCkKICAgICBtX2xhQ29udGV4dCA9IGNvbnRleHQ7CiB9CiAKK3ZvaWQgQXV0aGVudGljYXRvclBy
ZXNlbnRlckNvb3JkaW5hdG9yOjpkaWRTZWxlY3RBc3NlcnRpb25SZXNwb25zZShBU0NMb2dpbkNo
b2ljZVByb3RvY29sICpsb2dpbkNob2ljZSkKK3sKKyAgICBhdXRvKiByZXNwb25zZSA9IG1fY3Jl
ZGVudGlhbHMudGFrZShsb2dpbkNob2ljZSk7CisgICAgaWYgKCFyZXNwb25zZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9yZXNwb25zZUhhbmRsZXIocmVzcG9uc2UpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS0FTQ0F1
dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVn
YXRlLm1tCmluZGV4IGUxZWY3ZjI0MDczZmI5YjE5NTI4OTY0OWE2ZmIwNzgwYzY2MmNkZWIuLjM0
YWEzMTcwM2Q3Njg4YTRlNGE3Y2YwMzQ5ODQxMGVhNmQ0NTcwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLQVNDQXV0aG9yaXph
dGlvblByZXNlbnRlckRlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL1dLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRl
Lm1tCkBAIC02NSw2ICs2NSwxNiBAQCAtICh2b2lkKWF1dGhvcml6YXRpb25QcmVzZW50ZXI6KEFT
Q0F1dGhvcml6YXRpb25QcmVzZW50ZXIgKilwcmVzZW50ZXIgY3JlZGVudGlhbAogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKFtsb2dpbkNob2ljZSBpc0tp
bmRPZkNsYXNzOldlYktpdDo6Z2V0QVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsTG9n
aW5DaG9pY2VDbGFzcygpXSkgeworICAgICAgICBpZiAoWyhBU0NTZWN1cml0eUtleVB1YmxpY0tl
eUNyZWRlbnRpYWxMb2dpbkNob2ljZSAqKWxvZ2luQ2hvaWNlIGxvZ2luQ2hvaWNlS2luZF0gPT0g
QVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2VLaW5kQXNzZXJ0aW9u
KSB7CisgICAgICAgICAgICBbc2VsZiBkaXNwYXRjaENvb3JkaW5hdG9yQ2FsbGJhY2s6W2xvZ2lu
Q2hvaWNlXSAoV2ViS2l0OjpBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3ImIGNvb3Jk
aW5hdG9yKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBjb29yZGluYXRvci5kaWRTZWxlY3RB
c3NlcnRpb25SZXNwb25zZSgoQVNDTG9naW5DaG9pY2VQcm90b2NvbCAqKWxvZ2luQ2hvaWNlKTsK
KyAgICAgICAgICAgIH1dOworCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9
CiB9CiAKIC0gKHZvaWQpYXV0aG9yaXphdGlvblByZXNlbnRlcjooQVNDQXV0aG9yaXphdGlvblBy
ZXNlbnRlciAqKXByZXNlbnRlciB2YWxpZGF0ZVVzZXJFbnRlcmVkUElOOihOU1N0cmluZyAqKXBp
biBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQgPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4g
Y3JlZGVudGlhbCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416059</attachid>
            <date>2020-12-11 15:46:21 -0800</date>
            <delta_ts>2020-12-11 17:55:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219711-20201211154620.patch</filename>
            <type>text/plain</type>
            <size>11705</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU3YjI2MGFjMmNjYzA4NGRk
OTQzZDMwYTY4ODhhMzU3NTA2MmFkZjEuLjI5Nzc1ZTMzNDA4ODFmMTBlOWQxZTUyNzE2Y2Q0OTk1
MmY3ZjdiY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjAtMTItMTEgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIEFkb3B0IG5l
dyBVSSBmb3IgdGhlIFNlY3VyaXR5IEtleSBnZXRBc3NlcnRpb24gZmxvdworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NzExCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83MjE1NDg0MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkb3B0cyB0aGUgbmV3IFVJIGZvciB0aGUgc2VjdXJp
dHkga2V5IGdldEFzc2VydGlvbiBmbG93IHdoaWNoIGNvbnRhaW5zIHR3byBwYXJ0OgorICAgICAg
ICAxLiBzaG93aW5nIGEgaW5mb3JtYXRpdmUgVUkgdG8gYXNrIHRoZSB1c2VyIHRvIGNvbm5lY3Qg
dGhlaXIgc2VjdXJpdHkga2V5cywKKyAgICAgICAgMi4gc2hvd2luZyBhbiBhY2NvdW50IHBpY2tl
ciBmb3IgdXNlcnMgdG8gc2VsZWN0IGEgY3JlZGVudGlhbCB0byB1c2UuCisKKyAgICAgICAgQ292
ZXJlZCBieSBtYW51YWwgdGVzdHMuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvQ29jb2EvQXV0
aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaDoKKyAgICAgICAgUGFwZXJ3b3JrLgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQcmVz
ZW50ZXJDb29yZGluYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3IubW06CisgICAgICAgIChX
ZWJLaXQ6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6QXV0aGVudGljYXRvclBy
ZXNlbnRlckNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRvclByZXNl
bnRlckNvb3JkaW5hdG9yOjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJL
aXQ6OkF1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcjo6ZGlkU2VsZWN0QXNzZXJ0aW9u
UmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
S0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV0tBU0NB
dXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdhdGUgYXV0aG9yaXphdGlvblByZXNlbnRlcjpjcmVk
ZW50aWFsUmVxdWVzdGVkRm9yTG9naW5DaG9pY2U6YXV0aGVudGljYXRlZENvbnRleHQ6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgIEltcGxlbWVudHMgdGhlIHR3byBmbG93cy4KKwogMjAy
MC0xMi0xMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBF
eHBvc2UgQVBJIGZvciBlbmFibGluZy9kaXNhYmxpbmcgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVu
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0aGVudGlj
YXRpb25TZXJ2aWNlc0NvcmVTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29h
L0F1dGhlbnRpY2F0aW9uU2VydmljZXNDb3JlU1BJLmgKaW5kZXggN2ZjZGRkNzFjNWMyMDI3ZWIw
NzBmZDk4ZDk1OTVlNWM3NzVkNTc3Mi4uYzU1ZDJhMGJjNmM2MDJlOTg0OTBlZWIwZmFiOGZkZTg5
NTJkMzA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvQXV0
aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS9Db2NvYS9BdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQSS5oCkBAIC02OSw2ICs2OSw3
IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBAaW50ZXJmYWNlIEFTQ0F1dGhvcml6YXRpb25Q
cmVzZW50ZXIgOiBOU09iamVjdCA8QVNDQXV0aG9yaXphdGlvblByZXNlbnRlckhvc3RQcm90b2Nv
bD4KIAogLSAodm9pZClwcmVzZW50QXV0aG9yaXphdGlvbldpdGhDb250ZXh0OihBU0NBdXRob3Jp
emF0aW9uUHJlc2VudGF0aW9uQ29udGV4dCAqKWNvbnRleHQgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKGlkPEFTQ0NyZWRlbnRpYWxQcm90b2NvbD4gX051bGxhYmxlLCBOU0Vycm9yICogX051
bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpdXBkYXRlSW50ZXJmYWNlV2l0aExv
Z2luQ2hvaWNlczooTlNBcnJheTxpZCA8QVNDTG9naW5DaG9pY2VQcm90b2NvbD4+ICopbG9naW5D
aG9pY2VzOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPEFTQ0F1dGhvcml6YXRp
b25QcmVzZW50ZXJEZWxlZ2F0ZT4gZGVsZWdhdGU7CiAKQEAgLTg5LDcgKzkwLDcgQEAgZXh0ZXJu
IE5TU3RyaW5nICogY29uc3QgQVNDQXV0aG9yaXphdGlvblByZXNlbnRhdGlvbkNvbnRleHREYXRh
S2V5OwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICph
cHBJZGVudGlmaWVyOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0Fy
cmF5PGlkPEFTQ0xvZ2luQ2hvaWNlUHJvdG9jb2w+PiAqbG9naW5DaG9pY2VzOwotQHByb3BlcnR5
IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqcmVseWluZ1BhcnR5SWRlbnRp
ZmllcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKnNl
cnZpY2VOYW1lOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKnByb3hp
ZWRBcHBOYW1lOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKnByb3hpZWRBc3NvY2lhdGVkRG9tYWluczsKQEAgLTEwMiwxNSArMTAzLDIyIEBAIGV4dGVy
biBOU1N0cmluZyAqIGNvbnN0IEFTQ0F1dGhvcml6YXRpb25QcmVzZW50YXRpb25Db250ZXh0RGF0
YUtleTsKIAogQGVuZAogCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBBU0NTZWN1cml0eUtl
eVB1YmxpY0tleUNyZWRlbnRpYWxMb2dpbkNob2ljZUtpbmQpIHsKKyAgICBBU0NTZWN1cml0eUtl
eVB1YmxpY0tleUNyZWRlbnRpYWxMb2dpbkNob2ljZUtpbmRSZWdpc3RyYXRpb24sCisgICAgQVND
U2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2VLaW5kQXNzZXJ0aW9uLAor
ICAgIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlS2luZEFzc2Vy
dGlvblBsYWNlaG9sZGVyLAorfTsKKwogQGludGVyZmFjZSBBU0NTZWN1cml0eUtleVB1YmxpY0tl
eUNyZWRlbnRpYWxMb2dpbkNob2ljZSA6IE5TT2JqZWN0IDxBU0NMb2dpbkNob2ljZVByb3RvY29s
PgogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFJlZ2lzdHJhdGlvbkNob2ljZTsKIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZSBkaXNwbGF5TmFtZTooTlNTdHJpbmcg
KilkaXNwbGF5TmFtZSB1c2VySGFuZGxlOihOU0RhdGEgKil1c2VySGFuZGxlOworLSAoaW5zdGFu
Y2V0eXBlKWluaXRBc3NlcnRpb25QbGFjZWhvbGRlckNob2ljZTsKIAotQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAqbmFtZTsKLUBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmRpc3BsYXlOYW1lOwotQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RhdGEgKnVzZXJIYW5kbGU7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgaXNSZWdpc3RyYXRpb25SZXF1ZXN0OworQHByb3Bl
cnR5IChub25hdG9taWMsIG51bGxhYmxlLCByZWFkb25seSwgY29weSkgTlNTdHJpbmcgKm5hbWU7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIHJlYWRvbmx5LCBjb3B5KSBOU1N0cmlu
ZyAqZGlzcGxheU5hbWU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgbnVsbGFibGUsIHJlYWRvbmx5
LCBjb3B5KSBOU0RhdGEgKnVzZXJIYW5kbGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlS2luZCBsb2dp
bkNob2ljZUtpbmQ7CiAKICsgKGluc3RhbmNldHlwZSluZXcgTlNfVU5BVkFJTEFCTEU7CiAtIChp
bnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0F1dGhlbnRpY2F0b3JQcmVzZW50
ZXJDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmgKaW5kZXggY2MzMTg0
N2Y4OTNjNTQ0YjI2M2QyMmNhYzVjODYxMzI5ZjRkZjJkYi4uNDNjNmMwNThmNDQyYWMxZGE2Nzk0
MzRmNDk0NzIyYzNjNTgxMjA4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9y
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
QXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
ZiBFTkFCTEUoV0VCX0FVVEhOKQogCiAjaW5jbHVkZSAiV2ViQXV0aGVudGljYXRpb25GbGFncy5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdG9yVHJhbnNwb3J0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CkBAIC0zNSw2ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogT0JKQ19D
TEFTUyBBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyOworT0JKQ19DTEFTUyBBU0NMb2dpbkNob2lj
ZVByb3RvY29sOwogT0JKQ19DTEFTUyBMQUNvbnRleHQ7CiBPQkpDX0NMQVNTIFdLQVNDQXV0aG9y
aXphdGlvblByZXNlbnRlckRlbGVnYXRlOwogCkBAIC02NCw2ICs2Niw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldENyZWRlbnRpYWxSZXF1ZXN0SGFuZGxlcihDcmVkZW50aWFsUmVxdWVzdEhhbmRs
ZXImJiBoYW5kbGVyKSB7IG1fY3JlZGVudGlhbFJlcXVlc3RIYW5kbGVyID0gV1RGTW92ZShoYW5k
bGVyKTsgfQogICAgIHZvaWQgc2V0TEFDb250ZXh0KExBQ29udGV4dCAqKTsKIAorICAgIHZvaWQg
ZGlkU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoQVNDTG9naW5DaG9pY2VQcm90b2NvbCAqKTsKKwog
cHJpdmF0ZToKICAgICBXZWFrUHRyPEF1dGhlbnRpY2F0b3JNYW5hZ2VyPiBtX21hbmFnZXI7CiAg
ICAgUmV0YWluUHRyPEFTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXI+IG1fcHJlc2VudGVyOwpAQCAt
NzMsNiArNzcsOSBAQCBwcml2YXRlOgogCiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChMQUNv
bnRleHQgKik+IG1fbGFDb250ZXh0SGFuZGxlcjsKICAgICBSZXRhaW5QdHI8TEFDb250ZXh0PiBt
X2xhQ29udGV4dDsKKworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6QXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlKik+IG1fcmVzcG9uc2VIYW5kbGVyOworICAgIEhhc2hN
YXA8QVNDTG9naW5DaG9pY2VQcm90b2NvbCAqLCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlPj4gbV9jcmVkZW50aWFsczsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvQXV0aGVudGljYXRvclBy
ZXNlbnRlckNvb3JkaW5hdG9yLm1tCmluZGV4IDYwYWNiZjA4NTc3MjM4MTY0ZTI4MDY0OGVhN2Q3
NGI1MWY0YmRhMGIuLjgxYTc1Y2NhNDRhZWYzNzk5NDZjY2UyM2ZlOTc2NzA0M2VhZDY0NWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L0F1dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9BdXRoZW50aWNhdG9yUHJlc2VudGVy
Q29vcmRpbmF0b3IubW0KQEAgLTMwLDcgKzMwLDYgQEAKIAogI2ltcG9ydCAiQXV0aGVudGljYXRv
ck1hbmFnZXIuaCIKICNpbXBvcnQgIldLQVNDQXV0aG9yaXphdGlvblByZXNlbnRlckRlbGVnYXRl
LmgiCi0jaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDx3dGYvQmxv
Y2tQdHIuaD4KIAogI2ltcG9ydCAiQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTb2Z0TGluay5o
IgpAQCAtNDMsNyArNDIsNyBAQCBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6OkF1
dGhlbnRpY2F0b3JQcmVzZW50ZXJDb29yZGluYXRvcihjb25zdCBBdXRoZQogewogI2lmIEhBVkUo
QVNDX0FVVEhfVUkpCiAgICAgYXV0byBwcmVzZW50YXRpb25Db250ZXh0ID0gYWRvcHROUyhbYWxs
b2NBU0NBdXRob3JpemF0aW9uUHJlc2VudGF0aW9uQ29udGV4dEluc3RhbmNlKCkgaW5pdFdpdGhS
ZXF1ZXN0Q29udGV4dDpudWxscHRyIGFwcElkZW50aWZpZXI6bnVsbHB0cl0pOwotICAgIFtwcmVz
ZW50YXRpb25Db250ZXh0IHNldFJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6IHJwSWRdOworICAgIFtw
cmVzZW50YXRpb25Db250ZXh0IHNldFNlcnZpY2VOYW1lOiBycElkXTsKIAogICAgIHN3aXRjaCAo
dHlwZSkgewogICAgIGNhc2UgQ2xpZW50RGF0YVR5cGU6OkNyZWF0ZToKQEAgLTUzLDggKzUyLDgg
QEAgQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpBdXRoZW50aWNhdG9yUHJlc2Vu
dGVyQ29vcmRpbmF0b3IoY29uc3QgQXV0aGUKICAgICAgICAgICAgIFtwcmVzZW50YXRpb25Db250
ZXh0IGFkZExvZ2luQ2hvaWNlOmFkb3B0TlMoW2FsbG9jQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlD
cmVkZW50aWFsTG9naW5DaG9pY2VJbnN0YW5jZSgpIGluaXRSZWdpc3RyYXRpb25DaG9pY2VdKS5n
ZXQoKV07CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2xpZW50RGF0YVR5cGU6OkdldDoKLSAg
ICAgICAgLy8gRklYTUUoMjE5NzEwKTogQWRvcHQgbmV3IFVJIGZvciB0aGUgUGxhdGZvcm0gQXV0
aGVudGljYXRvciBnZXRBc3NlcnRpb24gZmxvdy4KLSAgICAgICAgLy8gRklYTUUoMjE5NzExKTog
QWRvcHQgbmV3IFVJIGZvciB0aGUgU2VjdXJpdHkgS2V5IGdldEFzc2VydGlvbiBmbG93LgorICAg
ICAgICBpZiAodHJhbnNwb3J0cy5jb250YWlucyhBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2Ip
IHx8IHRyYW5zcG9ydHMuY29udGFpbnMoQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKSkKKyAg
ICAgICAgICAgIFtwcmVzZW50YXRpb25Db250ZXh0IGFkZExvZ2luQ2hvaWNlOmFkb3B0TlMoW2Fs
bG9jQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2VJbnN0YW5jZSgp
IGluaXRBc3NlcnRpb25QbGFjZWhvbGRlckNob2ljZV0pLmdldCgpXTsKICAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC05MCwxMCAr
ODksMzIgQEAgdm9pZCBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6OnJlcXVlc3RQ
aW4odWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHYKICAgICAvLyBGSVhNRSgyMTk3MTIpOiBB
ZG9wdCBuZXcgVUkgZm9yIHRoZSBDbGllbnQgUElOIGZsb3cuCiB9CiAKLXZvaWQgQXV0aGVudGlj
YXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpzZWxlY3RBc3NlcnRpb25SZXNwb25zZShWZWN0b3I8
UmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiYsIFdlYkF1dGhlbnRpY2F0aW9u
U291cmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNw
b25zZSopPiYmKQordm9pZCBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6OnNlbGVj
dEFzc2VydGlvblJlc3BvbnNlKFZlY3RvcjxSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPj4mJiByZXNwb25zZXMsIFdlYkF1dGhlbnRpY2F0aW9uU291cmNlIHNvdXJjZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UqKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKKyNpZiBIQVZFKEFTQ19BVVRIX1VJKQorICAgIGlmIChtX3Jlc3Bv
bnNlSGFuZGxlcikKKyAgICAgICAgbV9yZXNwb25zZUhhbmRsZXIobnVsbHB0cik7CisgICAgbV9y
ZXNwb25zZUhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKKworICAgIGlmIChz
b3VyY2UgPT0gV2ViQXV0aGVudGljYXRpb25Tb3VyY2U6OkV4dGVybmFsKSB7CisgICAgICAgIGF1
dG8gbG9naW5DaG9pY2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7
CisKKyAgICAgICAgZm9yIChhdXRvJiByZXNwb25zZSA6IHJlc3BvbnNlcykgeworICAgICAgICAg
ICAgUmV0YWluUHRyPE5TRGF0YT4gdXNlckhhbmRsZTsKKyAgICAgICAgICAgIGlmIChyZXNwb25z
ZS0+dXNlckhhbmRsZSgpKQorICAgICAgICAgICAgICAgIHVzZXJIYW5kbGUgPSBhZG9wdE5TKFtb
TlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnJlc3BvbnNlLT51c2VySGFuZGxlKCktPmRhdGEo
KSBsZW5ndGg6cmVzcG9uc2UtPnVzZXJIYW5kbGUoKS0+Ynl0ZUxlbmd0aCgpXSk7CisKKyAgICAg
ICAgICAgIGF1dG8gbG9naW5DaG9pY2UgPSBhZG9wdE5TKFthbGxvY0FTQ1NlY3VyaXR5S2V5UHVi
bGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlSW5zdGFuY2UoKSBpbml0V2l0aE5hbWU6cmVzcG9u
c2UtPm5hbWUoKSBkaXNwbGF5TmFtZTpyZXNwb25zZS0+ZGlzcGxheU5hbWUoKSB1c2VySGFuZGxl
OnVzZXJIYW5kbGUuZ2V0KCldKTsKKyAgICAgICAgICAgIFtsb2dpbkNob2ljZXMgYWRkT2JqZWN0
OmxvZ2luQ2hvaWNlLmdldCgpXTsKKworICAgICAgICAgICAgbV9jcmVkZW50aWFscy5hZGQoKEFT
Q0xvZ2luQ2hvaWNlUHJvdG9jb2wgKilsb2dpbkNob2ljZS5nZXQoKSwgV1RGTW92ZShyZXNwb25z
ZSkpOworICAgICAgICB9CisKKyAgICAgICAgW21fcHJlc2VudGVyIHVwZGF0ZUludGVyZmFjZVdp
dGhMb2dpbkNob2ljZXM6bG9naW5DaG9pY2VzLmdldCgpXTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KICAgICAvLyBGSVhNRSgyMTk3MTApOiBBZG9wdCBuZXcgVUkgZm9yIHRoZSBQbGF0Zm9ybSBB
dXRoZW50aWNhdG9yIGdldEFzc2VydGlvbiBmbG93LgotICAgIC8vIEZJWE1FKDIxOTcxMSk6IEFk
b3B0IG5ldyBVSSBmb3IgdGhlIFNlY3VyaXR5IEtleSBnZXRBc3NlcnRpb24gZmxvdy4KKyNlbmRp
ZiAvLyBIQVZFKEFTQ19BVVRIX1VJKQogfQogCiB2b2lkIEF1dGhlbnRpY2F0b3JQcmVzZW50ZXJD
b29yZGluYXRvcjo6cmVxdWVzdExBQ29udGV4dEZvclVzZXJWZXJpZmljYXRpb24oQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChMQUNvbnRleHQgKik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMjUs
NiArMTQ2LDE1IEBAIHZvaWQgQXV0aGVudGljYXRvclByZXNlbnRlckNvb3JkaW5hdG9yOjpzZXRM
QUNvbnRleHQoTEFDb250ZXh0ICpjb250ZXh0KQogICAgIG1fbGFDb250ZXh0ID0gY29udGV4dDsK
IH0KIAordm9pZCBBdXRoZW50aWNhdG9yUHJlc2VudGVyQ29vcmRpbmF0b3I6OmRpZFNlbGVjdEFz
c2VydGlvblJlc3BvbnNlKEFTQ0xvZ2luQ2hvaWNlUHJvdG9jb2wgKmxvZ2luQ2hvaWNlKQorewor
ICAgIGF1dG8gcmVzcG9uc2UgPSBtX2NyZWRlbnRpYWxzLnRha2UobG9naW5DaG9pY2UpOworICAg
IGlmICghcmVzcG9uc2UpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmVzcG9uc2VIYW5kbGVy
KHJlc3BvbnNlLmdldCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBFTkFCTEUoV0VCX0FVVEhOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvV0tBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyRGVsZWdh
dGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9X
S0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5tbQppbmRleCBlMWVmN2YyNDA3M2Zi
OWIxOTUyODk2NDlhNmZiMDc4MGM2NjJjZGViLi4zNGFhMzE3MDNkNzY4OGE0ZTRhN2NmMDM0OTg0
MTBlYTZkNDU3MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9XS0FTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9XS0FT
Q0F1dGhvcml6YXRpb25QcmVzZW50ZXJEZWxlZ2F0ZS5tbQpAQCAtNjUsNiArNjUsMTYgQEAgLSAo
dm9pZClhdXRob3JpemF0aW9uUHJlc2VudGVyOihBU0NBdXRob3JpemF0aW9uUHJlc2VudGVyICop
cHJlc2VudGVyIGNyZWRlbnRpYWwKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KKworICAgIGlmIChbbG9naW5DaG9pY2UgaXNLaW5kT2ZDbGFzczpXZWJLaXQ6OmdldEFTQ1Nl
Y3VyaXR5S2V5UHVibGljS2V5Q3JlZGVudGlhbExvZ2luQ2hvaWNlQ2xhc3MoKV0pIHsKKyAgICAg
ICAgaWYgKFsoQVNDU2VjdXJpdHlLZXlQdWJsaWNLZXlDcmVkZW50aWFsTG9naW5DaG9pY2UgKils
b2dpbkNob2ljZSBsb2dpbkNob2ljZUtpbmRdID09IEFTQ1NlY3VyaXR5S2V5UHVibGljS2V5Q3Jl
ZGVudGlhbExvZ2luQ2hvaWNlS2luZEFzc2VydGlvbikgeworICAgICAgICAgICAgW3NlbGYgZGlz
cGF0Y2hDb29yZGluYXRvckNhbGxiYWNrOltsb2dpbkNob2ljZV0gKFdlYktpdDo6QXV0aGVudGlj
YXRvclByZXNlbnRlckNvb3JkaW5hdG9yJiBjb29yZGluYXRvcikgbXV0YWJsZSB7CisgICAgICAg
ICAgICAgICAgY29vcmRpbmF0b3IuZGlkU2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2UoKEFTQ0xvZ2lu
Q2hvaWNlUHJvdG9jb2wgKilsb2dpbkNob2ljZSk7CisgICAgICAgICAgICB9XTsKKworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQogfQogCiAtICh2b2lkKWF1dGhvcml6YXRp
b25QcmVzZW50ZXI6KEFTQ0F1dGhvcml6YXRpb25QcmVzZW50ZXIgKilwcmVzZW50ZXIgdmFsaWRh
dGVVc2VyRW50ZXJlZFBJTjooTlNTdHJpbmcgKilwaW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKGlkIDxBU0NDcmVkZW50aWFsUHJvdG9jb2w+IGNyZWRlbnRpYWwsIE5TRXJyb3IgKmVycm9y
KSljb21wbGV0aW9uSGFuZGxlcgo=
</data>
<flag name="review"
          id="433466"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>