<?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>142889</bug_id>
          
          <creation_ts>2015-03-19 18:31:37 -0700</creation_ts>
          <short_desc>[Mac] Move MediaPlaybackTargetPicker</short_desc>
          <delta_ts>2015-03-19 20:53:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1078705</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-03-19 18:31:37 -0700</bug_when>
    <thetext>Move WebMediaPlaybackTargetPickerMacProxy.* to WebCore so the classes can be used by both WK1 and WK2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078709</commentid>
    <comment_count>1</comment_count>
      <attachid>249075</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-03-19 18:39:43 -0700</bug_when>
    <thetext>Created attachment 249075
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078713</commentid>
    <comment_count>2</comment_count>
      <attachid>249075</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-03-19 18:49:14 -0700</bug_when>
    <thetext>Comment on attachment 249075
Proposed patch

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

&gt; Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.h:31
&gt; +#include &lt;wtf/RefCounted.h&gt;

why?

&gt; Source/WebCore/platform/graphics/MediaPlaybackTargetPicker.h:32
&gt; +#include &lt;wtf/RefPtr.h&gt;

why?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:103
&gt; +    m_deviceChangeTimer.stop();
&gt; +    m_deviceChangeTimer.startOneShot(0);

are both of these necessary?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:112
&gt; +        [m_devicePickerMenuController.get() addObserver:m_devicePickerMenuControllerDelegate.get() forKeyPath:externalOutputDeviceAvailableKeyName options:NSKeyValueObservingOptionNew context:nullptr];

no .get()s throughout here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078734</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-03-19 20:53:28 -0700</bug_when>
    <thetext>Committed r181777: http://trac.webkit.org/changeset/181777</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249075</attachid>
            <date>2015-03-19 18:39:43 -0700</date>
            <delta_ts>2015-03-19 20:53:41 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>wk1_patch_3.txt</filename>
            <type>text/plain</type>
            <size>68352</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTc3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE1LTAzLTE5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIE1vdmUgTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQyODg5CisKKyAgICAgICAgTW92ZSBXZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyUHJveHkgYW5kIHJlbmFtZSBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyCisgICAg
ICAgIGJvdGggV0syIGFuZCBXSzEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyUHJveHkuY3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHlNYWMuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eU1hYy5tbS4KKwogMjAxNS0wMy0xOSAgRW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxMDk1OTMpOiBDbGlja2luZyBhZnRlciBs
YXN0IGlubGluZSBlbGVtZW50IGNvdWxkIGNhdXNlIGEgY3Jhc2guCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
ODE3NDYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTI3MCw2ICsyNzAsMTAgQEAKIAkJMDc4RTA5NDcxN0QxNkUx
QzAwNDIwQUExIC8qIFJUQ1ZvaWRSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUJCMDE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDVm9pZFJl
cXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwNzhFMDk0QjE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9u
Tm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzhFMDk0ODE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHAgKi87IH07CiAJCTA3OEUwOTRDMTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1
ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzhFMDk0OTE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJlYW1BdWRpb0Rl
c3RpbmF0aW9uTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTA3OEU0M0Q5MUFCQjZDN0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3OEU0M0Q3MUFCQjZDN0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmNw
cCAqLzsgfTsKKwkJMDc4RTQzREExQUJCNkM3RTAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3OEU0M0Q4MUFCQjZDN0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDc4RTQz
REQxQUJCNkY2RjAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OEU0M0RCMUFCQjZG
NkYwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDc4RTQzREUxQUJCNkY2RjAw
MUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzhFNDNEQzFBQkI2RjZGMDAxQzJGQTYg
LyogTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbSAqLzsgfTsKIAkJMDc5MjE2NTUxQUE1
NjBBQTAwQTNDMDQ5IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIxNjUzMUFBNTYwQUEw
MEEzQzA0OSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc5NDE3OTExNjZFODU1RjAw
OTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzk0MTc4RjE2NkU4NTVGMDA5NDE2QzIgLyogSW5iYW5kVGV4
dFRyYWNrLmNwcCAqLzsgfTsKIAkJMDc5NDE3OTIxNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRl
eHRUcmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc5NDE3OTAxNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5oICovOyB9OwpAQCAt
NzI3Myw2ICs3Mjc3LDEwIEBACiAJCTA3OEUwOTQ4MTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzhFMDk0OTE3RDE3MDk2MDA0MjBBQTEgLyogTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3OEUwOTRBMTdEMTcwOTYwMDQyMEFBMSAvKiBNZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNZWRpYVN0cmVhbUF1ZGlv
RGVzdGluYXRpb25Ob2RlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc4RTQz
RDcxQUJCNkM3RTAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OEU0M0Q4MUFCQjZDN0UwMDFD
MkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDc4RTQzREIxQUJCNkY2RjAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlck1hYy5oOyBwYXRoID0gb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3OEU0M0RDMUFCQjZG
NkYwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1h
Yy5tbTsgcGF0aCA9IG9iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc5MjE2NTMxQUE1NjBBQTAwQTNDMDQ5IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oOyBwYXRoID0gZ3JhcGhpY3Mv
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzk0MTc4RjE2NkU4NTVGMDA5NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluYmFuZFRleHRUcmFjay5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3OTQxNzkwMTY2RTg1NUYwMDk0MTZDMiAv
KiBJbmJhbmRUZXh0VHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5i
YW5kVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDY5MSw2ICsx
NDY5OSw5IEBACiAJCQkJMDdFOUUxMkQxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFkYXRh
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovLAogCQkJCTA3QjQ0MkQ0MTY2QzcwQjAwMDU1NkNBRCAv
KiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCAqLywKIAkJCQkwN0I0NDJENTE2NkM3MEIw
MDA1NTZDQUQgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oICovLAorCQkJCTA3OEU0M0RC
MUFCQjZGNkYwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLmggKi8sCisJ
CQkJMDc4RTQzREMxQUJCNkY2RjAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJN
YWMubW0gKi8sCisJCQkJMDdFM0RGRDIxQTlFNzhBNTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tU
YXJnZXRNYWMubW0gKi8sCiAJCQkJMDc2RjBEMDkxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgKi8sCiAJCQkJMDc2RjBEMEExMkI4MTkyNzAwQzI2
QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovLAogCQkJCUNENjQxRUJE
MTgxOUIzNTkwMEVFNEM0MSAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwICovLApAQCAtMjA1
NjYsNyArMjA1NzcsNiBAQAogCQlCMjc1MzU0OTBCMDUzODE0MDAyQ0U2NEYgLyogbWFjICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkwN0UzREZEMjFBOUU3
OEE1MDA3NjRDQTggLyogTWVkaWFQbGF5YmFja1RhcmdldE1hYy5tbSAqLywKIAkJCQlFREUzQTRG
RjBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMuaCAqLywKIAkJCQlCMjc1MzU0QTBCMDUzODE0
MDAyQ0U2NEYgLyogQ29sb3JNYWMubW0gKi8sCiAJCQkJMzdDMjM2MEUxMDk3RUU3NzAwRUY5Rjcy
IC8qIENvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAgKi8sCkBAIC0yMDczNiw2ICsyMDc0Niw4IEBA
CiAJCQkJMTQxREMwNEUxNjQ4MzRCOTAwMzcxRTVBIC8qIExheW91dFNpemUuaCAqLywKIAkJCQk2
QzU2OENBRTE5REFGRUEwMDA0MzBDQTIgLyogTWFza0ltYWdlT3BlcmF0aW9uLmNwcCAqLywKIAkJ
CQk2QzU2OENBRjE5REFGRUEwMDA0MzBDQTIgLyogTWFza0ltYWdlT3BlcmF0aW9uLmggKi8sCisJ
CQkJMDc4RTQzRDcxQUJCNkM3RTAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIu
Y3BwICovLAorCQkJCTA3OEU0M0Q4MUFCQjZDN0UwMDFDMkZBNiAvKiBNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyLmggKi8sCiAJCQkJRTRCNDFFMEMwQ0JGOTBCRDAwQUYyRUNFIC8qIE1lZGlhUGxh
eWVyLmNwcCAqLywKIAkJCQlFNEI0MUUwRDBDQkY5MEJEMDBBRjJFQ0UgLyogTWVkaWFQbGF5ZXIu
aCAqLywKIAkJCQkwNzlGNUU0QjBGM0JFQkVBMDA1RTA3ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRl
LmggKi8sCkBAIC0yNjAzNCw2ICsyNjA0Niw3IEBACiAJCQkJQkMzQkU5OTQwRTlDMUM3QzAwODM1
NTg4IC8qIFJlbmRlclNjcm9sbGJhci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzQkU5OTUwRTlD
MUM3QzAwODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclBhcnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDM0JFOTk5MEU5QzFFNUQwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMDc4RTQzREQxQUJCNkY2RjAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ1OEZFNDBBMTU4OURGMEIwMDU2
MDlFNiAvKiBSZW5kZXJTZWFyY2hGaWVsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxMUE1NEYw
RjM5MjMzMTAwQzM3ODg0IC8qIFJlbmRlclNlbGVjdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCUFCMjQ3QTZEMEFGRDYzODMwMDNGQTVGRCAvKiBSZW5kZXJTbGlkZXIuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjY4ODQsNiArMjY4OTcsNyBAQAogCQkJCTMxNDAzNzlCMTI0QkVBN0YwMEFGNDBF
NCAvKiBXZWJDb3JlTW90aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM0RDlCQTcw
QjhDMTE3NTAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzVCNEMyNEQxNTA5MjM2QzAwQTZFRjM3IC8qIFdlYkNvcmVOU1VSTEV4dHJhcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMDc4RTQzREExQUJCNkM3RTAwMUMyRkE2IC8qIE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUREMDVGRTBEMEI4QkEzQzYwMDlB
Q0RGRSAvKiBXZWJDb3JlT2JqQ0V4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRURFQzk4MDMw
QUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
ODA4MTBGMTZGQ0VDREYwMEI4MEQwNyAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc0RlbGVnYXRl
LmggaW4gSGVhZGVycyAqLywKQEAgLTMwMTE3LDYgKzMwMTMxLDcgQEAKIAkJCQk3QzczRkIwNzE5
MUVGNDE3MDA3REUwNjEgLyogVXNlck1lc3NhZ2VIYW5kbGVyc05hbWVzcGFjZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQ0RGMzE3QjExRjhENjgzMDAzQzVCRjggLyogVXNlclR5cGluZ0dlc3R1
cmVJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M3NEQ0MzcxODgyM0IxOTAwRTVF
RDU3IC8qIFVUZXh0UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDc4RTQzREUxQUJC
NkY2RjAwMUMyRkE2IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3Qzc0RDQzMzE4ODIzQTkzMDBFNUVENTcgLyogVVRleHRQcm92aWRlckxhdGlu
MS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qzc0RDQzQjE4ODI0MDA0MDBFNUVENTcgLyogVVRl
eHRQcm92aWRlclVURjE2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFGQUZCRjE4MTVBNUZBNkUw
MDA4M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKQEAgLTMwMzExLDYgKzMw
MzI2LDcgQEAKIAkJCQkxQUI3RkM4MTBBOEI5MkVDMDBEOUQzN0IgLyogWFBhdGhTdGVwLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBQjdGQzgzMEE4QjkyRUMwMEQ5RDM3QiAvKiBYUGF0aFV0aWwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0ZDODUwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRo
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDc4RTQzRDkxQUJCNkM3RTAwMUMyRkE2IC8q
IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFCN0ZD
ODcwQThCOTJFQzAwRDlEMzdCIC8qIFhQYXRoVmFyaWFibGVSZWZlcmVuY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODUyMTdFMDIwQTVFQ0Q0NzAwREI4RDAwIC8qIFhTTEltcG9ydFJ1bGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJOTNGMTlCMDMwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFN0eWxl
U2hlZXRMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlci5jcHAJKHJldmlzaW9uIDE4MTc0NikJKGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHA6MTgxNzQ2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCIK
KworI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OldlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJQcm94eShDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KCZjbGll
bnQpCit7Cit9CisKK1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6fldlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSgpCit7CisgICAgbV9jbGllbnQgPSBudWxscHRyOwor
fQorCit2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6c2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wpCit7CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuOworfQorCit2b2lkIFdlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJQcm94eTo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkK
K3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm47Cit9CisKK3ZvaWQgV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5OjpzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFy
Z2V0cygpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19QTEFZQkFD
S19UQVJHRVQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmNwcAkod29ya2luZyBjb3B5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDQwICsyNCw0MCBAQAogICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
UHJveHkuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgiCiAKICNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCi1uYW1lc3BhY2UgV2ViS2l0IHsKK25h
bWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5OjpX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkoQ2xpZW50JiBjbGllbnQpCitNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyKENsaWVudCYgY2xp
ZW50KQogICAgIDogbV9jbGllbnQoJmNsaWVudCkKIHsKIH0KIAotV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclByb3h5Ojp+V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5KCkKK01l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6On5NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyKCkKIHsK
ICAgICBtX2NsaWVudCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5OjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgYm9vbCkKK3ZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6c2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyKGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wpCiB7CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuOwogfQogCi12b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eTo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3ZvaWQg
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJn
ZXRzKCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm47CiB9CiAKLXZv
aWQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5OjpzdG9wTW9uaXRvcmluZ1BsYXli
YWNrVGFyZ2V0cygpCit2b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OnN0b3BNb25pdG9y
aW5nUGxheWJhY2tUYXJnZXRzKCkKIHsKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm47CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyLmgJKHJldmlzaW9uIDE4MTc0NikJKGZyb20gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oOjE4MTc0NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlfaAorI2RlZmluZSBXZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlfaAorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVCkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGbG9hdFJlY3Q7CitjbGFz
cyBNZWRpYVBsYXliYWNrVGFyZ2V0OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViUGFnZVByb3h5OworCitjbGFzcyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkg
eworcHVibGljOgorICAgIGNsYXNzIENsaWVudCB7CisgICAgcHJvdGVjdGVkOgorICAgICAgICB2
aXJ0dWFsIH5DbGllbnQoKSB7IH0KKworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZENob29zZVBsYXliYWNrVGFyZ2V0KGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXQmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWls
YWJsZURpZENoYW5nZShib29sKSA9IDA7CisKKyAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCk7Cisg
ICAgfTsKKworICAgIHZpcnR1YWwgfldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSgp
OworCisgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLCBib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRpbmdNb25pdG9y
aW5nUGxheWJhY2tUYXJnZXRzKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BNb25pdG9yaW5nUGxh
eWJhY2tUYXJnZXRzKCk7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBXZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyUHJveHkoQ2xpZW50Jik7CisKKyAgICBDbGllbnQqIG1fY2xpZW50Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKQorCisjZW5kaWYgLy8gV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
clByb3h5X2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWJhY2tUYXJnZXRQaWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgJKHdvcmtpbmcgY29weSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclByb3h5X2gKLSNkZWZpbmUgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5X2gK
KyNpZm5kZWYgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcl9oCisjZGVmaW5lIE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJfaAogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkK
IApAQCAtMzIsMTUgKzMyLDExIEBACiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJn
ZXQ7Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQYWdlUHJveHk7CiAKLWNs
YXNzIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSB7CitjbGFzcyBNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyIHsKIHB1YmxpYzoKICAgICBjbGFzcyBDbGllbnQgewogICAgIHByb3Rl
Y3RlZDoKQEAgLTUzLDIwICs0OSwyMCBAQCBwdWJsaWM6CiAgICAgICAgIHZvaWQgaW52YWxpZGF0
ZSgpOwogICAgIH07CiAKLSAgICB2aXJ0dWFsIH5XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
UHJveHkoKTsKKyAgICB2aXJ0dWFsIH5NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyKCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYsIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydGluZ01vbml0b3JpbmdQbGF5
YmFja1RhcmdldHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcE1vbml0b3JpbmdQbGF5YmFja1Rh
cmdldHMoKTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFdlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eShDbGllbnQmKTsKKyAgICBleHBsaWNpdCBNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyKENsaWVudCYpOwogCiAgICAgQ2xpZW50KiBtX2NsaWVudDsKIH07CiAKLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKIAotI2VuZGlmIC8vIFdlYk1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJQcm94eV9oCisjZW5kaWYgLy8gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcl9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlck1hYy5oCShyZXZpc2lvbiAxODE3NDYpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLmg6MTgxNzQ2
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQ
cm94eU1hY19oCisjZGVmaW5lIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hY19o
CisKKyNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9T
KQorCisjaW1wb3J0ICJXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCIKKyNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworT0JKQ19D
TEFTUyBBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVyOworT0JKQ19DTEFTUyBXZWJB
Vk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVySGVscGVyOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjIGZpbmFs
IDogcHVibGljIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKTsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMo
KTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclByb3h5TWFjPiBjcmVhdGUoV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5OjpD
bGllbnQmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IHN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpIG92ZXJyaWRlOworICAgIAor
ICAgIHZvaWQgYXZhaWxhYmxlRGV2aWNlc0RpZENoYW5nZSgpOworICAgIHZvaWQgY3VycmVudERl
dmljZURpZENoYW5nZSgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFdlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJQcm94eU1hYyhXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6
OkNsaWVudCYpOworCisgICAgQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlciAqZGV2
aWNlUGlja2VyKCk7CisgICAgdm9pZCBvdXRwdXRlRGV2aWNlQXZhaWxhYmlsaXR5Q2hhbmdlZFRp
bWVyRmlyZWQoKTsKKworICAgIFJldGFpblB0cjxBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250
cm9sbGVyPiBtX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyOworICAgIFJldGFpblB0cjxXZWJB
Vk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVySGVscGVyPiBtX2RldmljZVBpY2tlck1l
bnVDb250cm9sbGVyRGVsZWdhdGU7CisgICAgUnVuTG9vcDo6VGltZXI8V2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5TWFjPiBtX2RldmljZUNoYW5nZVRpbWVyOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUKQorCisjZW5kaWYgLy8gV2ViQ29udGV4dE1lbnVQcm94eU1hY19oCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5o
CSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDI4ICsyMywyOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjX2gK
LSNkZWZpbmUgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjX2gKKyNpZm5kZWYg
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hY19oCisjZGVmaW5lIE1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJNYWNfaAogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYg
IVBMQVRGT1JNKElPUykKIAotI2ltcG9ydCAiV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5LmgiCisjaW1wb3J0ICJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyLmgiCiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIE9CSkNfQ0xBU1Mg
QVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgV2ViQVZPdXRw
dXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckhlbHBlcjsKIAotbmFtZXNwYWNlIFdlYktpdCB7
CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eU1hYyBmaW5hbCA6IHB1YmxpYyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJv
eHkgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eU1hYyk7CitjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjIGZpbmFsIDog
cHVibGljIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMpOwogcHVibGljOgotICAgIHZpcnR1YWwg
fldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYygpOworICAgIHZpcnR1YWwgfk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMoKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjPiBjcmVhdGUoV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5OjpDbGllbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM+IGNyZWF0
ZShNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyOjpDbGllbnQmKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgYm9v
bCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihj
b25zdCBGbG9hdFJlY3QmLCBib29sKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRp
bmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkgb3ZlcnJpZGU7CiAgICAgCkBAIC01Miwx
NCArNTIsMTQgQEAgcHVibGljOgogICAgIHZvaWQgY3VycmVudERldmljZURpZENoYW5nZSgpOwog
CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94
eU1hYyhXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OkNsaWVudCYpOworICAgIGV4
cGxpY2l0IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMoTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlcjo6Q2xpZW50Jik7CiAKICAgICBBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVy
ICpkZXZpY2VQaWNrZXIoKTsKICAgICB2b2lkIG91dHB1dGVEZXZpY2VBdmFpbGFiaWxpdHlDaGFu
Z2VkVGltZXJGaXJlZCgpOwogCiAgICAgUmV0YWluUHRyPEFWT3V0cHV0RGV2aWNlUGlja2VyTWVu
dUNvbnRyb2xsZXI+IG1fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXI7CiAgICAgUmV0YWluUHRy
PFdlYkFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJIZWxwZXI+IG1fZGV2aWNlUGlj
a2VyTWVudUNvbnRyb2xsZXJEZWxlZ2F0ZTsKLSAgICBSdW5Mb29wOjpUaW1lcjxXZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM+IG1fZGV2aWNlQ2hhbmdlVGltZXI7CisgICAgUnVu
TG9vcDo6VGltZXI8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYz4gbV9kZXZpY2VDaGFuZ2VU
aW1lcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCShyZXZp
c2lvbiAxODE3NDYpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLm1tOjE4MTc0NikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxODggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eU1hYy5oIgorCisjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYg
IVBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWT3V0cHV0RGV2aWNlUGlj
a2VyQ29udGV4dC5oPgorI2ltcG9ydCA8QVZLaXQvQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29u
dHJvbGxlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvTWVkaWFQbGF5YmFja1RhcmdldC5oPgorI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5o
PgorI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CisjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgor
Cit0eXBlZGVmIEFWT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dCBBVk91dHB1dERldmljZVBpY2tl
ckNvbnRleHRUeXBlOwordHlwZWRlZiBBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVy
IEFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJUeXBlOworCitTT0ZUX0xJTktfRlJB
TUVXT1JLX09QVElPTkFMKEFWRm91bmRhdGlvbikKK1NPRlRfTElOS19GUkFNRVdPUktfT1BUSU9O
QUwoQVZLaXQpCisKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWT3V0cHV0RGV2aWNl
UGlja2VyQ29udGV4dCkKK1NPRlRfTElOS19DTEFTUyhBVktpdCwgQVZPdXRwdXREZXZpY2VQaWNr
ZXJNZW51Q29udHJvbGxlcikKK1NPRlRfTElOS19DTEFTUyhBVktpdCwgQVZPdXRwdXREZXZpY2VQ
aWNrZXJEZWxlZ2F0ZSkKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworc3RhdGljIE5TU3Ry
aW5nICpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZUtleU5hbWUgPSBAImV4dGVybmFsT3V0
cHV0RGV2aWNlQXZhaWxhYmxlIjsKK3N0YXRpYyBOU1N0cmluZyAqZXh0ZXJuYWxPdXRwdXREZXZp
Y2VQaWNrZWRLZXlOYW1lID0gQCJleHRlcm5hbE91dHB1dERldmljZVBpY2tlZCI7CisKK0BpbnRl
cmZhY2UgV2ViQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckhlbHBlciA6IE5TT2Jq
ZWN0IHsKKyAgICBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMqIG1fY2FsbGJh
Y2s7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENhbGxiYWNrOihXZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyUHJveHlNYWMqKWNhbGxiYWNrOworLSAodm9pZCljbGVhckNhbGxiYWNr
OworLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihpZClrZXlQYXRoIG9mT2JqZWN0Oihp
ZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9pZCAqKWNv
bnRleHQ7CitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGQ6OnVuaXF1ZV9wdHI8V2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjPiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyUHJveHlNYWM6OmNyZWF0ZShXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6
OkNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjPihuZXcgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclByb3h5TWFjKGNsaWVudCkpOworfQorCitXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
UHJveHlNYWM6OldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYyhXZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OkNsaWVudCYgY2xpZW50KQorICAgIDogV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5KGNsaWVudCkKKyAgICAsIG1fZGV2aWNlUGlja2VyTWVu
dUNvbnRyb2xsZXJEZWxlZ2F0ZShhZG9wdE5TKFtbV2ViQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51
Q29udHJvbGxlckhlbHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlzXSkpCisgICAgLCBt
X2RldmljZUNoYW5nZVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6b3V0cHV0ZURldmljZUF2YWlsYWJpbGl0eUNoYW5nZWRU
aW1lckZpcmVkKQoreworfQorCitXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6
On5XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMoKQoreworICAgIG1fZGV2aWNl
Q2hhbmdlVGltZXIuc3RvcCgpOworICAgIFttX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyRGVs
ZWdhdGUgY2xlYXJDYWxsYmFja107CisKKyAgICBpZiAobV9kZXZpY2VQaWNrZXJNZW51Q29udHJv
bGxlcikgeworICAgICAgICBbbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlci5nZXQoKSByZW1v
dmVPYnNlcnZlcjptX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCkgZm9y
S2V5UGF0aDpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZUtleU5hbWVdOworICAgICAgICBb
bV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlci5nZXQoKSByZW1vdmVPYnNlcnZlcjptX2Rldmlj
ZVBpY2tlck1lbnVDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpleHRlcm5hbE91
dHB1dERldmljZVBpY2tlZEtleU5hbWVdOworICAgICAgICBtX2RldmljZVBpY2tlck1lbnVDb250
cm9sbGVyID0gbmlsOworICAgIH0KK30KKwordm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyUHJveHlNYWM6Om91dHB1dGVEZXZpY2VBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJGaXJlZCgp
Cit7CisgICAgaWYgKCFtX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyIHx8ICFtX2NsaWVudCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKGRldmljZVBpY2tlcigpLmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxh
YmxlKTsKK30KKwordm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OmF2
YWlsYWJsZURldmljZXNEaWRDaGFuZ2UoKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fZGV2aWNlQ2hhbmdlVGltZXIuc3RvcCgpOworICAgIG1fZGV2aWNl
Q2hhbmdlVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCitBVk91dHB1dERldmljZVBpY2tlck1l
bnVDb250cm9sbGVyVHlwZSAqV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpk
ZXZpY2VQaWNrZXIoKQoreworICAgIGlmICghbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlcikg
eworICAgICAgICBSZXRhaW5QdHI8QVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0VHlwZT4gY29u
dGV4dCA9IGFkb3B0TlMoW1tnZXRBVk91dHB1dERldmljZVBpY2tlckNvbnRleHRDbGFzcygpIGFs
bG9jXSBpbml0XSk7CisgICAgICAgIG1fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIgPSBhZG9w
dE5TKFtbZ2V0QVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckNsYXNzKCkgYWxsb2Nd
IGluaXRXaXRoT3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dDpjb250ZXh0LmdldCgpXSk7CisKKyAg
ICAgICAgW21fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9k
ZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckRlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6ZXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGVLZXlOYW1lIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2Vydmlu
Z09wdGlvbk5ldyBjb250ZXh0Om51bGxwdHJdOworICAgICAgICBbbV9kZXZpY2VQaWNrZXJNZW51
Q29udHJvbGxlci5nZXQoKSBhZGRPYnNlcnZlcjptX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVy
RGVsZWdhdGUuZ2V0KCkgZm9yS2V5UGF0aDpleHRlcm5hbE91dHB1dERldmljZVBpY2tlZEtleU5h
bWUgb3B0aW9uczpOU0tleVZhbHVlT2JzZXJ2aW5nT3B0aW9uTmV3IGNvbnRleHQ6bnVsbHB0cl07
CisKKyAgICAgICAgaWYgKGRldmljZVBpY2tlcigpLmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxh
YmxlKQorICAgICAgICAgICAgYXZhaWxhYmxlRGV2aWNlc0RpZENoYW5nZSgpOworICAgIH0KKwor
ICAgIHJldHVybiBtX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyLmdldCgpOworfQorCit2b2lk
IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6c2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgbG9jYXRpb24sIGJvb2wpCit7CisgICAg
aWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgW2RldmljZVBpY2tlcigpIHNo
b3dNZW51Rm9yUmVjdDpsb2NhdGlvbiBhcHBlYXJhbmNlTmFtZTpOU0FwcGVhcmFuY2VOYW1lVmli
cmFudExpZ2h0XTsKK30KKwordm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlN
YWM6OmN1cnJlbnREZXZpY2VEaWRDaGFuZ2UoKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LT5kaWRDaG9vc2VQbGF5YmFja1RhcmdldChXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0KFtkZXZpY2VQaWNrZXIoKSBvdXRwdXREZXZpY2VQaWNr
ZXJDb250ZXh0XSkpOworfQorCit2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94
eU1hYzo6c3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKKyAgICBkZXZpY2VQ
aWNrZXIoKTsKK30KKwordm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6
OnN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250
cm9sbGVySGVscGVyCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDYWxsYmFjazooV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKiljYWxsYmFjaworeworICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgbV9jYWxsYmFjayA9
IGNhbGxiYWNrOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpY2xlYXJDYWxsYmFj
aworeworICAgIG1fY2FsbGJhY2sgPSBuaWw7Cit9CisKKy0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9y
S2V5UGF0aDooaWQpa2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9u
YXJ5ICopY2hhbmdlIGNvbnRleHQ6KHZvaWQgKiljb250ZXh0Cit7CisgICAgaWYgKCFtX2NhbGxi
YWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIVtrZXlQYXRoIGlzRXF1YWxUb1N0cmlu
ZzpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZUtleU5hbWVdICYmICFba2V5UGF0aCBpc0Vx
dWFsVG9TdHJpbmc6ZXh0ZXJuYWxPdXRwdXREZXZpY2VQaWNrZWRLZXlOYW1lXSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUmV0YWluUHRyPFdlYkFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRy
b2xsZXJIZWxwZXI+IHN0cm9uZ1NlbGYgPSBzZWxmOworICAgIFJldGFpblB0cjxOU1N0cmluZz4g
c3Ryb25nS2V5UGF0aCA9IGtleVBhdGg7CisgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nU2Vs
Ziwgc3Ryb25nS2V5UGF0aF0geworICAgICAgICBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
UHJveHlNYWMqIGNhbGxiYWNrID0gc3Ryb25nU2VsZi0+bV9jYWxsYmFjazsKKyAgICAgICAgaWYg
KCFjYWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoW3N0cm9uZ0tl
eVBhdGggaXNFcXVhbFRvU3RyaW5nOmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlS2V5TmFt
ZV0pCisgICAgICAgICAgICBjYWxsYmFjay0+YXZhaWxhYmxlRGV2aWNlc0RpZENoYW5nZSgpOwor
ICAgICAgICBlbHNlIGlmIChbc3Ryb25nS2V5UGF0aCBpc0VxdWFsVG9TdHJpbmc6ZXh0ZXJuYWxP
dXRwdXREZXZpY2VQaWNrZWRLZXlOYW1lXSkKKyAgICAgICAgICAgIGNhbGxiYWNrLT5jdXJyZW50
RGV2aWNlRGlkQ2hhbmdlKCk7CisgICAgfSk7Cit9CitAZW5kCisKKyNlbmRpZiAvLyBFTkFCTEUo
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCSh3b3JraW5nIGNvcHkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsy
NCw3IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyUHJveHlNYWMuaCIKKyNpbXBvcnQgIk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNYWMuaCIKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQ
TEFURk9STShJT1MpCiAKQEAgLTQ2LDM1ICs0NiwzNSBAQCBTT0ZUX0xJTktfQ0xBU1MoQVZGb3Vu
ZGF0aW9uLCBBVk91dHB1dERlCiBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWT3V0cHV0RGV2aWNl
UGlja2VyTWVudUNvbnRyb2xsZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZLaXQsIEFWT3V0cHV0RGV2
aWNlUGlja2VyRGVsZWdhdGUpCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIE5TU3RyaW5nICpleHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZUtleU5hbWUgPSBAImV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlIjsKIHN0YXRp
YyBOU1N0cmluZyAqZXh0ZXJuYWxPdXRwdXREZXZpY2VQaWNrZWRLZXlOYW1lID0gQCJleHRlcm5h
bE91dHB1dERldmljZVBpY2tlZCI7CiAKIEBpbnRlcmZhY2UgV2ViQVZPdXRwdXREZXZpY2VQaWNr
ZXJNZW51Q29udHJvbGxlckhlbHBlciA6IE5TT2JqZWN0IHsKLSAgICBXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHlNYWMqIG1fY2FsbGJhY2s7CisgICAgTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1hYyogbV9jYWxsYmFjazsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2Fs
bGJhY2s6KFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYyopY2FsbGJhY2s7Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDYWxsYmFjazooTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
ck1hYyopY2FsbGJhY2s7CiAtICh2b2lkKWNsZWFyQ2FsbGJhY2s7CiAtICh2b2lkKW9ic2VydmVW
YWx1ZUZvcktleVBhdGg6KGlkKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5T
RGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dDsKIEBlbmQKIAotbmFt
ZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0ZDo6dW5pcXVlX3B0cjxX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM+IFdlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eU1hYzo6Y3JlYXRlKFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94
eTo6Q2xpZW50JiBjbGllbnQpCitzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1hYz4gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYzo6Y3JlYXRlKE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXI6OkNsaWVudCYgY2xpZW50KQogewotICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjPihuZXcgV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKGNsaWVudCkpOworICAgIHJldHVybiBzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYz4obmV3IE1lZGlhUGxheWJhY2tU
YXJnZXRQaWNrZXJNYWMoY2xpZW50KSk7CiB9CiAKLVdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eU1hYzo6V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKFdlYk1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eTo6Q2xpZW50JiBjbGllbnQpCi0gICAgOiBXZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkoY2xpZW50KQorTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1hYzo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYyhNZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyOjpDbGllbnQmIGNsaWVudCkKKyAgICA6IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIo
Y2xpZW50KQogICAgICwgbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckRlbGVnYXRlKGFkb3B0
TlMoW1tXZWJBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVySGVscGVyIGFsbG9jXSBp
bml0V2l0aENhbGxiYWNrOnRoaXNdKSkKLSAgICAsIG1fZGV2aWNlQ2hhbmdlVGltZXIoUnVuTG9v
cDo6bWFpbigpLCB0aGlzLCAmV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpv
dXRwdXRlRGV2aWNlQXZhaWxhYmlsaXR5Q2hhbmdlZFRpbWVyRmlyZWQpCisgICAgLCBtX2Rldmlj
ZUNoYW5nZVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNYWM6Om91dHB1dGVEZXZpY2VBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJGaXJlZCkKIHsK
IH0KIAotV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjp+V2ViTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclByb3h5TWFjKCkKK01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM6
On5NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjKCkKIHsKICAgICBtX2RldmljZUNoYW5nZVRp
bWVyLnN0b3AoKTsKICAgICBbbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckRlbGVnYXRlIGNs
ZWFyQ2FsbGJhY2tdOwpAQCAtODYsNyArODYsNyBAQCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyUHJveHlNYWM6On5XCiAgICAgfQogfQogCi12b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eU1hYzo6b3V0cHV0ZURldmljZUF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lckZpcmVk
KCkKK3ZvaWQgTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYzo6b3V0cHV0ZURldmljZUF2YWls
YWJpbGl0eUNoYW5nZWRUaW1lckZpcmVkKCkKIHsKICAgICBpZiAoIW1fZGV2aWNlUGlja2VyTWVu
dUNvbnRyb2xsZXIgfHwgIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CkBAIC05NCw3ICs5NCw3
IEBAIHZvaWQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWEKICAgICBtX2NsaWVu
dC0+ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoZGV2aWNlUGlja2VyKCku
ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGUpOwogfQogCi12b2lkIFdlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJQcm94eU1hYzo6YXZhaWxhYmxlRGV2aWNlc0RpZENoYW5nZSgpCit2b2lk
IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM6OmF2YWlsYWJsZURldmljZXNEaWRDaGFuZ2Uo
KQogewogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMyw3ICsxMDMs
NyBAQCB2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hCiAgICAgbV9kZXZp
Y2VDaGFuZ2VUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLUFWT3V0cHV0RGV2aWNlUGlja2Vy
TWVudUNvbnRyb2xsZXJUeXBlICpXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6
OmRldmljZVBpY2tlcigpCitBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVyVHlwZSAq
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYzo6ZGV2aWNlUGlja2VyKCkKIHsKICAgICBpZiAo
IW1fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIpIHsKICAgICAgICAgUmV0YWluUHRyPEFWT3V0
cHV0RGV2aWNlUGlja2VyQ29udGV4dFR5cGU+IGNvbnRleHQgPSBhZG9wdE5TKFtbZ2V0QVZPdXRw
dXREZXZpY2VQaWNrZXJDb250ZXh0Q2xhc3MoKSBhbGxvY10gaW5pdF0pOwpAQCAtMTE5LDcgKzEx
OSw3IEBAIEFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJUeXBlICoKICAgICByZXR1
cm4gbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlci5nZXQoKTsKIH0KIAotdm9pZCBXZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGxvY2F0aW9uLCBib29sKQordm9pZCBNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTWFjOjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgRmxvYXRS
ZWN0JiBsb2NhdGlvbiwgYm9vbCkKIHsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1
cm47CkBAIC0xMjcsMjcgKzEyNywyNyBAQCB2b2lkIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eU1hCiAgICAgW2RldmljZVBpY2tlcigpIHNob3dNZW51Rm9yUmVjdDpsb2NhdGlvbiBh
cHBlYXJhbmNlTmFtZTpOU0FwcGVhcmFuY2VOYW1lVmlicmFudExpZ2h0XTsKIH0KIAotdm9pZCBX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OmN1cnJlbnREZXZpY2VEaWRDaGFu
Z2UoKQordm9pZCBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTWFjOjpjdXJyZW50RGV2aWNlRGlk
Q2hhbmdlKCkKIHsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X2NsaWVudC0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1Rh
cmdldChbZGV2aWNlUGlja2VyKCkgb3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dF0pKTsKKyAgICBt
X2NsaWVudC0+ZGlkQ2hvb3NlUGxheWJhY2tUYXJnZXQoTWVkaWFQbGF5YmFja1RhcmdldChbZGV2
aWNlUGlja2VyKCkgb3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dF0pKTsKIH0KIAotdm9pZCBXZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXli
YWNrVGFyZ2V0cygpCit2b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM6OnN0YXJ0aW5n
TW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCiB7CiAgICAgZGV2aWNlUGlja2VyKCk7CiB9CiAK
LXZvaWQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpzdG9wTW9uaXRvcmlu
Z1BsYXliYWNrVGFyZ2V0cygpCit2b2lkIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWM6OnN0
b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKIHsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJBVk91dHB1
dERldmljZVBpY2tlck1lbnVDb250cm9sbGVySGVscGVyCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDYWxsYmFjazooV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKiljYWxsYmFj
aworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ2FsbGJhY2s6KE1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNYWMqKWNhbGxiYWNrCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAg
ICAgICAgIHJldHVybiBuaWw7CkBAIC0xNjQsNiArMTY0LDEwIEBAIC0gKHZvaWQpY2xlYXJDYWxs
YmFjawogCiAtICh2b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KGlkKWtleVBhdGggb2ZPYmpl
Y3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lk
ICopY29udGV4dAogeworICAgIFVOVVNFRF9QQVJBTShvYmplY3QpOworICAgIFVOVVNFRF9QQVJB
TShjaGFuZ2UpOworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKKwogICAgIGlmICghbV9jYWxs
YmFjaykKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzMsNyArMTc3LDcgQEAgLSAodm9pZClvYnNl
cnZlVmFsdWVGb3JLZXlQYXRoOihpZClrZXlQYQogICAgIFJldGFpblB0cjxXZWJBVk91dHB1dERl
dmljZVBpY2tlck1lbnVDb250cm9sbGVySGVscGVyPiBzdHJvbmdTZWxmID0gc2VsZjsKICAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IHN0cm9uZ0tleVBhdGggPSBrZXlQYXRoOwogICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ0tleVBhdGhdIHsKLSAgICAgICAgV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKiBjYWxsYmFjayA9IHN0cm9uZ1NlbGYtPm1fY2Fs
bGJhY2s7CisgICAgICAgIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMqIGNhbGxiYWNrID0g
c3Ryb25nU2VsZi0+bV9jYWxsYmFjazsKICAgICAgICAgaWYgKCFjYWxsYmFjaykKICAgICAgICAg
ICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxNzc0KQorKysgU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTUt
MDMtMTkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
W01hY10gTW92ZSBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI4ODkKKworICAgICAgICBNb3ZlIFdlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSB0byBXZWJDb3JlIHNvIGl0IGNhbiBiZSB1c2Vk
IGJ5CisgICAgICAgIGJvdGggV0syIGFuZCBXSzEuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJv
eHkuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZXZpY2VQaWNrZXJQcm94eSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFn
ZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1t
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUGxheWJhY2tUYXJnZXRQ
aWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclByb3h5TWFjLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMubW06IFJlbW92ZWQuCisgICAgICAgICogV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTAzLTE5ICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdW01hY10gRnVsbHNjcmVlbiBh
bmltYXRpb25zIHdpdGggbWlzbWF0Y2hlZCBhc3BlY3QgcmF0aW9zIGFyZSAic3F1aXNoZWQiLgpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lvbiAxODE3NDYp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0jaW5jbHVkZSAiV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0
UGlja2VyLmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMzE5LDcgKzMxOSw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VCkgJiYgIVBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk+IGNyZWF0ZVBsYXliYWNrVGFyZ2V0UGlja2VyKFdl
YlBhZ2VQcm94eSopID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPiBjcmVhdGVQbGF5YmFja1RhcmdldFBpY2tlcihXZWJQ
YWdlUHJveHkqKSA9IDA7CiAjZW5kaWYKIAogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJv
eHkuY3BwCShyZXZpc2lvbiAxODE3NDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oIgotCi0jaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJQcm94eTo6V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5KENs
aWVudCYgY2xpZW50KQotICAgIDogbV9jbGllbnQoJmNsaWVudCkKLXsKLX0KLQotV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5Ojp+V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5KCkKLXsKLSAgICBtX2NsaWVudCA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgV2ViTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclByb3h5OjpzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgYm9vbCkKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm47Ci19Ci0KLXZvaWQgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5Ojpz
dGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKQotewotICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybjsKLX0KLQotdm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyUHJveHk6OnN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkKLXsKLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm47Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclByb3h5LmgJKHJldmlzaW9uIDE4MTc0NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHlfaAotI2RlZmluZSBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
UHJveHlfaAotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci1jbGFzcyBGbG9hdFJlY3Q7Ci1jbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0
OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViUGFnZVByb3h5OwotCi1jbGFz
cyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkgewotcHVibGljOgotICAgIGNsYXNz
IENsaWVudCB7Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0K
LQotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZENob29zZVBsYXliYWNrVGFy
Z2V0KGNvbnN0IFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQmKSA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShib29sKSA9
IDA7Ci0KLSAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCk7Ci0gICAgfTsKLQotICAgIHZpcnR1YWwg
fldlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eSgpOwotCi0gICAgdmlydHVhbCB2b2lk
IHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBib29s
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRpbmdNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7
Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7Ci0KLXBy
b3RlY3RlZDoKLSAgICBleHBsaWNpdCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHko
Q2xpZW50Jik7Ci0KLSAgICBDbGllbnQqIG1fY2xpZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotCi0j
ZW5kaWYgLy8gV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5X2gKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxODE3NDYpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTYwOSw3ICs1NjA5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUF1dG9GaWxs
QnV0dG9uQwogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRG
T1JNKElPUykKIAotV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5JiBXZWJQYWdlUHJv
eHk6OmRldmljZVBpY2tlclByb3h5KCkKK1dlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXImIFdlYlBhZ2VQcm94eTo6ZGV2aWNlUGlja2VyUHJveHkoKQogewogICAgIGlmICghbV9wbGF5
YmFja1RhcmdldFBpY2tlcikKICAgICAgICAgbV9wbGF5YmFja1RhcmdldFBpY2tlciA9IG1fcGFn
ZUNsaWVudC5jcmVhdGVQbGF5YmFja1RhcmdldFBpY2tlcih0aGlzKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDE4MTc0NikKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTEy
LDcgKzExMiw3IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpICYmICFQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiV2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
Lmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIEFQSSB7CkBAIC0yNjMsNyArMjYzLDcgQEAgY2xhc3Mg
V2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SQogICAgICwgcHVibGljIFdlYkNvbG9y
UGlja2VyOjpDbGllbnQKICNlbmRpZgogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpICYmICFQTEFURk9STShJT1MpCi0gICAgLCBwdWJsaWMgV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5OjpDbGllbnQKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyOjpDbGllbnQKICNlbmRpZgogICAgICwgcHVibGljIFdlYlBvcHVwTWVudVBy
b3h5OjpDbGllbnQKICAgICAsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgpAQCAtMTAxMCwx
MiArMTAxMCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhW
YWx1ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNv
bnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgc2hvdWxkU2FtcGxlKTsKIAogI2lmIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCi0gICAgV2ViTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclByb3h5JiBkZXZpY2VQaWNrZXJQcm94eSgpOworICAgIFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXImIGRldmljZVBpY2tlclByb3h5KCk7CiAgICAgdm9p
ZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgYm9v
bCBoYXNWaWRlbyk7CiAgICAgdm9pZCBzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMo
KTsKICAgICB2b2lkIHN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCk7CiAKLSAgICAvLyBX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk6OkNsaWVudAorICAgIC8vIFdlYkNvcmU6
Ok1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXI6OkNsaWVudAogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aG9vc2VQbGF5YmFja1RhcmdldChjb25zdCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Jikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC0xNjg2LDcgKzE2ODYsNyBAQCBw
cml2YXRlOgogICAgIFZlY3Rvcjx1aW50NjRfdD4gbV9uZXh0Vmlld1N0YXRlQ2hhbmdlQ2FsbGJh
Y2tzOwogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JN
KElPUykKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclBy
b3h5PiBtX3BsYXliYWNrVGFyZ2V0UGlja2VyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyPiBtX3BsYXliYWNrVGFyZ2V0UGlja2VyOwogI2Vu
ZGlmCiAKICAgICBib29sIG1faXNQbGF5aW5nQXVkaW87CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxODE3NDYpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFdlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eT4gY3JlYXRlUGxheWJhY2tUYXJnZXRQaWNrZXIo
V2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcj4gY3JlYXRlUGxheWJhY2tUYXJnZXRQaWNr
ZXIoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQkocmV2aXNpb24gMTgx
NzQ2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQko
d29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQAogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotI2luY2x1ZGUgIldlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eU1hYy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlck1hYy5oPgogI2VuZGlmCiAKIEBpbnRlcmZhY2UgTlNBcHBsaWNhdGlvbiAoV2ViTlNBcHBs
aWNhdGlvbkRldGFpbHMpCkBAIC03OTMsOSArNzkzLDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6
c2hvd1BsYXRmb3JtQ29udGV4dAogfQogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkKLXN0ZDo6dW5pcXVlX3B0cjxXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHk+
IFBhZ2VDbGllbnRJbXBsOjpjcmVhdGVQbGF5YmFja1RhcmdldFBpY2tlcihXZWJQYWdlUHJveHkq
IHBhZ2UpCitzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
cj4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBsYXliYWNrVGFyZ2V0UGlja2VyKFdlYlBhZ2VQcm94
eSogcGFnZSkKIHsKLSAgICByZXR1cm4gV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5
TWFjOjpjcmVhdGUoKnBhZ2UpOworICAgIHJldHVybiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
TWFjOjpjcmVhdGUoKnBhZ2UpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyUHJveHlNYWMuaAkocmV2aXNpb24gMTgxNzQ2KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWNfaAotI2RlZmluZSBXZWJNZWRpYVBsYXliYWNr
VGFyZ2V0UGlja2VyUHJveHlNYWNfaAotCi0jaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVCkgJiYgIVBMQVRGT1JNKElPUykKLQotI2ltcG9ydCAiV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5LmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+Ci0KLU9CSkNfQ0xBU1MgQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJv
bGxlcjsKLU9CSkNfQ0xBU1MgV2ViQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckhl
bHBlcjsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eU1hYyBmaW5hbCA6IHB1YmxpYyBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlj
a2VyUHJveHkgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eU1hYyk7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5TWFjKCk7Ci0KLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFdl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYz4gY3JlYXRlKFdlYk1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJQcm94eTo6Q2xpZW50Jik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGJvb2wpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcE1vbml0b3JpbmdQbGF5YmFja1Rhcmdl
dHMoKSBvdmVycmlkZTsKLSAgICAKLSAgICB2b2lkIGF2YWlsYWJsZURldmljZXNEaWRDaGFuZ2Uo
KTsKLSAgICB2b2lkIGN1cnJlbnREZXZpY2VEaWRDaGFuZ2UoKTsKLQotcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMoV2ViTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclByb3h5OjpDbGllbnQmKTsKLQotICAgIEFWT3V0cHV0RGV2aWNlUGlj
a2VyTWVudUNvbnRyb2xsZXIgKmRldmljZVBpY2tlcigpOwotICAgIHZvaWQgb3V0cHV0ZURldmlj
ZUF2YWlsYWJpbGl0eUNoYW5nZWRUaW1lckZpcmVkKCk7Ci0KLSAgICBSZXRhaW5QdHI8QVZPdXRw
dXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlcj4gbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxl
cjsKLSAgICBSZXRhaW5QdHI8V2ViQVZPdXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckhl
bHBlcj4gbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckRlbGVnYXRlOwotICAgIFJ1bkxvb3A6
OlRpbWVyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYz4gbV9kZXZpY2VDaGFu
Z2VUaW1lcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxF
KFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLQotI2VuZGlmIC8vIFdlYkNvbnRleHRNZW51UHJv
eHlNYWNfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9XZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMubW0JKHJl
dmlzaW9uIDE4MTc0NikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE4OCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJNZWRp
YVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMuaCIKLQotI2lmIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCi0KLSNpbXBvcnQgPEFWRm91bmRhdGlv
bi9BVk91dHB1dERldmljZVBpY2tlckNvbnRleHQuaD4KLSNpbXBvcnQgPEFWS2l0L0FWT3V0cHV0
RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXQuaD4KLSNpbXBvcnQgPFdl
YkNvcmUvU29mdExpbmtpbmcuaD4KLSNpbXBvcnQgPG9iamMvcnVudGltZS5oPgotI2ltcG9ydCA8
d3RmL01haW5UaHJlYWQuaD4KLQotdHlwZWRlZiBBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQg
QVZPdXRwdXREZXZpY2VQaWNrZXJDb250ZXh0VHlwZTsKLXR5cGVkZWYgQVZPdXRwdXREZXZpY2VQ
aWNrZXJNZW51Q29udHJvbGxlciBBVk91dHB1dERldmljZVBpY2tlck1lbnVDb250cm9sbGVyVHlw
ZTsKLQotU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChBVkZvdW5kYXRpb24pCi1TT0ZUX0xJ
TktfRlJBTUVXT1JLX09QVElPTkFMKEFWS2l0KQotCi1TT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0
aW9uLCBBVk91dHB1dERldmljZVBpY2tlckNvbnRleHQpCi1TT0ZUX0xJTktfQ0xBU1MoQVZLaXQs
IEFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIpCi1TT0ZUX0xJTktfQ0xBU1MoQVZL
aXQsIEFWT3V0cHV0RGV2aWNlUGlja2VyRGVsZWdhdGUpCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7Ci0KLXN0YXRpYyBOU1N0cmluZyAqZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVLZXlO
YW1lID0gQCJleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZSI7Ci1zdGF0aWMgTlNTdHJpbmcg
KmV4dGVybmFsT3V0cHV0RGV2aWNlUGlja2VkS2V5TmFtZSA9IEAiZXh0ZXJuYWxPdXRwdXREZXZp
Y2VQaWNrZWQiOwotCi1AaW50ZXJmYWNlIFdlYkFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRy
b2xsZXJIZWxwZXIgOiBOU09iamVjdCB7Ci0gICAgV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tl
clByb3h5TWFjKiBtX2NhbGxiYWNrOwotfQotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDYWxs
YmFjazooV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKiljYWxsYmFjazsKLS0g
KHZvaWQpY2xlYXJDYWxsYmFjazsKLS0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooaWQp
a2V5UGF0aCBvZk9iamVjdDooaWQpb2JqZWN0IGNoYW5nZTooTlNEaWN0aW9uYXJ5ICopY2hhbmdl
IGNvbnRleHQ6KHZvaWQgKiljb250ZXh0OwotQGVuZAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
c3RkOjp1bmlxdWVfcHRyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYz4gV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpjcmVhdGUoV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5OjpDbGllbnQmIGNsaWVudCkKLXsKLSAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYz4obmV3IFdlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYyhjbGllbnQpKTsKLX0KLQotV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
UHJveHlNYWMoV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5OjpDbGllbnQmIGNsaWVu
dCkKLSAgICA6IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eShjbGllbnQpCi0gICAg
LCBtX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyRGVsZWdhdGUoYWRvcHROUyhbW1dlYkFWT3V0
cHV0RGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJIZWxwZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJh
Y2s6dGhpc10pKQotICAgICwgbV9kZXZpY2VDaGFuZ2VUaW1lcihSdW5Mb29wOjptYWluKCksIHRo
aXMsICZXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6Om91dHB1dGVEZXZpY2VB
dmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJGaXJlZCkKLXsKLX0KLQotV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclByb3h5TWFjOjp+V2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFj
KCkKLXsKLSAgICBtX2RldmljZUNoYW5nZVRpbWVyLnN0b3AoKTsKLSAgICBbbV9kZXZpY2VQaWNr
ZXJNZW51Q29udHJvbGxlckRlbGVnYXRlIGNsZWFyQ2FsbGJhY2tdOwotCi0gICAgaWYgKG1fZGV2
aWNlUGlja2VyTWVudUNvbnRyb2xsZXIpIHsKLSAgICAgICAgW21fZGV2aWNlUGlja2VyTWVudUNv
bnRyb2xsZXIuZ2V0KCkgcmVtb3ZlT2JzZXJ2ZXI6bV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxl
ckRlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVL
ZXlOYW1lXTsKLSAgICAgICAgW21fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIuZ2V0KCkgcmVt
b3ZlT2JzZXJ2ZXI6bV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckRlbGVnYXRlLmdldCgpIGZv
cktleVBhdGg6ZXh0ZXJuYWxPdXRwdXREZXZpY2VQaWNrZWRLZXlOYW1lXTsKLSAgICAgICAgbV9k
ZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlciA9IG5pbDsKLSAgICB9Ci19Ci0KLXZvaWQgV2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjOjpvdXRwdXRlRGV2aWNlQXZhaWxhYmlsaXR5
Q2hhbmdlZFRpbWVyRmlyZWQoKQotewotICAgIGlmICghbV9kZXZpY2VQaWNrZXJNZW51Q29udHJv
bGxlciB8fCAhbV9jbGllbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LT5leHRl
cm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZShkZXZpY2VQaWNrZXIoKS5leHRlcm5h
bE91dHB1dERldmljZUF2YWlsYWJsZSk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlclByb3h5TWFjOjphdmFpbGFibGVEZXZpY2VzRGlkQ2hhbmdlKCkKLXsKLSAgICBpZiAo
IW1fY2xpZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2RldmljZUNoYW5nZVRpbWVyLnN0
b3AoKTsKLSAgICBtX2RldmljZUNoYW5nZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotQVZP
dXRwdXREZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlclR5cGUgKldlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eU1hYzo6ZGV2aWNlUGlja2VyKCkKLXsKLSAgICBpZiAoIW1fZGV2aWNlUGlj
a2VyTWVudUNvbnRyb2xsZXIpIHsKLSAgICAgICAgUmV0YWluUHRyPEFWT3V0cHV0RGV2aWNlUGlj
a2VyQ29udGV4dFR5cGU+IGNvbnRleHQgPSBhZG9wdE5TKFtbZ2V0QVZPdXRwdXREZXZpY2VQaWNr
ZXJDb250ZXh0Q2xhc3MoKSBhbGxvY10gaW5pdF0pOwotICAgICAgICBtX2RldmljZVBpY2tlck1l
bnVDb250cm9sbGVyID0gYWRvcHROUyhbW2dldEFWT3V0cHV0RGV2aWNlUGlja2VyTWVudUNvbnRy
b2xsZXJDbGFzcygpIGFsbG9jXSBpbml0V2l0aE91dHB1dERldmljZVBpY2tlckNvbnRleHQ6Y29u
dGV4dC5nZXQoKV0pOwotCi0gICAgICAgIFttX2RldmljZVBpY2tlck1lbnVDb250cm9sbGVyLmdl
dCgpIGFkZE9ic2VydmVyOm1fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQo
KSBmb3JLZXlQYXRoOmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlS2V5TmFtZSBvcHRpb25z
Ok5TS2V5VmFsdWVPYnNlcnZpbmdPcHRpb25OZXcgY29udGV4dDpudWxscHRyXTsKLSAgICAgICAg
W21fZGV2aWNlUGlja2VyTWVudUNvbnRyb2xsZXIuZ2V0KCkgYWRkT2JzZXJ2ZXI6bV9kZXZpY2VQ
aWNrZXJNZW51Q29udHJvbGxlckRlbGVnYXRlLmdldCgpIGZvcktleVBhdGg6ZXh0ZXJuYWxPdXRw
dXREZXZpY2VQaWNrZWRLZXlOYW1lIG9wdGlvbnM6TlNLZXlWYWx1ZU9ic2VydmluZ09wdGlvbk5l
dyBjb250ZXh0Om51bGxwdHJdOwotCi0gICAgICAgIGlmIChkZXZpY2VQaWNrZXIoKS5leHRlcm5h
bE91dHB1dERldmljZUF2YWlsYWJsZSkKLSAgICAgICAgICAgIGF2YWlsYWJsZURldmljZXNEaWRD
aGFuZ2UoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV9kZXZpY2VQaWNrZXJNZW51Q29udHJvbGxl
ci5nZXQoKTsKLX0KLQotdm9pZCBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6
OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGxvY2F0
aW9uLCBib29sKQotewotICAgIGlmICghbV9jbGllbnQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFtkZXZpY2VQaWNrZXIoKSBzaG93TWVudUZvclJlY3Q6bG9jYXRpb24gYXBwZWFyYW5jZU5hbWU6
TlNBcHBlYXJhbmNlTmFtZVZpYnJhbnRMaWdodF07Ci19Ci0KLXZvaWQgV2ViTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclByb3h5TWFjOjpjdXJyZW50RGV2aWNlRGlkQ2hhbmdlKCkKLXsKLSAgICBp
ZiAoIW1fY2xpZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NsaWVudC0+ZGlkQ2hvb3Nl
UGxheWJhY2tUYXJnZXQoV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldChbZGV2aWNlUGlja2Vy
KCkgb3V0cHV0RGV2aWNlUGlja2VyQ29udGV4dF0pKTsKLX0KLQotdm9pZCBXZWJNZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyUHJveHlNYWM6OnN0YXJ0aW5nTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0
cygpCi17Ci0gICAgZGV2aWNlUGlja2VyKCk7Ci19Ci0KLXZvaWQgV2ViTWVkaWFQbGF5YmFja1Rh
cmdldFBpY2tlclByb3h5TWFjOjpzdG9wTW9uaXRvcmluZ1BsYXliYWNrVGFyZ2V0cygpCi17Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi1AaW1wbGVtZW50YXRpb24gV2ViQVZPdXRwdXRE
ZXZpY2VQaWNrZXJNZW51Q29udHJvbGxlckhlbHBlcgotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q2FsbGJhY2s6KFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYyopY2FsbGJhY2sK
LXsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgIG1fY2FsbGJhY2sgPSBjYWxsYmFjazsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0t
ICh2b2lkKWNsZWFyQ2FsbGJhY2sKLXsKLSAgICBtX2NhbGxiYWNrID0gbmlsOwotfQotCi0tICh2
b2lkKW9ic2VydmVWYWx1ZUZvcktleVBhdGg6KGlkKWtleVBhdGggb2ZPYmplY3Q6KGlkKW9iamVj
dCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lkICopY29udGV4dAot
ewotICAgIGlmICghbV9jYWxsYmFjaykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFba2V5
UGF0aCBpc0VxdWFsVG9TdHJpbmc6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVLZXlOYW1l
XSAmJiAhW2tleVBhdGggaXNFcXVhbFRvU3RyaW5nOmV4dGVybmFsT3V0cHV0RGV2aWNlUGlja2Vk
S2V5TmFtZV0pCi0gICAgICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxXZWJBVk91dHB1dERl
dmljZVBpY2tlck1lbnVDb250cm9sbGVySGVscGVyPiBzdHJvbmdTZWxmID0gc2VsZjsKLSAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IHN0cm9uZ0tleVBhdGggPSBrZXlQYXRoOwotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3N0cm9uZ1NlbGYsIHN0cm9uZ0tleVBhdGhdIHsKLSAgICAgICAgV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjKiBjYWxsYmFjayA9IHN0cm9uZ1NlbGYtPm1fY2Fs
bGJhY2s7Ci0gICAgICAgIGlmICghY2FsbGJhY2spCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgaWYgKFtzdHJvbmdLZXlQYXRoIGlzRXF1YWxUb1N0cmluZzpleHRlcm5hbE91dHB1dERl
dmljZUF2YWlsYWJsZUtleU5hbWVdKQotICAgICAgICAgICAgY2FsbGJhY2stPmF2YWlsYWJsZURl
dmljZXNEaWRDaGFuZ2UoKTsKLSAgICAgICAgZWxzZSBpZiAoW3N0cm9uZ0tleVBhdGggaXNFcXVh
bFRvU3RyaW5nOmV4dGVybmFsT3V0cHV0RGV2aWNlUGlja2VkS2V5TmFtZV0pCi0gICAgICAgICAg
ICBjYWxsYmFjay0+Y3VycmVudERldmljZURpZENoYW5nZSgpOwotICAgIH0pOwotfQotQGVuZAot
Ci0jZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDE4MTc0NikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzYsMTAgKzc2LDYgQEAKIAkJMDBCOTY2MTkxOEUy
NUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwMEI5NjYxNzE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVu
dC5tbSAqLzsgfTsKIAkJMDBCOTY2MUExOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAwQjk2NjE4MThF
MjVBRTEwMENFMUY4OCAvKiBGaW5kQ2xpZW50LmggKi87IH07CiAJCTA3NkU4ODRFMUExM0NBREYw
MDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RTg4NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNv
bnRleHRNZW51Q2xpZW50LmggKi87IH07Ci0JCTA3OTIxNjRDMUFBNTUwMTkwMEEzQzA0OSAvKiBX
ZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjE2NDgxQUE1NEU5RDAwQTNDMDQ5IC8qIFdl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5jcHAgKi87IH07Ci0JCTA3OTIxNjREMUFB
NTUwMUYwMEEzQzA0OSAvKiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3OTIxNjQ5MUFBNTRF
OUQwMEEzQzA0OSAvKiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuaCAqLzsgfTsK
LQkJMDc5MjE2NTAxQUE1NTI4QTAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc5MjE2NEUxQUE1NTI4QTAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJQcm94eU1hYy5oICovOyB9OwotCQkwNzkyMTY1MTFBQTU1MjhBMDBBM0MwNDkgLyogV2ViTWVk
aWFQbGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc5MjE2NEYxQUE1NTI4QTAwQTNDMDQ5IC8qIFdlYk1l
ZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5tbSAqLzsgfTsKIAkJMEYwQzM2NTgxOEMw
NTFCQTAwRjYwN0Q3IC8qIFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDMzY1NzE4QzA1MUJBMDBGNjA3RDcg
LyogUmVtb3RlTGF5ZXJUcmVlSG9zdElPUy5tbSAqLzsgfTsKIAkJMEYwQzM2NUExOEMwNTU1ODAw
RjYwN0Q3IC8qIExheWVyUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEMzNjU5MThDMDU1NTgwMEY2MDdENyAvKiBMYXllclJl
cHJlc2VudGF0aW9uLmggKi87IH07CiAJCTBGMEMzNjVDMThDMDVDQTEwMEY2MDdENyAvKiBSZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQzM2NUIxOEMwNUNBMTAwRjYwN0Q3IC8qIFJlbW90
ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gKi87IH07CkBAIC0yMTY0LDEwICsyMTYw
LDYgQEAKIAkJMDBCOTY2MTgxOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmluZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzZFODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQ29udGV4dE1lbnVD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RTg4NEYxQTEzQ0JDNjAw
NUU5MEZDIC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRN
ZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3OTIxNjQ4MUFBNTRF
OUQwMEEzQzA0OSAvKiBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTWVkaWFQbGF5YmFja1RhcmdldFBp
Y2tlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc5MjE2NDkxQUE1
NEU5RDAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2Vy
UHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc5MjE2NEUxQUE1NTI4QTAw
QTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJv
eHlNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc5MjE2NEYxQUE1NTI4QTAw
QTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg2N0Q2QTVG
RTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFw
cEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkwODlDMTY2N0ZFODQx
MTU4QzAyQUFDMDcgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Quc3RyaW5nczsgbmFt
ZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBDMzY1NzE4QzA1MUJBMDBGNjA3RDcgLyogUmVt
b3RlTGF5ZXJUcmVlSG9zdElPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFJlbW90ZUxheWVyVHJlZUhvc3RJT1MubW07IHBhdGggPSBpb3MvUmVtb3RlTGF5ZXJU
cmVlSG9zdElPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxNTcsOCArNjE0
OSw2IEBACiAJCQkJNTEyRTM1MjAxMzBCNTUwMTAwQUJEMTlBIC8qIFdlYkFwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyUHJveHkuY3BwICovLAogCQkJCTUxMkUzNTIxMTMwQjU1MDEwMEFCRDE5QSAvKiBX
ZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdlclByb3h5LmggKi8sCiAJCQkJNTEyRTM1RjAxMzBCNjM4
QzAwQUJEMTlBIC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4g
Ki8sCi0JCQkJMDc5MjE2NDgxQUE1NEU5RDAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJn
ZXRQaWNrZXJQcm94eS5jcHAgKi8sCi0JCQkJMDc5MjE2NDkxQUE1NEU5RDAwQTNDMDQ5IC8qIFdl
Yk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eS5oICovLAogCQkJCUJDNzJCQTFCMTFFNjQ5
MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuY3BwICovLAogCQkJCUJDNzJCQTFDMTFF
NjQ5MDcwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3QuaCAqLywKIAkJCQlGMDM2OTc4NzE1
RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovLApAQCAtNzAxOSw4ICs3MDA5
LDYgQEAKIAkJCQkyRDEyNUM1RDE4NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9s
bGVyTWFjLm1tICovLAogCQkJCTJENkNEMTE3MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNo
b3RTdG9yZS5oICovLAogCQkJCTJENkNEMTE4MTg5MDU4QTUwMEU1QTRBMCAvKiBWaWV3U25hcHNo
b3RTdG9yZS5tbSAqLywKLQkJCQkwNzkyMTY0RTFBQTU1MjhBMDBBM0MwNDkgLyogV2ViTWVkaWFQ
bGF5YmFja1RhcmdldFBpY2tlclByb3h5TWFjLmggKi8sCi0JCQkJMDc5MjE2NEYxQUE1NTI4QTAw
QTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94eU1hYy5tbSAqLywKIAkJ
CQk3MjhFODZFRjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMuaCAqLywKIAkJ
CQk3MjhFODZGMDE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gKi8sCiAJ
CQkJNTFBQ0JCOUUxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCAq
LywKQEAgLTgxMTQsNyArODEwMiw2IEBACiAJCQkJN0MzNjFENzkxOTI4MDNCRDAwMzZBNTlEIC8q
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTNGODg5RDE1MTg4Nzc4QzkwMEZFQURBRiAvKiBXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5Q0Q1NUFBMTI4RTI5NEYwMDEzM0M4NSAvKiBX
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMDc5
MjE2NEQxQUE1NTAxRjAwQTNDMDQ5IC8qIFdlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJQcm94
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjkyMzJERjQxOEIyOUQ2ODAwRDA1OTZGIC8qIFdLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMDczMEEz
MTlGOUM3REEwMEU5RDlDNCAvKiBXS0FjdGlvbk1lbnVDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzRCNzI0NDE5RjVCOUJFMDBBRTk2RDYgLyogV0tBY3Rpb25NZW51SXRlbVR5cGVz
LmggaW4gSGVhZGVycyAqLywKQEAgLTgzMDQsNyArODI5MSw2IEBACiAJCQkJMUFCOEExRjQxODQw
MEI4RjAwRTlBRTY5IC8qIFdLUGFnZUZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QjhBMUY2MTg0MDBCOUQwMEU5QUU2OSAvKiBXS1BhZ2VGaW5kTWF0Y2hlc0NsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFCOEExRjAxODQwMEIwMDAwRTlBRTY5IC8qIFdLUGFnZUZvcm1DbGll
bnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTA3OTIxNjUwMUFBNTUyOEEwMEEzQzA0OSAvKiBXZWJN
ZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
N0I2MzM3MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUFCOEExRUMxODQwMDgwOTAwRTlBRTY5IC8qIFdLUGFnZUxvYWRlckNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMyRDAyMTkxMkFDNDI2QzAwRTczMkEzIC8qIFdLUGFnZUxvYWRUeXBl
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC05NTcwLDcgKzk1NTYsNiBAQAogCQkJCTBGQ0I0RTYzMThC
QkUzRDkwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBG
Q0I0RTQ3MThCQkUwNDQwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1wbElPUy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBQzc1MzdCMTgzQTlGREIwMDcyQ0IxNSAvKiBQYWdlTG9hZFN0YXRlLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTA3OTIxNjUxMUFBNTUyOEEwMEEzQzA0OSAvKiBXZWJNZWRpYVBs
YXliYWNrVGFyZ2V0UGlja2VyUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDNTc0QTU4
MjEyRTY2NjgxMDAyREZFOTggLyogUGFzdGVib2FyZFR5cGVzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTE5NTgyRDYxNTNDQzA1NDAwQjYwODc1IC8qIFBERktpdEltcG9ydHMubW0gaW4gU291cmNl
cyAqLywKIAkJCQkyRDg3MEQxMDE2MjM0RkZFMDAwQTNGMjAgLyogUERGUGx1Z2luLm1tIGluIFNv
dXJjZXMgKi8sCkBAIC05NzY5LDcgKzk3NTQsNiBAQAogCQkJCUJDMTExQTVFMTEyRjRGQkIwMDMz
N0JBQiAvKiBXZWJFZGl0b3JDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQyOEYzRTYx
ODg1Q0NDMTAwNEI5RUFFIC8qIFdlYkVkaXRvckNsaWVudElPUy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUM1MjM3RjYwMTI0NDFDQTMwMDc4MDQ3MiAvKiBXZWJFZGl0b3JDbGllbnRNYWMubW0gaW4g
U291cmNlcyAqLywKLQkJCQkwNzkyMTY0QzFBQTU1MDE5MDBBM0MwNDkgLyogV2ViTWVkaWFQbGF5
YmFja1RhcmdldFBpY2tlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQUUwMTEy
RjVCQzIwMDMzN0JBQiAvKiBXZWJFcnJvcnNNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMDMz
N0RBRTEyN0EyNEZFMDA4RkY0RjQgLyogV2ViRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkMwMzJEQkExMEY0MzgwRjAwNThDMTVBIC8qIFdlYkV2ZW50Q29udmVyc2lvbi5jcHAgaW4gU291
cmNlcyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>