<?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>166700</bug_id>
          
          <creation_ts>2017-01-04 15:00:31 -0800</creation_ts>
          <short_desc>Remove bindings/generic and distribute its contents appropriately</short_desc>
          <delta_ts>2017-01-04 15:05:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1263909</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-01-04 15:00:31 -0800</bug_when>
    <thetext>Remove bindings/generic and distribute its contents appropriately</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263912</commentid>
    <comment_count>1</comment_count>
      <attachid>298048</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-01-04 15:01:53 -0800</bug_when>
    <thetext>Created attachment 298048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1263913</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-01-04 15:05:15 -0800</bug_when>
    <thetext>Committed r210293: &lt;http://trac.webkit.org/changeset/210293&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298048</attachid>
            <date>2017-01-04 15:01:53 -0800</date>
            <delta_ts>2017-01-04 15:05:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166700-20170104150026.patch</filename>
            <type>text/plain</type>
            <size>134393</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDI5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE3LTAxLTA0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGJpbmRpbmdzL2dlbmVyaWMg
YW5kIGRpc3RyaWJ1dGUgaXRzIGNvbnRlbnRzIGFwcHJvcHJpYXRlbHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NjcwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToK
KyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvSURMVHlwZXMuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9JRExUeXBlcy5oLgorICAgICAg
ICAqIGJpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmg6IFJlbW92ZWQuCisgICAgICAgICog
YmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBkb20vQWN0aXZlRE9NQ2FsbGJhY2suY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcC4KKyAgICAg
ICAgKiBkb20vQWN0aXZlRE9NQ2FsbGJhY2suaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFjay5oLgorICAgICAgICAqIHBhZ2UvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAuCisgICAgICAgICogcGFnZS9S
dW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oLgorICAgICAgICBNb3ZlIGZpbGVz
IGFyb3VuZC4KKwogMjAxNi0wMS0wNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBDb3JyZWN0IERPTVdpbmRvdyBoYW5kbGluZyBkdXJpbmcgRnJhbWVMb2Fk
ZXI6OmNsZWFyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjEwMjg2KQorKysg
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDYgQEAgc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElS
fS9hY2Nlc3NpYmlsaXR5IgogICAgICIke1dFQkNPUkVfRElSfS9hbmltYXRpb24iCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L2JpbmRpbmdzIgotICAgICIke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9nZW5l
cmljIgogICAgICIke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9qcyIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vYnJpZGdlIgogICAgICIke1dFQkNPUkVfRElSfS9icmlkZ2UvYyIKQEAgLTE1MSw3ICsxNTAs
NiBAQCBzZXQoV2ViQ29yZV9JRExfSU5DTFVERVMKICAgICBNb2R1bGVzL3dlYmRhdGFiYXNlCiAg
ICAgTW9kdWxlcy93ZWJzb2NrZXRzCiAKLSAgICBiaW5kaW5ncy9nZW5lcmljCiAgICAgYmluZGlu
Z3MvanMKIAogICAgIGh0bWwvY2FudmFzCkBAIC0xMDY2LDkgKzEwNjQsNiBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAogICAgIGFuaW1hdGlv
bi9XZWJBbmltYXRpb24uY3BwCiAKLSAgICBiaW5kaW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxi
YWNrLmNwcAotICAgIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAK
LQogICAgIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdC5jcHAKICAgICBiaW5kaW5ncy9q
cy9DYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXIuY3BwCiAgICAgYmluZGluZ3MvanMvQ2FsbGJhY2tG
dW5jdGlvbi5jcHAKQEAgLTEzODEsNiArMTM3Niw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKIAog
ICAgIGNzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAogCisgICAgZG9tL0FjdGl2ZURPTUNhbGxi
YWNrLmNwcAogICAgIGRvbS9BY3RpdmVET01DYWxsYmFja01pY3JvdGFzay5jcHAKICAgICBkb20v
QWN0aXZlRE9NT2JqZWN0LmNwcAogICAgIGRvbS9BbmltYXRpb25FdmVudC5jcHAKQEAgLTIwNTMs
NiArMjA0OSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwYWdlL1Jlc291cmNlVXNhZ2VE
YXRhLmNwcAogICAgIHBhZ2UvUmVzb3VyY2VVc2FnZU92ZXJsYXkuY3BwCiAgICAgcGFnZS9SZXNv
dXJjZVVzYWdlVGhyZWFkLmNwcAorICAgIHBhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAK
ICAgICBwYWdlL1NjcmVlbi5jcHAKICAgICBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAogICAgIHBh
Z2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCShyZXZpc2lvbiAyMTAyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw2IEBAIFZQQVRIID0gXAogICAgICQoV2Vi
Q29yZSkvTW9kdWxlcy93ZWJkcml2ZXIgXAogICAgICQoV2ViQ29yZSkvTW9kdWxlcy93ZWJzb2Nr
ZXRzIFwKICAgICAkKFdlYkNvcmUpL2FuaW1hdGlvbiBcCi0gICAgJChXZWJDb3JlKS9iaW5kaW5n
cy9nZW5lcmljIFwKICAgICAkKFdlYkNvcmUpL2JpbmRpbmdzL2pzIFwKICAgICAkKFdlYkNvcmUp
L2NyeXB0byBcCiAgICAgJChXZWJDb3JlKS9jcnlwdG8vcGFyYW1ldGVycyBcCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQkocmV2aXNpb24gMjEwMjg2KQorKysgU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTU5Niw3ICs1OTYsNiBAQCBzZXQo
V2ViQ29yZV9GT1JXQVJESU5HX0hFQURFUlNfRElSRUNUT1JJCiAgICAgTW9kdWxlcy9pbmRleGVk
ZGIvc2hhcmVkCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyCiAKLSAgICBiaW5kaW5ncy9n
ZW5lcmljCiAgICAgYmluZGluZ3MvanMKIAogICAgIGJyaWRnZS9vYmpjCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybVdpbi5jbWFrZQkocmV2aXNpb24gMjEwMjg2KQorKysgU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1XaW4uY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTIwMSw3ICsyMDEsNiBAQCBzZXQoV2Vi
Q29yZV9GT1JXQVJESU5HX0hFQURFUlNfRElSRUNUT1JJCiAKICAgICBhY2Nlc3NpYmlsaXR5L3dp
bgogCi0gICAgYmluZGluZ3MvZ2VuZXJpYwogICAgIGJpbmRpbmdzL2pzCiAKICAgICBicmlkZ2Uv
YwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjEwMjg2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yODM2LDYgKzI4MzYsMTEg
QEAKIAkJN0M0Qzk2REYxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0
UmVhZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzRDOTZEQjFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIu
aCAqLzsgfTsKIAkJN0M0Qzk2RTMxQUQ0NEFCRjAwMzY1QTUwIC8qIExhdW5jaFNlcnZpY2VzU1BJ
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzRDOTZF
MjFBRDQ0QUJGMDAzNjVBNTAgLyogTGF1bmNoU2VydmljZXNTUEkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzRFREQ3NDFBN0I2MDc4MDAxOThD
NEQgLyogRm9udENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0M0RURENzMxQTdCNjA3ODAwMTk4QzREIC8qIEZvbnRDb2NvYS5tbSAqLzsgfTsK
KwkJN0M1MjIyOTYxRTFEQUUwMzAwMkNCOEY3IC8qIElETFR5cGVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUyMjI5NTFFMURBREY4MDAyQ0I4Rjcg
LyogSURMVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk3QzUyMjI5OTFFMURBRTFDMDAyQ0I4RjcgLyogQWN0aXZlRE9NQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTIyMjk4MUUx
REFFMTYwMDJDQjhGNyAvKiBBY3RpdmVET01DYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdDNTIyMjlBMUUxREFFMjAwMDJDQjhGNyAv
KiBBY3RpdmVET01DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzUyMjI5NzFFMURBRTE2MDAyQ0I4RjcgLyogQWN0aXZlRE9NQ2FsbGJh
Y2suY3BwICovOyB9OworCQk3QzUyMjI5RDFFMURBRTQ3MDAyQ0I4RjcgLyogUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzUyMjI5QjFFMURBRTQ3MDAyQ0I4RjcgLyogUnVudGltZUVuYWJsZWRGZWF0dXJlcy5j
cHAgKi87IH07CisJCTdDNTIyMjlFMUUxREFFNDcwMDJDQjhGNyAvKiBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzUyMjI5QzFFMURBRTQ3MDAyQ0I4RjcgLyogUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDNTIyRDRCMTVC
NDc3RTgwMDlCN0M5NSAvKiBJbnNwZWN0b3JPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNTIyRDQ5MTVCNDc3RTgwMDlCN0M5NSAvKiBJ
bnNwZWN0b3JPdmVybGF5LmNwcCAqLzsgfTsKIAkJN0M1MzQzRkMxN0I3NEI2MzAwNDIzMkYwIC8q
IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzUzNDNGQTE3Qjc0QjYzMDA0MjMyRjAgLyogSlNNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcCAqLzsgfTsKIAkJN0M1MzQzRkQxN0I3NEI2MzAwNDIzMkYwIC8q
IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0M1MzQzRkIxN0I3NEI2MzAwNDIzMkYwIC8qIEpTTWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5oICovOyB9OwpAQCAtMjg4Niw3ICsyODkxLDYgQEAKIAkJN0M5M0YzNEUx
QUE2QkYwNzAwQTk4QkFCIC8qIENvbnRlbnRFeHRlbnNpb25Db21waWxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5M0YzNEMxQUE2QkYwNzAwQTk4
QkFCIC8qIENvbnRlbnRFeHRlbnNpb25Db21waWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDOURCRkVEMUE5QzQ5QjEwMDBENkIyNSAvKiBK
U0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzlEQkZFQjFBOUM0OUIxMDAwRDZCMjUgLyogSlNIVE1MQXR0YWNo
bWVudEVsZW1lbnQuY3BwICovOyB9OwogCQk3QzlEQkZFRTFBOUM0OUIxMDAwRDZCMjUgLyogSlNI
VE1MQXR0YWNobWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdDOURCRkVDMUE5QzQ5QjEwMDBENkIyNSAvKiBKU0hUTUxBdHRhY2htZW50
RWxlbWVudC5oICovOyB9OwotCQk3Q0MxNkZGQjFENzczNzUzMDBDRTA4NzcgLyogSURMVHlwZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQzE2RkZB
MUQ3NzM3NTMwMENFMDg3NyAvKiBJRExUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDQzI4OURGMUFBMEZFNUQwMDlBOUNFMyAvKiBVUkxS
ZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RFRTM5MzgxNzk3NDI3NDAwMUQ3NTgwIC8qIFVSTFJlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0NDNTY0QjgxOEJBQkVBNjAwMUI5
NjUyIC8qIFRlbGVwaG9uZU51bWJlckRldGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0M1NjRCNjE4QkFCRUE2MDAxQjk2NTIgLyogVGVsZXBo
b25lTnVtYmVyRGV0ZWN0b3IuaCAqLzsgfTsKIAkJN0NDNTY0QkExOEJBQzcyMDAwMUI5NjUyIC8q
IFRlbGVwaG9uZU51bWJlckRldGVjdG9yQ29jb2EuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NDNTY0QjkxOEJBQzcyMDAwMUI5NjUyIC8qIFRlbGVw
aG9uZU51bWJlckRldGVjdG9yQ29jb2EuY3BwICovOyB9OwpAQCAtMzIyMCw4ICszMjI0LDYgQEAK
IAkJOEFGNEU1NTUxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QUY0RTU1MjEx
REM1QTM2MDAwRUQzREUgLyogUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcCAqLzsgfTsKIAkJOEFG
NEU1NTYxMURDNUEzNjAwMEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEFGNEU1NTMxMURDNUEzNjAw
MEVEM0RFIC8qIFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5oICovOyB9OwogCQk4QUY0RTU1QzExREM1
QTYzMDAwRUQzREUgLyogUGVyZm9ybWFuY2VUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhBRjRFNTU5MTFEQzVBNjMwMDBFRDNERSAvKiBQZXJm
b3JtYW5jZVRpbWluZy5oICovOyB9OwotCQk4QzZFQTYxOTExRUY3RTA0MDBGRDhFRTMgLyogUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4QzZFQTYxNzExRUY3RTA0MDBGRDhFRTMgLyogUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5jcHAgKi87IH07Ci0JCThDNkVBNjFBMTFFRjdFMDQwMEZEOEVFMyAvKiBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4QzZFQTYxODExRUY3RTA0MDBGRDhFRTMgLyogUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCThF
NEM5NkRDMUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEU0Qzk2RDgxQUQ0NDgzNTAwMzY1
QTUwIC8qIEpTRmV0Y2hSZXNwb25zZS5jcHAgKi87IH07CiAJCThFNEM5NkREMUFENDQ4MzUwMDM2
NUE1MCAvKiBKU0ZldGNoUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDhFNEM5NkQ5MUFENDQ4MzUwMDM2NUE1MCAvKiBKU0ZldGNoUmVzcG9u
c2UuaCAqLzsgfTsKIAkJOEY2NzU2MUIxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhGNjc1NjE5MTI4
OEIxN0IwMDQ3QUNBMyAvKiBFdmVudFF1ZXVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTUxMzYsOCArNTEzOCw2IEBACiAJCUI1QjY1ODc0MTg2
RkRFNEMwMDlDMjZFOCAvKiBSZW5kZXJQdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFERTE2NzM2MTgxMDUwQzMwMDQ2M0EyRSAvKiBSZW5kZXJQdHIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCNUI3
QTE3MDE3QzEwQUE4MDBFNEFBMEEgLyogRWxlbWVudERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjVCN0ExNkYxN0MxMDgwNjAwRTRBQTBBIC8q
IEVsZW1lbnREYXRhLmNwcCAqLzsgfTsKIAkJQjVCN0ExNzExN0MxMEFDMDAwRTRBQTBBIC8qIEVs
ZW1lbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCNUI3QTE2RTE3QzEwNDgwMDBFNEFBMEEgLyogRWxlbWVudERhdGEuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlCNUQzMURGQTExQ0Y2MTBCMDA5
RjIyQjQgLyogQWN0aXZlRE9NQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjVEMzFERjgxMUNGNjEwQjAwOUYyMkI0IC8qIEFjdGl2ZURP
TUNhbGxiYWNrLmNwcCAqLzsgfTsKLQkJQjVEMzFERkIxMUNGNjEwQjAwOUYyMkI0IC8qIEFjdGl2
ZURPTUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCNUQzMURGOTExQ0Y2MTBCMDA5RjIyQjQgLyogQWN0aXZlRE9NQ2FsbGJhY2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCNjU2NjI3MDEy
MEIxMjI3MDA2RUE4NUMgLyogSlNJREJUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjY1NjYyNkUxMjBCMTIyNzAwNkVBODVDIC8qIEpT
SURCVHJhbnNhY3Rpb24uaCAqLzsgfTsKIAkJQjY1OEZGQTExNTIyRUYzQTAwREQ1NTk1IC8qIEpT
UmFkaW9Ob2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCNjU4RkY5RjE1MjJFRjNBMDBERDU1OTUgLyogSlNSYWRpb05vZGVMaXN0LmNwcCAq
LzsgfTsKIAkJQjY1OEZGQTIxNTIyRUYzQTAwREQ1NTk1IC8qIEpTUmFkaW9Ob2RlTGlzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjY1OEZGQTAxNTIy
RUYzQTAwREQ1NTk1IC8qIEpTUmFkaW9Ob2RlTGlzdC5oICovOyB9OwpAQCAtMTAzMjMsNiArMTAz
MjMsMTEgQEAKIAkJN0M0Qzk2REIxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1E
ZWZhdWx0UmVhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVhZGFi
bGVTdHJlYW1EZWZhdWx0UmVhZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
NEM5NkUyMUFENDRBQkYwMDM2NUE1MCAvKiBMYXVuY2hTZXJ2aWNlc1NQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMYXVuY2hTZXJ2aWNlc1NQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzRFREQ3MzFBN0I2MDc4MDAxOThDNEQgLyogRm9udENvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRm9udENvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzUyMjI5NTFFMURBREY4MDAyQ0I4RjcgLyog
SURMVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURMVHlwZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M1MjIyOTcxRTFEQUUxNjAwMkNCOEY3IC8q
IEFjdGl2ZURPTUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEFjdGl2ZURPTUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0M1MjIyOTgxRTFEQUUxNjAwMkNCOEY3IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjdGl2ZURPTUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdDNTIyMjlCMUUxREFFNDcwMDJDQjhGNyAvKiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QzUyMjI5QzFFMURBRTQ3MDAyQ0I4RjcgLyogUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNTIyRDQ5MTVCNDc3RTgwMDlCN0M5NSAvKiBJ
bnNwZWN0b3JPdmVybGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3Rvck92ZXJsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzUy
MkQ0QTE1QjQ3OEIyMDA5QjdDOTUgLyogSW5zcGVjdG9yT3ZlcmxheS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JPdmVybGF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDNTM0M0ZBMTdCNzRCNjMwMDQyMzJGMCAvKiBKU01lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEw
Mzk0LDcgKzEwMzk5LDYgQEAKIAkJN0M5REJGRUExQTlDNDg5RjAwMEQ2QjI1IC8qIEhUTUxBdHRh
Y2htZW50RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5REJGRUIxQTlDNDlCMTAwMEQ2QjI1IC8qIEpTSFRN
TEF0dGFjaG1lbnRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0M5REJGRUMxQTlDNDlCMTAwMEQ2QjI1IC8qIEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTEF0dGFjaG1lbnRFbGVt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTdDQzE2RkZBMUQ3NzM3NTMwMENF
MDg3NyAvKiBJRExUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJRExU
eXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0M1NjRCNjE4QkFCRUE2MDAx
Qjk2NTIgLyogVGVsZXBob25lTnVtYmVyRGV0ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVsZXBob25lTnVtYmVyRGV0ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0NDNTY0QjkxOEJBQzcyMDAwMUI5NjUyIC8qIFRlbGVwaG9uZU51bWJlckRl
dGVjdG9yQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVs
ZXBob25lTnVtYmVyRGV0ZWN0b3JDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDQzY5OTNFMTkxRUM1RjUwMEFGMjI3MCAvKiBKU1dlYktpdE5hbWVzcGFjZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYktpdE5hbWVzcGFjZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDgwNCw4ICsxMDgwOCw2IEBACiAJCThB
RjRFNTU0MTFEQzVBMzYwMDBFRDNERSAvKiBQZXJmb3JtYW5jZU5hdmlnYXRpb24uaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFBlcmZvcm1hbmNlTmF2aWdhdGlvbi5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCThBRjRFNTU5MTFEQzVBNjMwMDBFRDNERSAvKiBQZXJmb3JtYW5j
ZVRpbWluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJmb3JtYW5jZVRp
bWluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4QUY0RTU1QTExREM1QTYzMDAw
RUQzREUgLyogUGVyZm9ybWFuY2VUaW1pbmcuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBl
cmZvcm1hbmNlVGltaW5nLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEM2RUE2
MTcxMUVGN0UwNDAwRkQ4RUUzIC8qIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHA7
IHBhdGggPSBnZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk4QzZFQTYxODExRUY3RTA0MDBGRDhFRTMgLyogUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmg7IHBhdGggPSBnZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEU0Qzk2RDgxQUQ0NDgzNTAwMzY1QTUwIC8q
IEpTRmV0Y2hSZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0ZldGNoUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4RTRD
OTZEOTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNGZXRjaFJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmV0Y2hSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk4RjY3NTYxOTEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMTA3NSw3ICsxMTA3Nyw3IEBACiAJCTkzRjZGMUVCMTI3RjcwQjEw
MDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5M0Y2RjFFQzEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYkdMQ29udGV4dEV2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNGOEIzMDUwQTMwMEZFMTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3Iu
cG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gQ29kZUdlbmVyYXRvci5wbTsg
cGF0aCA9IHNjcmlwdHMvQ29kZUdlbmVyYXRvci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3JKUy5wbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBDb2RlR2VuZXJhdG9ySlMucG07IHBhdGgg
PSAuLi9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
d3JhcHNMaW5lcyA9IDA7IH07CisJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2Vu
ZXJhdG9ySlMucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gQ29kZUdlbmVy
YXRvckpTLnBtOyBwYXRoID0gc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IHdyYXBzTGluZXMgPSAwOyB9OwogCQk5M0Y4QjMwNzBBMzAwRkVBMDBGNjFB
QjggLyogZ2VuZXJhdGUtYmluZGluZ3MucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBu
YW1lID0gImdlbmVyYXRlLWJpbmRpbmdzLnBsIjsgcGF0aCA9ICJzY3JpcHRzL2dlbmVyYXRlLWJp
bmRpbmdzLnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOTI1NDEwRjdFRjVC
ODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJhZGlvQnV0dG9uR3JvdXBzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzRjkyNTQyMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vwcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYWRpb0J1dHRvbkdyb3Vwcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzAxMSw4ICsxMzAxMyw2IEBACiAJCUI1
QTY4NDIzMEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZUZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCNUI3QTE2RTE3QzEwNDgwMDBFNEFBMEEgLyogRWxlbWVu
dERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWxlbWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQjVCN0ExNkYxN0MxMDgwNjAwRTRBQTBBIC8qIEVsZW1lbnREYXRhLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEVsZW1lbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQjVEMzFERjgxMUNGNjEwQjAwOUYyMkI0IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFjdGl2ZURPTUNhbGxiYWNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjVEMzFERjkxMUNGNjEwQjAwOUYy
MkI0IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFjdGl2ZURPTUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUI2
NTY2MjZFMTIwQjEyMjcwMDZFQTg1QyAvKiBKU0lEQlRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSURCVHJhbnNhY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQjY1OEZGOUYxNTIyRUYzQTAwREQ1NTk1IC8qIEpTUmFkaW9Ob2RlTGlz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JhZGlvTm9kZUxp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCNjU4RkZBMDE1MjJFRjNBMDBE
RDU1OTUgLyogSlNSYWRpb05vZGVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTUmFkaW9Ob2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgw
MzAsNiArMTgwMzAsOCBAQAogCQkJCUFEQkFENkVEMUJDREQ5NTAwMDM4MTMyNSAvKiBSZXNvdXJj
ZVVzYWdlT3ZlcmxheS5oICovLAogCQkJCUE1MDcxRTgzMUM1NkQwNzkwMDk5NTFCRSAvKiBSZXNv
dXJjZVVzYWdlVGhyZWFkLmNwcCAqLywKIAkJCQlBNTA3MUU4NDFDNTZEMDc5MDA5OTUxQkUgLyog
UmVzb3VyY2VVc2FnZVRocmVhZC5oICovLAorCQkJCTdDNTIyMjlCMUUxREFFNDcwMDJDQjhGNyAv
KiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCAqLywKKwkJCQk3QzUyMjI5QzFFMURBRTQ3MDAy
Q0I4RjcgLyogUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oICovLAogCQkJCUJDRUMwMUJBMEMyNzRE
QUMwMDlGNEVDOSAvKiBTY3JlZW4uY3BwICovLAogCQkJCUJDRUMwMUJCMEMyNzREQUMwMDlGNEVD
OSAvKiBTY3JlZW4uaCAqLywKIAkJCQlCQ0VDMDFCQzBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVu
LmlkbCAqLywKQEAgLTE4MzgwLDYgKzE4MzgyLDI0IEBACiAJCQlwYXRoID0gY29jb2E7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk3QzUyMjI5NDFFMURBRERDMDAyQ0I4Rjcg
Lyogc2NyaXB0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJOTNGOEIzMDUwQTMwMEZFMTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3IucG0gKi8sCisJCQkJ
OTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3JKUy5wbSAqLywKKwkJCQk5
M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyogZ2VuZXJhdGUtYmluZGluZ3MucGwgKi8sCisJCQkJ
N0M2MTM2RjYxNzEwQzM1MjAwRkY0QTU3IC8qIEhhc2hlci5wbSAqLywKKwkJCQlBODNCNTMzODE0
RjM5OUJCMDA3MjBEOUQgLyogSURMQXR0cmlidXRlcy50eHQgKi8sCisJCQkJMTQ4MTNCRjMwOUVE
Rjg4RTAwRjc1N0UxIC8qIElETFBhcnNlci5wbSAqLywKKwkJCQk3QzYxMzZGNzE3MTBDMzUyMDBG
RjRBNTcgLyogSW5GaWxlc0NvbXBpbGVyLnBtICovLAorCQkJCTdDNjEzNkY4MTcxMEMzNTIwMEZG
NEE1NyAvKiBJbkZpbGVzUGFyc2VyLnBtICovLAorCQkJCUE4M0I1MzgwMTRGQkIyRUMwMDcyMEQ5
RCAvKiBwcmVwcm9jZXNzLWlkbHMucGwgKi8sCisJCQkJQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0
IC8qIHByZXByb2Nlc3Nvci5wbSAqLywKKwkJCQk3QzYxMzZGOTE3MTBDMzUyMDBGRjRBNTcgLyog
U3RhdGljU3RyaW5nLnBtICovLAorCQkJKTsKKwkJCW5hbWUgPSBzY3JpcHRzOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJN0U0REUxMEIxOThCMTA4MTAwNTFDQjAyIC8qIGNv
Y29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIxOTU0
LDMzICsyMTk3NCwxMiBAQAogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKIAkJfTsKLQkJQjVEMzFERjcxMUNGNjBFNTAwOUYyMkI0IC8qIGdlbmVyaWMgKi8gPSB7
Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUI1RDMxREY4MTFDRjYx
MEIwMDlGMjJCNCAvKiBBY3RpdmVET01DYWxsYmFjay5jcHAgKi8sCi0JCQkJQjVEMzFERjkxMUNG
NjEwQjAwOUYyMkI0IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmggKi8sCi0JCQkJN0NDMTZGRkExRDc3
Mzc1MzAwQ0UwODc3IC8qIElETFR5cGVzLmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IGdlbmVyaWM7
Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQlCQzFBMzc5MDA5N0M2Rjk3MDAx
OUYzRDggLyogYmluZGluZ3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAotCQkJCUI1RDMxREY3MTFDRjYwRTUwMDlGMjJCNCAvKiBnZW5lcmljICovLAogCQkJCUJD
MUEzNzkzMDk3QzZGQjEwMDE5RjNEOCAvKiBqcyAqLywKLQkJCQk5M0Y4QjMwNTBBMzAwRkUxMDBG
NjFBQjggLyogQ29kZUdlbmVyYXRvci5wbSAqLywKLQkJCQk5M0Y4QjMwNzBBMzAwRkVBMDBGNjFB
QjggLyogZ2VuZXJhdGUtYmluZGluZ3MucGwgKi8sCi0JCQkJN0M2MTM2RjYxNzEwQzM1MjAwRkY0
QTU3IC8qIEhhc2hlci5wbSAqLywKLQkJCQlBODNCNTMzODE0RjM5OUJCMDA3MjBEOUQgLyogSURM
QXR0cmlidXRlcy50eHQgKi8sCi0JCQkJMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxIC8qIElETFBh
cnNlci5wbSAqLywKLQkJCQk3QzYxMzZGNzE3MTBDMzUyMDBGRjRBNTcgLyogSW5GaWxlc0NvbXBp
bGVyLnBtICovLAotCQkJCTdDNjEzNkY4MTcxMEMzNTIwMEZGNEE1NyAvKiBJbkZpbGVzUGFyc2Vy
LnBtICovLAotCQkJCUE4M0I1MzgwMTRGQkIyRUMwMDcyMEQ5RCAvKiBwcmVwcm9jZXNzLWlkbHMu
cGwgKi8sCi0JCQkJQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAq
LywKLQkJCQk4QzZFQTYxNzExRUY3RTA0MDBGRDhFRTMgLyogUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5jcHAgKi8sCi0JCQkJOEM2RUE2MTgxMUVGN0UwNDAwRkQ4RUUzIC8qIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaCAqLywKLQkJCQk3QzYxMzZGOTE3MTBDMzUyMDBGRjRBNTcgLyogU3RhdGljU3Ry
aW5nLnBtICovLAorCQkJCTdDNTIyMjk0MUUxREFEREMwMDJDQjhGNyAvKiBzY3JpcHRzICovLAor
CQkJCTdDNTIyMjk1MUUxREFERjgwMDJDQjhGNyAvKiBJRExUeXBlcy5oICovLAogCQkJKTsKIAkJ
CXBhdGggPSBiaW5kaW5nczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMjAwMiw3
ICsyMjAwMSw2IEBACiAJCQkJRTMwN0RFQzcxRDgxRTQ0ODAwMTQxQ0FGIC8qIENhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlci5oICovLAogCQkJCUUzMDdERUM4MUQ4MUU0NDgwMDE0MUNBRiAvKiBDYWNo
ZWRNb2R1bGVTY3JpcHRMb2FkZXJDbGllbnQuaCAqLywKIAkJCQlCQ0Q1MzM2MzBFRDY4NDg5MDA4
ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLywKLQkJCQk5M0Y4QjMwNjBB
MzAwRkVBMDBGNjFBQjggLyogQ29kZUdlbmVyYXRvckpTLnBtICovLAogCQkJCTBGNjBGMzI5MURG
QkIxMDQwMDQxNkQ2QyAvKiBDb21tb25WTS5jcHAgKi8sCiAJCQkJMEY2MEYzMkExREZCQjEwNDAw
NDE2RDZDIC8qIENvbW1vblZNLmggKi8sCiAJCQkJQjU2NTc2RTcxN0RBOTRFMjAwQTU2QkRDIC8q
IERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmggKi8sCkBAIC0yMzk0Myw2ICsyMzk0MSw4IEBA
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlDRTI2MTZBNDE4N0U2NUMxMDA3OTU1RjMgLyogaW9zICov
LAogCQkJCTJENTAzNjY2MUJDREREQzQwMEUyMEJCMyAvKiBtYWMgKi8sCisJCQkJN0M1MjIyOTcx
RTFEQUUxNjAwMkNCOEY3IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmNwcCAqLywKKwkJCQk3QzUyMjI5
ODFFMURBRTE2MDAyQ0I4RjcgLyogQWN0aXZlRE9NQ2FsbGJhY2suaCAqLywKIAkJCQk3Q0QwQkEw
MjFCOEY3OUM5MDA1Q0VCQkUgLyogQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suY3BwICovLAog
CQkJCTdDRDBCQTAzMUI4Rjc5QzkwMDVDRUJCRSAvKiBBY3RpdmVET01DYWxsYmFja01pY3JvdGFz
ay5oICovLAogCQkJCUUxQzRERTZEMEVBNzVDNjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3Qu
Y3BwICovLApAQCAtMjQ4NDksNyArMjQ4NDksNiBAQAogCQkJCTI5QTgxMjMxMEZCQjlDMUQwMDUx
MDI5MyAvKiBBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCUE5MUM5
RkJGMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTkxQzlGQzMxQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJQjVEMzFERkIxMUNGNjEwQjAwOUYyMkI0IC8qIEFjdGl2ZURP
TUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0QwQkEwNTFCOEY3OUM5MDA1Q0VCQkUg
LyogQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQzRE
RTY5MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTcyNEVFNTUwMURDODBEN0YwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI1OTMxLDcgKzI1OTMwLDYgQEAKIAkJCQkxQTcxRDU3QzBGMzM4MTkwMDBGOUNF
NEUgLyogSWRlbnRpZmllclJlcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzUwRUY4NkQ0
NzAwOUQwQ0FGIC8qIElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMEMwNTRDRDExMThDOEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMg
Ki8sCi0JCQkJN0NDMTZGRkIxRDc3Mzc1MzAwQ0UwODc3IC8qIElETFR5cGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDM0NGMTdBNTE1QjAwNjNGMDAyNzZEMzkgLyogSWRUYXJnZXRPYnNlcnZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzNDRjE3QTcxNUIwMDYzRjAwMjc2RDM5IC8qIElkVGFyZ2V0
T2JzZXJ2ZXJSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEFCNEJDNzcxMjZGREI3MTAw
REVCNzI3IC8qIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI2Njg2LDYgKzI2Njg0LDcgQEAKIAkJCQkxQTc2MkM3ODBBMDc0RjI2MDA5
ODlGNUIgLyogSlNYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNzYyQzdB
MEEwNzRGMjYwMDk4OUY1QiAvKiBKU1hQYXRoUmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0VGRTFFQjBEQ0E1RjY0MDA3MzkyMTkgLyogSlNYU0xUUHJvY2Vzc29yLmggaW4gSGVhZGVycyAq
LywKKwkJCQk3QzUyMjI5RTFFMURBRTQ3MDAyQ0I4RjcgLyogUnVudGltZUVuYWJsZWRGZWF0dXJl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNDQwQTQ0RUZDNzAwRjk5MkUwIC8qIEtleWJv
YXJkRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTAwRDU5MTgyREFDOEQwMDA4N0RENyAv
KiBLZXllZENvZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3QTYzQzUxQjc0MzE4RjAwRTdE
Q0RDIC8qIEtleWVkRGVjb2RlckNGLmggaW4gSGVhZGVycyAqLywKQEAgLTI3NDU5LDcgKzI3NDU4
LDYgQEAKIAkJCQkxQTU2OUQyMzBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9vYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBNTY5RDI1MEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX3Jv
b3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5M0VBRTFGMTM1NkIyRkUwMDY3QUNGOSAvKiBSdW50
aW1lQXBwbGljYXRpb25DaGVja3MuaCBpbiBIZWFkZXJzICovLAotCQkJCThDNkVBNjFBMTFFRjdF
MDQwMEZEOEVFMyAvKiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDREQ3MDg5NzE4MzU5RjZGMDAyQjNEQzYgLyogU2FtcGxlTWFwLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OUU5MTFDQjBFRjg2RDQ3MDA5RDBDQUYgLyogU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTVERkU4RjU3MEQxNjQ3N0MwMDc2RTkzNyAvKiBTY2hlZHVs
ZWRBY3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjc3OTIsNiArMjc3OTAsNyBAQAogCQkJCUIy
MjI3OUQ0MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyMjI3OUQ3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OURBMEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTdDNTIyMjk5MUUxREFFMUMwMDJDQjhGNyAvKiBBY3RpdmVET01DYWxsYmFjay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNDM1OEU4ODYxMzYwQTMzQjAwRTQ3NDhDIC8qIFNWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUREMEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdGRUZsb29kRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RTAwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0ZFRnVuY0FFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI3ODc4LDYg
KzI3ODc3LDcgQEAKIAkJCQk4M0MxRDQyNzE3OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1
cnZldG9DdWJpY0Ficy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0MjgxNzhENUFCNDAwMTQx
RTY4IC8qIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QTY5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3QzUyMjI5NjFFMURBRTAzMDAyQ0I4RjcgLyogSURMVHlwZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDI5MTc4RDVBQjQwMDE0MUU2OCAvKiBTVkdQYXRo
U2VnQ3VydmV0b0N1YmljU21vb3RoQWJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQyQTE3
OEQ1QUI0MDAxNDFFNjggLyogU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjdBNkQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BhdGhTZWdDdXJ2
ZXRvUXVhZHJhdGljLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NzYyLDcgKzI4NzYyLDYgQEAKIAkJ
CQkzN0Y1N0FDRTFBNTA3MkRBMDA4NzZGOTggLyogQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUE5MUM5RkJFMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmls
aXR5VHJlZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOTFDOUZDMjFCNjU5QTY3MDBBRkZENTQg
LyogQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUI1RDMxREZB
MTFDRjYxMEIwMDlGMjJCNCAvKiBBY3RpdmVET01DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3Q0QwQkEwNDFCOEY3OUM5MDA1Q0VCQkUgLyogQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rh
c2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFDNERFNkUwRUE3NUM2NTAwMjNDQ0Q2IC8qIEFj
dGl2ZURPTU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NEQwQzQwNDExMTVGMUQ0MDAx
OEFBMzQgLyogQWZmaW5lVHJhbnNmb3JtLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzExMDYsNyAr
MzExMDUsNiBAQAogCQkJCTFBNTY5RDIyMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX29iamVj
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUQyNDBEN0UyQjgyMDA3QzM5ODMgLyogcnVu
dGltZV9yb290LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ2NUE4RTc5MUM4QTI0Q0UwMEU3RDNF
NCAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3MubW0gaW4gU291cmNlcyAqLywKLQkJCQk4QzZF
QTYxOTExRUY3RTA0MDBGRDhFRTMgLyogUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDREQ3MDg5NjE4MzU5RjZGMDAyQjNEQzYgLyogU2FtcGxlTWFwLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUNBMEVGODZENDcwMDlEMENBRiAvKiBTY2FsZVRyYW5z
Zm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1REZFOEY1NjBEMTY0NzdCMDA3
NkU5MzcgLyogU2NoZWR1bGVkQWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzEyMzQsNiAr
MzEyMzIsNyBAQAogCQkJCTVDNjg4QUEzMUQzODE0QkYwMDBCNTRGQSAvKiBTb2NrZXRQcm92aWRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTBENEEzNjEwMzE2NUVFMDA0OUVBNTQgLyogU29j
a2V0U3RyZWFtSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxQUJBRTFGMTAzQzE5MTMw
MDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJN0M1MjIyOUQxRTFEQUU0NzAwMkNCOEY3IC8qIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTQ1MzkwNDcwRUFGRDYzNzAwMzY5NUM4IC8qIFNvdW5k
SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNEIzMDQzQzkwQUUwMzcxRDAwQTgyNjQ3IC8qIFNv
dW5kTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODRBODFGM0QwRkM3REZGMDAwOTU1MzAwIC8q
IFNvdXJjZUFscGhhLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE1NjYsNiArMzE1NjUsNyBAQAog
CQkJCUNEOUQ4Mjc1MUM3QUU1MzUwMDZGRjA2NiAvKiBUZXh0dXJlQ2FjaGVDVi5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDRTY1RDMyMEVBRDEyMTEwMDdFNDUzMyAvKiBUaGVtZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkzMTBENzE5NTFCMzM1QzlEMDA5QzdCNzMgLyogVGhlbWVDb2NvYS5tbSBp
biBTb3VyY2VzICovLAorCQkJCTdDNTIyMjlBMUUxREFFMjAwMDJDQjhGNyAvKiBBY3RpdmVET01D
YWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0NEM5OTFBMDBGM0QyMTBFMDA1ODY2NzAg
LyogVGhlbWVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0U2NTlFOTBFQTkyRkZBMDA3RTQ1
MzMgLyogVGhlbWVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5NzZENkM5NDEyMkI4QTNEMDAx
RkQxRjcgLyogVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAkocmV2aXNpb24gMjEwMjg2KQkoZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVzLmg6MjEwMjg2KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIy
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8aGVhcC9IYW5kbGVU
eXBlcy5oPgorI2luY2x1ZGUgPHd0Zi9CcmlnYW5kLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgQXJyYXlCdWZmZXI7CitjbGFzcyBB
cnJheUJ1ZmZlclZpZXc7CitjbGFzcyBKU1ZhbHVlOworY2xhc3MgSlNPYmplY3Q7Cit0ZW1wbGF0
ZTx0eXBlbmFtZT4gY2xhc3MgU3Ryb25nOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Rl
bXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBET01Qcm9taXNlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgorc3RydWN0IElETFR5cGUgeworICAgIHVzaW5nIEltcGxlbWVudGF0aW9uVHlwZSA9IFQ7Cisg
ICAgdXNpbmcgUGFyYW1ldGVyVHlwZSA9IFQ7CisKKyAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBz
dGQ6Om9wdGlvbmFsPEltcGxlbWVudGF0aW9uVHlwZT47CisgICAgc3RhdGljIE51bGxhYmxlVHlw
ZSBudWxsVmFsdWUoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGF0aWMgYm9vbCBp
c051bGxWYWx1ZShjb25zdCBOdWxsYWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiAhdmFsdWU7IH0K
KyAgICBzdGF0aWMgSW1wbGVtZW50YXRpb25UeXBlIGV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShj
b25zdCBOdWxsYWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS52YWx1ZSgpOyB9Cit9Owor
CisvLyBJRExVbnN1cHBvcnRlZFR5cGUgaXMgYSBzcGVjaWFsIHR5cGUgdGhhdCBzZXJ2ZXMgYXMg
YSBiYXNlIGNsYXNzIGZvciBjdXJyZW50bHkgdW5zdXBwb3J0ZWQgdHlwZXMuCitzdHJ1Y3QgSURM
VW5zdXBwb3J0ZWRUeXBlIDogSURMVHlwZTx2b2lkPiB7IH07CisKKy8vIElETE51bGwgaXMgYSBz
cGVjaWFsIHR5cGUgZm9yIHVzZSBhcyBhIHN1YnR5cGUgaW4gYW4gSURMVW5pb24gdGhhdCBpcyBu
dWxsYWJsZS4KK3N0cnVjdCBJRExOdWxsIDogSURMVHlwZTxzdGQ6Om51bGxwdHJfdD4geyB9Owor
CitzdHJ1Y3QgSURMQW55IDogSURMVHlwZTxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiB7Cisg
ICAgdXNpbmcgUGFyYW1ldGVyVHlwZSA9IEpTQzo6SlNWYWx1ZTsKKworICAgIHVzaW5nIE51bGxh
YmxlVHlwZSA9IEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj47CisgICAgc3RhdGljIGlubGluZSBz
dGQ6Om51bGxwdHJfdCBudWxsVmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4gc3RhdGljIGlubGluZSBib29sIGlzTnVsbFZhbHVlKFUmJiB2YWx1ZSkg
eyByZXR1cm4gIXZhbHVlOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIGlubGlu
ZSBVJiYgZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKFUmJiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpm
b3J3YXJkPFU+KHZhbHVlKTsgfQorfTsKKworc3RydWN0IElETEJvb2xlYW4gOiBJRExUeXBlPGJv
b2w+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgTnVtZXJpY1R5cGU+IHN0cnVjdCBJRExOdW1i
ZXIgOiBJRExUeXBlPE51bWVyaWNUeXBlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIEludGVn
ZXJUeXBlPiBzdHJ1Y3QgSURMSW50ZWdlciA6IElETE51bWJlcjxJbnRlZ2VyVHlwZT4geyB9Owor
c3RydWN0IElETEJ5dGUgOiBJRExJbnRlZ2VyPGludDhfdD4geyB9Oworc3RydWN0IElETE9jdGV0
IDogSURMSW50ZWdlcjx1aW50OF90PiB7IH07CitzdHJ1Y3QgSURMU2hvcnQgOiBJRExJbnRlZ2Vy
PGludDE2X3Q+IHsgfTsKK3N0cnVjdCBJRExVbnNpZ25lZFNob3J0IDogSURMSW50ZWdlcjx1aW50
MTZfdD4geyB9Oworc3RydWN0IElETExvbmcgOiBJRExJbnRlZ2VyPGludDMyX3Q+IHsgfTsKK3N0
cnVjdCBJRExVbnNpZ25lZExvbmcgOiBJRExJbnRlZ2VyPHVpbnQzMl90PiB7IH07CitzdHJ1Y3Qg
SURMTG9uZ0xvbmcgOiBJRExJbnRlZ2VyPGludDY0X3Q+IHsgfTsKK3N0cnVjdCBJRExVbnNpZ25l
ZExvbmdMb25nIDogSURMSW50ZWdlcjx1aW50NjRfdD4geyB9OworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBGbG9hdGluZ1BvaW50VHlwZSwgYm9vbCB1bnJlc3RyaWN0ZWQgPSBmYWxzZT4gc3RydWN0IElE
TEZsb2F0aW5nUG9pbnQgOiBJRExOdW1iZXI8RmxvYXRpbmdQb2ludFR5cGU+IHsKKyAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgaXNVbnJlc3RyaWN0ZWQgPSB1bnJlc3RyaWN0ZWQ7Cit9Oworc3Ry
dWN0IElETEZsb2F0IDogSURMRmxvYXRpbmdQb2ludDxmbG9hdD4geyB9Oworc3RydWN0IElETFVu
cmVzdHJpY3RlZEZsb2F0IDogSURMRmxvYXRpbmdQb2ludDxmbG9hdCwgdHJ1ZT4geyB9Oworc3Ry
dWN0IElETERvdWJsZSA6IElETEZsb2F0aW5nUG9pbnQ8ZG91YmxlPiB7IH07CitzdHJ1Y3QgSURM
VW5yZXN0cmljdGVkRG91YmxlIDogSURMRmxvYXRpbmdQb2ludDxkb3VibGUsIHRydWU+IHsgfTsK
Kworc3RydWN0IElETFN0cmluZyA6IElETFR5cGU8U3RyaW5nPiB7CisgICAgdXNpbmcgUGFyYW1l
dGVyVHlwZSA9IGNvbnN0IFN0cmluZyY7CisKKyAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBTdHJp
bmc7CisgICAgc3RhdGljIFN0cmluZyBudWxsVmFsdWUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQor
ICAgIHN0YXRpYyBib29sIGlzTnVsbFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgcmV0dXJu
IHZhbHVlLmlzTnVsbCgpOyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IHN0YXRpYyBVJiYg
ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKFUmJiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpmb3J3YXJk
PFU+KHZhbHVlKTsgfQorfTsKK3N0cnVjdCBJRExET01TdHJpbmcgOiBJRExTdHJpbmcgeyB9Owor
c3RydWN0IElETEJ5dGVTdHJpbmcgOiBJRExTdHJpbmcgeyB9Oworc3RydWN0IElETFVTVlN0cmlu
ZyA6IElETFN0cmluZyB7IH07CisKK3N0cnVjdCBJRExPYmplY3QgOiBJRExUeXBlPEpTQzo6U3Ry
b25nPEpTQzo6SlNPYmplY3Q+PiB7CisgICAgdXNpbmcgTnVsbGFibGVUeXBlID0gSlNDOjpTdHJv
bmc8SlNDOjpKU09iamVjdD47CisKKyAgICBzdGF0aWMgaW5saW5lIHN0ZDo6bnVsbHB0cl90IG51
bGxWYWx1ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBz
dGF0aWMgaW5saW5lIGJvb2wgaXNOdWxsVmFsdWUoVSYmIHZhbHVlKSB7IHJldHVybiAhdmFsdWU7
IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMgaW5saW5lIFUmJiBleHRyYWN0VmFs
dWVGcm9tTnVsbGFibGUoVSYmIHZhbHVlKSB7IHJldHVybiBzdGQ6OmZvcndhcmQ8VT4odmFsdWUp
OyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMV3JhcHBlciA6IElETFR5
cGU8UmVmUHRyPFQ+PiB7CisgICAgdXNpbmcgUmF3VHlwZSA9IFQ7CisKKyAgICB1c2luZyBQYXJh
bWV0ZXJUeXBlID0gVCY7CisKKyAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBSZWZQdHI8VD47Cisg
ICAgc3RhdGljIGlubGluZSBzdGQ6Om51bGxwdHJfdCBudWxsVmFsdWUoKSB7IHJldHVybiBudWxs
cHRyOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIGlubGluZSBib29sIGlzTnVs
bFZhbHVlKFUmJiB2YWx1ZSkgeyByZXR1cm4gIXZhbHVlOyB9CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVT4gc3RhdGljIGlubGluZSBVJiYgZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKFUmJiB2YWx1
ZSkgeyByZXR1cm4gc3RkOjpmb3J3YXJkPFU+KHZhbHVlKTsgfQorfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IElETEludGVyZmFjZSA6IElETFdyYXBwZXI8VD4geyB9OwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IElETENhbGxiYWNrSW50ZXJmYWNlIDogSURMV3JhcHBlcjxU
PiB7IH07Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMQ2FsbGJhY2tGdW5jdGlvbiA6
IElETFdyYXBwZXI8VD4geyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMRGlj
dGlvbmFyeSA6IElETFR5cGU8VD4geworICAgIHVzaW5nIFBhcmFtZXRlclR5cGUgPSBjb25zdCBU
JjsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExFbnVtZXJhdGlvbiA6IElE
TFR5cGU8VD4geyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMTnVsbGFibGUg
OiBJRExUeXBlPHR5cGVuYW1lIFQ6Ok51bGxhYmxlVHlwZT4geworICAgIHVzaW5nIElubmVyVHlw
ZSA9IFQ7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMU2VxdWVuY2UgOiBJ
RExUeXBlPFZlY3Rvcjx0eXBlbmFtZSBUOjpJbXBsZW1lbnRhdGlvblR5cGU+PiB7CisgICAgdXNp
bmcgSW5uZXJUeXBlID0gVDsKKworICAgIHVzaW5nIFBhcmFtZXRlclR5cGUgPSBjb25zdCBWZWN0
b3I8dHlwZW5hbWUgVDo6SW1wbGVtZW50YXRpb25UeXBlPiY7Cit9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgSURMRnJvemVuQXJyYXkgOiBJRExUeXBlPFZlY3Rvcjx0eXBlbmFtZSBU
OjpJbXBsZW1lbnRhdGlvblR5cGU+PiB7CisgICAgdXNpbmcgSW5uZXJUeXBlID0gVDsKKworICAg
IHVzaW5nIFBhcmFtZXRlclR5cGUgPSBjb25zdCBWZWN0b3I8dHlwZW5hbWUgVDo6SW1wbGVtZW50
YXRpb25UeXBlPiY7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPiBzdHJ1
Y3QgSURMUmVjb3JkIDogSURMVHlwZTxIYXNoTWFwPHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9u
VHlwZSwgdHlwZW5hbWUgVjo6SW1wbGVtZW50YXRpb25UeXBlPj4geworICAgIHVzaW5nIEtleVR5
cGUgPSBLOworICAgIHVzaW5nIFZhbHVlVHlwZSA9IFY7CisKKyAgICB1c2luZyBQYXJhbWV0ZXJU
eXBlID0gY29uc3QgSGFzaE1hcDx0eXBlbmFtZSBLOjpJbXBsZW1lbnRhdGlvblR5cGUsIHR5cGVu
YW1lIFY6OkltcGxlbWVudGF0aW9uVHlwZT4mOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IElETFByb21pc2UgOiBJRExUeXBlPERPTVByb21pc2U8VD4+IHsKKyAgICB1c2luZyBJ
bm5lclR5cGUgPSBUOworfTsKKworc3RydWN0IElETEVycm9yIDogSURMVW5zdXBwb3J0ZWRUeXBl
IHsgfTsKK3N0cnVjdCBJRExET01FeGNlcHRpb24gOiBJRExVbnN1cHBvcnRlZFR5cGUgeyB9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUcz4KK3N0cnVjdCBJRExVbmlvbiA6IElETFR5cGU8VmFy
aWFudDx0eXBlbmFtZSBUczo6SW1wbGVtZW50YXRpb25UeXBlLi4uPj4geworICAgIHVzaW5nIFR5
cGVMaXN0ID0gYnJpZ2FuZDo6bGlzdDxUcy4uLj47CisKKyAgICB1c2luZyBQYXJhbWV0ZXJUeXBl
ID0gY29uc3QgVmFyaWFudDx0eXBlbmFtZSBUczo6SW1wbGVtZW50YXRpb25UeXBlLi4uPiY7Cit9
OworCisvLyBOb24tV2ViSURMIGV4dGVuc2lvbnMKKworc3RydWN0IElETERhdGUgOiBJRExUeXBl
PGRvdWJsZT4geyAKKyAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBkb3VibGU7CisgICAgc3RhdGlj
IGRvdWJsZSBudWxsVmFsdWUoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OnF1aWV0X05hTigpOyB9CisgICAgc3RhdGljIGJvb2wgaXNOdWxsVmFsdWUoZG91YmxlIHZhbHVl
KSB7IHJldHVybiBzdGQ6OmlzbmFuKHZhbHVlKTsgfQorICAgIHN0YXRpYyBkb3VibGUgZXh0cmFj
dFZhbHVlRnJvbU51bGxhYmxlKGRvdWJsZSB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KK307CisK
K3N0cnVjdCBJRExKU09OIDogSURMVHlwZTxTdHJpbmc+IHsgCisgICAgdXNpbmcgUGFyYW1ldGVy
VHlwZSA9IGNvbnN0IFN0cmluZyY7CisKKyAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBTdHJpbmc7
CisgICAgc3RhdGljIFN0cmluZyBudWxsVmFsdWUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAg
IHN0YXRpYyBib29sIGlzTnVsbFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgcmV0dXJuIHZh
bHVlLmlzTnVsbCgpOyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IHN0YXRpYyBVJiYgZXh0
cmFjdFZhbHVlRnJvbU51bGxhYmxlKFUmJiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpmb3J3YXJkPFU+
KHZhbHVlKTsgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSA6IElETFdyYXBwZXI8VD4geyB9OwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
c3RydWN0IElETEV2ZW50TGlzdGVuZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBJRExYUGF0aE5TUmVzb2x2ZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExJREJLZXkgOiBJRExXcmFwcGVyPFQ+IHsg
fTsKKworLy8gTm9uLVdlYklETCBjb252ZW5pZW5jZSB0eXBlIGFsaWFzZXMKKwordXNpbmcgSURM
QnVmZmVyU291cmNlID0gSURMVW5pb248SURMSW50ZXJmYWNlPEpTQzo6QXJyYXlCdWZmZXJWaWV3
PiwgSURMSW50ZXJmYWNlPEpTQzo6QXJyYXlCdWZmZXI+PjsKKworCisvLyBIZWxwZXIgcHJlZGlj
YXRlcworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IElzSURMSW50ZXJmYWNlIDogcHVi
bGljIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJc1RlbXBsYXRlPFQsIElETElu
dGVyZmFjZT46OnZhbHVlPiB7IH07CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNJ
RExEaWN0aW9uYXJ5IDogcHVibGljIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJ
c1RlbXBsYXRlPFQsIElETERpY3Rpb25hcnk+Ojp2YWx1ZT4geyB9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorc3RydWN0IElzSURMRW51bWVyYXRpb24gOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxib29sLCBXVEY6OklzVGVtcGxhdGU8VCwgSURMRW51bWVyYXRpb24+Ojp2YWx1ZT4g
eyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IElzSURMU2VxdWVuY2UgOiBwdWJs
aWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBXVEY6OklzVGVtcGxhdGU8VCwgSURMU2Vx
dWVuY2U+Ojp2YWx1ZT4geyB9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IElzSURM
RnJvemVuQXJyYXkgOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBXVEY6Oklz
VGVtcGxhdGU8VCwgSURMRnJvemVuQXJyYXk+Ojp2YWx1ZT4geyB9OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorc3RydWN0IElzSURMUmVjb3JkIDogcHVibGljIHN0ZDo6aW50ZWdyYWxfY29uc3Rh
bnQ8Ym9vbCwgV1RGOjpJc1RlbXBsYXRlPFQsIElETFJlY29yZD46OnZhbHVlPiB7IH07CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgSXNJRExOdW1iZXIgOiBwdWJsaWMgc3RkOjppbnRl
Z3JhbF9jb25zdGFudDxib29sLCBXVEY6OklzQmFzZU9mVGVtcGxhdGU8SURMTnVtYmVyLCBUPjo6
dmFsdWU+IHsgfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBJc0lETEludGVnZXIg
OiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBXVEY6OklzQmFzZU9mVGVtcGxh
dGU8SURMSW50ZWdlciwgVD46OnZhbHVlPiB7IH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFjay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01D
YWxsYmFjay5jcHAJKHJldmlzaW9uIDIxMDI4NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwCShub25leGlzdGVudCkKQEAgLTEsNTMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC4gMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBY3RpdmVET01DYWxsYmFj
ay5oIgotCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLUFjdGl2ZURPTUNhbGxiYWNrOjpBY3RpdmVET01DYWxsYmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIoY29udGV4dCkKLXsKLX0KLQotQWN0aXZlRE9NQ2FsbGJhY2s6On5BY3RpdmVET01DYWxsYmFj
aygpCi17Ci19Ci0KLWJvb2wgQWN0aXZlRE9NQ2FsbGJhY2s6OmNhbkludm9rZUNhbGxiYWNrKCkg
Y29uc3QKLXsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOwotICAgIHJldHVybiBjb250ZXh0ICYmICFjb250ZXh0LT5hY3RpdmVE
T01PYmplY3RzQXJlU3VzcGVuZGVkKCkgJiYgIWNvbnRleHQtPmFjdGl2ZURPTU9iamVjdHNBcmVT
dG9wcGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMg
b246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3Bw
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suaAkocmV2aXNpb24gMjEw
Mjg2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFj
ay5oCShub25leGlzdGVudCkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCwgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24u
Ci0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotCi0vLyBBIGJhc2UgY2xhc3Mg
dGhhdCBwcmV2ZW50cyBiaW5kaW5nIGNhbGxiYWNrcyBmcm9tIGV4ZWN1dGluZyB3aGVuCi0vLyBh
Y3RpdmUgZG9tIG9iamVjdHMgYXJlIHN0b3BwZWQgb3Igc3VzcGVuZGVkLgotLy8KLS8vIFNob3Vs
ZCBvbmx5IGJlIGNyZWF0ZWQsIHVzZWQsIGFuZCBkZXN0cm95ZWQgb24gdGhlIHNjcmlwdCBleGVj
dXRpb24KLS8vIGNvbnRleHQgdGhyZWFkLgotY2xhc3MgQWN0aXZlRE9NQ2FsbGJhY2sgOiBwdWJs
aWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgewotcHVibGljOgotICAgIEFjdGl2ZURPTUNh
bGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpOwotICAgIHZpcnR1YWwgfkFj
dGl2ZURPTUNhbGxiYWNrKCk7Ci0KLSAgICBib29sIGNhbkludm9rZUNhbGxiYWNrKCkgY29uc3Q7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmgKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL0lETFR5cGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9JRExUeXBlcy5oCShyZXZpc2lvbiAyMTAyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL0lETFR5cGVzLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMjYgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8aGVhcC9IYW5kbGVUeXBlcy5o
PgotI2luY2x1ZGUgPHd0Zi9CcmlnYW5kLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgQXJyYXlCdWZmZXI7Ci1jbGFzcyBBcnJheUJ1
ZmZlclZpZXc7Ci1jbGFzcyBKU1ZhbHVlOwotY2xhc3MgSlNPYmplY3Q7Ci10ZW1wbGF0ZTx0eXBl
bmFtZT4gY2xhc3MgU3Ryb25nOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lPiBjbGFzcyBET01Qcm9taXNlOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3Ry
dWN0IElETFR5cGUgewotICAgIHVzaW5nIEltcGxlbWVudGF0aW9uVHlwZSA9IFQ7Ci0gICAgdXNp
bmcgUGFyYW1ldGVyVHlwZSA9IFQ7Ci0KLSAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBzdGQ6Om9w
dGlvbmFsPEltcGxlbWVudGF0aW9uVHlwZT47Ci0gICAgc3RhdGljIE51bGxhYmxlVHlwZSBudWxs
VmFsdWUoKSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBzdGF0aWMgYm9vbCBpc051bGxW
YWx1ZShjb25zdCBOdWxsYWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiAhdmFsdWU7IH0KLSAgICBz
dGF0aWMgSW1wbGVtZW50YXRpb25UeXBlIGV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShjb25zdCBO
dWxsYWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS52YWx1ZSgpOyB9Ci19OwotCi0vLyBJ
RExVbnN1cHBvcnRlZFR5cGUgaXMgYSBzcGVjaWFsIHR5cGUgdGhhdCBzZXJ2ZXMgYXMgYSBiYXNl
IGNsYXNzIGZvciBjdXJyZW50bHkgdW5zdXBwb3J0ZWQgdHlwZXMuCi1zdHJ1Y3QgSURMVW5zdXBw
b3J0ZWRUeXBlIDogSURMVHlwZTx2b2lkPiB7IH07Ci0KLS8vIElETE51bGwgaXMgYSBzcGVjaWFs
IHR5cGUgZm9yIHVzZSBhcyBhIHN1YnR5cGUgaW4gYW4gSURMVW5pb24gdGhhdCBpcyBudWxsYWJs
ZS4KLXN0cnVjdCBJRExOdWxsIDogSURMVHlwZTxzdGQ6Om51bGxwdHJfdD4geyB9OwotCi1zdHJ1
Y3QgSURMQW55IDogSURMVHlwZTxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiB7Ci0gICAgdXNp
bmcgUGFyYW1ldGVyVHlwZSA9IEpTQzo6SlNWYWx1ZTsKLQotICAgIHVzaW5nIE51bGxhYmxlVHlw
ZSA9IEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj47Ci0gICAgc3RhdGljIGlubGluZSBzdGQ6Om51
bGxwdHJfdCBudWxsVmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gc3RhdGljIGlubGluZSBib29sIGlzTnVsbFZhbHVlKFUmJiB2YWx1ZSkgeyByZXR1
cm4gIXZhbHVlOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIGlubGluZSBVJiYg
ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKFUmJiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpmb3J3YXJk
PFU+KHZhbHVlKTsgfQotfTsKLQotc3RydWN0IElETEJvb2xlYW4gOiBJRExUeXBlPGJvb2w+IHsg
fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgTnVtZXJpY1R5cGU+IHN0cnVjdCBJRExOdW1iZXIgOiBJ
RExUeXBlPE51bWVyaWNUeXBlPiB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEludGVnZXJUeXBl
PiBzdHJ1Y3QgSURMSW50ZWdlciA6IElETE51bWJlcjxJbnRlZ2VyVHlwZT4geyB9Owotc3RydWN0
IElETEJ5dGUgOiBJRExJbnRlZ2VyPGludDhfdD4geyB9Owotc3RydWN0IElETE9jdGV0IDogSURM
SW50ZWdlcjx1aW50OF90PiB7IH07Ci1zdHJ1Y3QgSURMU2hvcnQgOiBJRExJbnRlZ2VyPGludDE2
X3Q+IHsgfTsKLXN0cnVjdCBJRExVbnNpZ25lZFNob3J0IDogSURMSW50ZWdlcjx1aW50MTZfdD4g
eyB9Owotc3RydWN0IElETExvbmcgOiBJRExJbnRlZ2VyPGludDMyX3Q+IHsgfTsKLXN0cnVjdCBJ
RExVbnNpZ25lZExvbmcgOiBJRExJbnRlZ2VyPHVpbnQzMl90PiB7IH07Ci1zdHJ1Y3QgSURMTG9u
Z0xvbmcgOiBJRExJbnRlZ2VyPGludDY0X3Q+IHsgfTsKLXN0cnVjdCBJRExVbnNpZ25lZExvbmdM
b25nIDogSURMSW50ZWdlcjx1aW50NjRfdD4geyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGbG9h
dGluZ1BvaW50VHlwZSwgYm9vbCB1bnJlc3RyaWN0ZWQgPSBmYWxzZT4gc3RydWN0IElETEZsb2F0
aW5nUG9pbnQgOiBJRExOdW1iZXI8RmxvYXRpbmdQb2ludFR5cGU+IHsKLSAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNVbnJlc3RyaWN0ZWQgPSB1bnJlc3RyaWN0ZWQ7Ci19Owotc3RydWN0IElE
TEZsb2F0IDogSURMRmxvYXRpbmdQb2ludDxmbG9hdD4geyB9Owotc3RydWN0IElETFVucmVzdHJp
Y3RlZEZsb2F0IDogSURMRmxvYXRpbmdQb2ludDxmbG9hdCwgdHJ1ZT4geyB9Owotc3RydWN0IElE
TERvdWJsZSA6IElETEZsb2F0aW5nUG9pbnQ8ZG91YmxlPiB7IH07Ci1zdHJ1Y3QgSURMVW5yZXN0
cmljdGVkRG91YmxlIDogSURMRmxvYXRpbmdQb2ludDxkb3VibGUsIHRydWU+IHsgfTsKLQotc3Ry
dWN0IElETFN0cmluZyA6IElETFR5cGU8U3RyaW5nPiB7Ci0gICAgdXNpbmcgUGFyYW1ldGVyVHlw
ZSA9IGNvbnN0IFN0cmluZyY7Ci0KLSAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBTdHJpbmc7Ci0g
ICAgc3RhdGljIFN0cmluZyBudWxsVmFsdWUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHN0
YXRpYyBib29sIGlzTnVsbFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgcmV0dXJuIHZhbHVl
LmlzTnVsbCgpOyB9Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IHN0YXRpYyBVJiYgZXh0cmFj
dFZhbHVlRnJvbU51bGxhYmxlKFUmJiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpmb3J3YXJkPFU+KHZh
bHVlKTsgfQotfTsKLXN0cnVjdCBJRExET01TdHJpbmcgOiBJRExTdHJpbmcgeyB9Owotc3RydWN0
IElETEJ5dGVTdHJpbmcgOiBJRExTdHJpbmcgeyB9Owotc3RydWN0IElETFVTVlN0cmluZyA6IElE
TFN0cmluZyB7IH07Ci0KLXN0cnVjdCBJRExPYmplY3QgOiBJRExUeXBlPEpTQzo6U3Ryb25nPEpT
Qzo6SlNPYmplY3Q+PiB7Ci0gICAgdXNpbmcgTnVsbGFibGVUeXBlID0gSlNDOjpTdHJvbmc8SlND
OjpKU09iamVjdD47Ci0KLSAgICBzdGF0aWMgaW5saW5lIHN0ZDo6bnVsbHB0cl90IG51bGxWYWx1
ZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMg
aW5saW5lIGJvb2wgaXNOdWxsVmFsdWUoVSYmIHZhbHVlKSB7IHJldHVybiAhdmFsdWU7IH0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMgaW5saW5lIFUmJiBleHRyYWN0VmFsdWVGcm9t
TnVsbGFibGUoVSYmIHZhbHVlKSB7IHJldHVybiBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpOyB9Ci19
OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMV3JhcHBlciA6IElETFR5cGU8UmVm
UHRyPFQ+PiB7Ci0gICAgdXNpbmcgUmF3VHlwZSA9IFQ7Ci0KLSAgICB1c2luZyBQYXJhbWV0ZXJU
eXBlID0gVCY7Ci0KLSAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBSZWZQdHI8VD47Ci0gICAgc3Rh
dGljIGlubGluZSBzdGQ6Om51bGxwdHJfdCBudWxsVmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIGlubGluZSBib29sIGlzTnVsbFZhbHVl
KFUmJiB2YWx1ZSkgeyByZXR1cm4gIXZhbHVlOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
c3RhdGljIGlubGluZSBVJiYgZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKFUmJiB2YWx1ZSkgeyBy
ZXR1cm4gc3RkOjpmb3J3YXJkPFU+KHZhbHVlKTsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RydWN0IElETEludGVyZmFjZSA6IElETFdyYXBwZXI8VD4geyB9OwotdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IElETENhbGxiYWNrSW50ZXJmYWNlIDogSURMV3JhcHBlcjxUPiB7IH07
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMQ2FsbGJhY2tGdW5jdGlvbiA6IElETFdy
YXBwZXI8VD4geyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMRGljdGlvbmFy
eSA6IElETFR5cGU8VD4gewotICAgIHVzaW5nIFBhcmFtZXRlclR5cGUgPSBjb25zdCBUJjsKLX07
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExFbnVtZXJhdGlvbiA6IElETFR5cGU8
VD4geyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMTnVsbGFibGUgOiBJRExU
eXBlPHR5cGVuYW1lIFQ6Ok51bGxhYmxlVHlwZT4gewotICAgIHVzaW5nIElubmVyVHlwZSA9IFQ7
Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMU2VxdWVuY2UgOiBJRExUeXBl
PFZlY3Rvcjx0eXBlbmFtZSBUOjpJbXBsZW1lbnRhdGlvblR5cGU+PiB7Ci0gICAgdXNpbmcgSW5u
ZXJUeXBlID0gVDsKLQotICAgIHVzaW5nIFBhcmFtZXRlclR5cGUgPSBjb25zdCBWZWN0b3I8dHlw
ZW5hbWUgVDo6SW1wbGVtZW50YXRpb25UeXBlPiY7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSURMRnJvemVuQXJyYXkgOiBJRExUeXBlPFZlY3Rvcjx0eXBlbmFtZSBUOjpJbXBs
ZW1lbnRhdGlvblR5cGU+PiB7Ci0gICAgdXNpbmcgSW5uZXJUeXBlID0gVDsKLQotICAgIHVzaW5n
IFBhcmFtZXRlclR5cGUgPSBjb25zdCBWZWN0b3I8dHlwZW5hbWUgVDo6SW1wbGVtZW50YXRpb25U
eXBlPiY7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPiBzdHJ1Y3QgSURM
UmVjb3JkIDogSURMVHlwZTxIYXNoTWFwPHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9uVHlwZSwg
dHlwZW5hbWUgVjo6SW1wbGVtZW50YXRpb25UeXBlPj4gewotICAgIHVzaW5nIEtleVR5cGUgPSBL
OwotICAgIHVzaW5nIFZhbHVlVHlwZSA9IFY7Ci0KLSAgICB1c2luZyBQYXJhbWV0ZXJUeXBlID0g
Y29uc3QgSGFzaE1hcDx0eXBlbmFtZSBLOjpJbXBsZW1lbnRhdGlvblR5cGUsIHR5cGVuYW1lIFY6
OkltcGxlbWVudGF0aW9uVHlwZT4mOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IElETFByb21pc2UgOiBJRExUeXBlPERPTVByb21pc2U8VD4+IHsKLSAgICB1c2luZyBJbm5lclR5
cGUgPSBUOwotfTsKLQotc3RydWN0IElETEVycm9yIDogSURMVW5zdXBwb3J0ZWRUeXBlIHsgfTsK
LXN0cnVjdCBJRExET01FeGNlcHRpb24gOiBJRExVbnN1cHBvcnRlZFR5cGUgeyB9OwotCi10ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBUcz4KLXN0cnVjdCBJRExVbmlvbiA6IElETFR5cGU8VmFyaWFudDx0
eXBlbmFtZSBUczo6SW1wbGVtZW50YXRpb25UeXBlLi4uPj4gewotICAgIHVzaW5nIFR5cGVMaXN0
ID0gYnJpZ2FuZDo6bGlzdDxUcy4uLj47Ci0KLSAgICB1c2luZyBQYXJhbWV0ZXJUeXBlID0gY29u
c3QgVmFyaWFudDx0eXBlbmFtZSBUczo6SW1wbGVtZW50YXRpb25UeXBlLi4uPiY7Ci19OwotCi0v
LyBOb24tV2ViSURMIGV4dGVuc2lvbnMKLQotc3RydWN0IElETERhdGUgOiBJRExUeXBlPGRvdWJs
ZT4geyAKLSAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBkb3VibGU7Ci0gICAgc3RhdGljIGRvdWJs
ZSBudWxsVmFsdWUoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0
X05hTigpOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNOdWxsVmFsdWUoZG91YmxlIHZhbHVlKSB7IHJl
dHVybiBzdGQ6OmlzbmFuKHZhbHVlKTsgfQotICAgIHN0YXRpYyBkb3VibGUgZXh0cmFjdFZhbHVl
RnJvbU51bGxhYmxlKGRvdWJsZSB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KLX07Ci0KLXN0cnVj
dCBJRExKU09OIDogSURMVHlwZTxTdHJpbmc+IHsgCi0gICAgdXNpbmcgUGFyYW1ldGVyVHlwZSA9
IGNvbnN0IFN0cmluZyY7Ci0KLSAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBTdHJpbmc7Ci0gICAg
c3RhdGljIFN0cmluZyBudWxsVmFsdWUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHN0YXRp
YyBib29sIGlzTnVsbFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmlz
TnVsbCgpOyB9Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IHN0YXRpYyBVJiYgZXh0cmFjdFZh
bHVlRnJvbU51bGxhYmxlKFUmJiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpmb3J3YXJkPFU+KHZhbHVl
KTsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSA6IElETFdyYXBwZXI8VD4geyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IElETEV2ZW50TGlzdGVuZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBJRExYUGF0aE5TUmVzb2x2ZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExJREJLZXkgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLQot
Ly8gTm9uLVdlYklETCBjb252ZW5pZW5jZSB0eXBlIGFsaWFzZXMKLQotdXNpbmcgSURMQnVmZmVy
U291cmNlID0gSURMVW5pb248SURMSW50ZXJmYWNlPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiwgSURM
SW50ZXJmYWNlPEpTQzo6QXJyYXlCdWZmZXI+PjsKLQotCi0vLyBIZWxwZXIgcHJlZGljYXRlcwot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IElzSURMSW50ZXJmYWNlIDogcHVibGljIHN0
ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJc1RlbXBsYXRlPFQsIElETEludGVyZmFj
ZT46OnZhbHVlPiB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgSXNJRExEaWN0
aW9uYXJ5IDogcHVibGljIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJc1RlbXBs
YXRlPFQsIElETERpY3Rpb25hcnk+Ojp2YWx1ZT4geyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgotc3RydWN0IElzSURMRW51bWVyYXRpb24gOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFu
dDxib29sLCBXVEY6OklzVGVtcGxhdGU8VCwgSURMRW51bWVyYXRpb24+Ojp2YWx1ZT4geyB9Owot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IElzSURMU2VxdWVuY2UgOiBwdWJsaWMgc3Rk
OjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBXVEY6OklzVGVtcGxhdGU8VCwgSURMU2VxdWVuY2U+
Ojp2YWx1ZT4geyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IElzSURMRnJvemVu
QXJyYXkgOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBXVEY6OklzVGVtcGxh
dGU8VCwgSURMRnJvemVuQXJyYXk+Ojp2YWx1ZT4geyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
Pgotc3RydWN0IElzSURMUmVjb3JkIDogcHVibGljIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9v
bCwgV1RGOjpJc1RlbXBsYXRlPFQsIElETFJlY29yZD46OnZhbHVlPiB7IH07Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgSXNJRExOdW1iZXIgOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxib29sLCBXVEY6OklzQmFzZU9mVGVtcGxhdGU8SURMTnVtYmVyLCBUPjo6dmFsdWU+
IHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBJc0lETEludGVnZXIgOiBwdWJs
aWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBXVEY6OklzQmFzZU9mVGVtcGxhdGU8SURM
SW50ZWdlciwgVD46OnZhbHVlPiB7IH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmNwcAkocmV2aXNpb24gMjEwMjg2KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAkobm9uZXhpc3RlbnQp
CkBAIC0xLDE4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgiCi0KLSNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKLSNpbmNsdWRl
ICJNZWRpYVBsYXllci5oIgotI2luY2x1ZGUgIldlYlNvY2tldC5oIgotI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKQotewotICAgIHJlc2V0KCk7Ci0jaWYg
RU5BQkxFKE1FRElBX1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9pc01lZGlhU3Ry
ZWFtRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6cmVzZXQoKQotewotICAgIG1faXNMb2NhbFN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKLSAg
ICBtX2lzU2Vzc2lvblN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKLSAgICBtX2lzV2Via2l0Tm90aWZp
Y2F0aW9uc0VuYWJsZWQgPSBmYWxzZTsKLSAgICBtX2lzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQg
PSB0cnVlOwotICAgIG1faXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQgPSB0cnVlOwotICAgIG1f
aXNHZW9sb2NhdGlvbkVuYWJsZWQgPSB0cnVlOwotICAgIG1faXNUb3VjaEVuYWJsZWQgPSB0cnVl
OwotICAgIG1faXNEZXZpY2VNb3Rpb25FbmFibGVkID0gdHJ1ZTsKLSAgICBtX2lzRGV2aWNlT3Jp
ZW50YXRpb25FbmFibGVkID0gdHJ1ZTsKLSAgICBtX2lzTGlua1ByZWxvYWRFbmFibGVkID0gZmFs
c2U7Ci0gICAgbV9pc0xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkID0gZmFs
c2U7Ci0gICAgbV9pc1Jlc291cmNlVGltaW5nRW5hYmxlZCA9IGZhbHNlOwotI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQotICAgIG1faXNJbmRleGVkREJFbmFibGVkID0gdHJ1ZTsKLSNlbmRp
ZgotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpCi0gICAgbV9pc0luZGV4
ZWREQldvcmtlcnNFbmFibGVkID0gdHJ1ZTsKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJfUlRDKQot
ICAgIG1faXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0jaWYgRU5BQkxF
KExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQotICAgIG1faXNMZWdhY3lDU1NWZW5kb3JQcmVm
aXhlc0VuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0kxOE5f
QVBJKQotICAgIG1faXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgot
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEUpCi0gICAgbV9pc0lucHV0VHlwZURhdGVFbmFibGVk
ID0gdHJ1ZTsKLSNlbmRpZgotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExF
VEUpCi0gICAgbV9pc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0j
aWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkKLSAgICBtX2lzSW5wdXRUeXBlRGF0
ZVRpbWVMb2NhbEVuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVf
TU9OVEgpCi0gICAgbV9pc0lucHV0VHlwZU1vbnRoRW5hYmxlZCA9IHRydWU7Ci0jZW5kaWYKLSNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FKQotICAgIG1faXNJbnB1dFR5cGVUaW1lRW5hYmxlZCA9
IHRydWU7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9XRUVLKQotICAgIG1faXNJbnB1
dFR5cGVXZWVrRW5hYmxlZCA9IHRydWU7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoQ1NQX05FWFQpCi0g
ICAgbV9hcmVFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQg
PSBmYWxzZTsKLSNlbmRpZgotI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIG1faXNG
b250TG9hZEV2ZW50c0VuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0jaWYgRU5BQkxFKENTU19BTklN
QVRJT05TX0xFVkVMXzIpCi0gICAgbV9hcmVBbmltYXRpb25UcmlnZ2Vyc0VuYWJsZWQgPSBmYWxz
ZTsKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJfQU5JTUFUSU9OUykKLSAgICBtX2FyZVdlYkFuaW1h
dGlvbnNFbmFibGVkID0gZmFsc2U7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VU
KQotICAgIG1fY3NzR3JpZExheW91dEVuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0jaWYgRU5BQkxF
KElOVEVSU0VDVElPTl9PQlNFUlZFUikKLSAgICBtX2ludGVyc2VjdGlvbk9ic2VydmVyRW5hYmxl
ZCA9IGZhbHNlOwotI2VuZGlmCi19Ci0KLVJ1bnRpbWVFbmFibGVkRmVhdHVyZXMmIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UnVudGltZUVuYWJsZWRGZWF0dXJlcz4gcnVudGltZUVuYWJsZWRGZWF0dXJlczsKLQot
ICAgIHJldHVybiBydW50aW1lRW5hYmxlZEZlYXR1cmVzOwotfQotCi0jaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfSTE4Tl9BUEkpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmphdmFTY3JpcHRJ
MThOQVBJRW5hYmxlZCgpCi17Ci0gICAgcmV0dXJuIG1faXNKYXZhU2NyaXB0STE4TkFQSUVuYWJs
ZWQ7Ci19Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShWSURFTykKLWJvb2wgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6YXVkaW9FbmFibGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6
OmlzQXZhaWxhYmxlKCk7Ci19Ci0KLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbE1l
ZGlhRWxlbWVudEVuYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNB
dmFpbGFibGUoKTsKLX0KLQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sQXVkaW9F
bGVtZW50RW5hYmxlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWls
YWJsZSgpOwotfQotCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omh0bWxWaWRlb0VsZW1l
bnRFbmFibGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxl
KCk7Ci19Ci0KLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbFNvdXJjZUVsZW1lbnRF
bmFibGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7
Ci19Ci0KLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFDb250cm9sbGVyRW5hYmxl
ZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOwotfQot
Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhRXJyb3JFbmFibGVkKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7Ci19Ci0KLWJvb2wgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6dGltZVJhbmdlc0VuYWJsZWQoKSBjb25zdAotewotICAgIHJl
dHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJTb2NrZXRFbmFi
bGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViU29ja2V0Ojppc0F2YWlsYWJsZSgpOwotfQot
I2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAkocmV2
aXNpb24gMjEwMjg2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNzcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAK
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgIlBsYXRmb3JtRXhwb3J0TWFjcm9zLmgiCi0jaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQSBjbGFz
cyB0aGF0IHN0b3JlcyBzdGF0aWMgZW5hYmxlcnMgZm9yIGFsbCBleHBlcmltZW50YWwgZmVhdHVy
ZXMuIE5vdGUgdGhhdAotLy8gdGhlIG1ldGhvZCBuYW1lcyBtdXN0IGxpbmUgdXAgd2l0aCB0aGUg
SmF2YVNjcmlwdCBtZXRob2QgdGhleSBlbmFibGUgZm9yIGNvZGUKLS8vIGdlbmVyYXRpb24gdG8g
d29yayBwcm9wZXJseS4KLQotY2xhc3MgUnVudGltZUVuYWJsZWRGZWF0dXJlcyB7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUnVudGltZUVuYWJsZWRGZWF0dXJlcyk7Ci1wdWJsaWM6Ci0gICAg
dm9pZCBzZXRMb2NhbFN0b3JhZ2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNMb2NhbFN0
b3JhZ2VFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgYm9vbCBsb2NhbFN0b3JhZ2VFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc0xvY2FsU3RvcmFnZUVuYWJsZWQ7IH0KLQotICAgIHZvaWQg
c2V0U2Vzc2lvblN0b3JhZ2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNTZXNzaW9uU3Rv
cmFnZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIHNlc3Npb25TdG9yYWdlRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQ7IH0KLQotICAgIHZv
aWQgc2V0V2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1dl
YmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgYm9vbCB3ZWJraXRO
b3RpZmljYXRpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNXZWJraXROb3RpZmljYXRp
b25zRW5hYmxlZDsgfQotCi0gICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBtX2lzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
LSAgICBib29sIGFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkOyB9Ci0KLSAgICB2b2lkIHNldERhdGFUcmFuc2Zlckl0ZW1z
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkID0g
aXNFbmFibGVkOyB9Ci0gICAgYm9vbCBkYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkOyB9Ci0KLSAgICB2b2lkIHNldERP
TUl0ZXJhdG9yRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzRE9NSXRlcmF0b3JFbmFibGVk
ID0gaXNFbmFibGVkOyB9Ci0gICAgYm9vbCBkb21JdGVyYXRvckVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzRE9NSXRlcmF0b3JFbmFibGVkOyB9Ci0KLSAgICB2b2lkIHNldEdlb2xvY2F0aW9u
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzR2VvbG9jYXRpb25FbmFibGVkID0gaXNFbmFi
bGVkOyB9Ci0gICAgYm9vbCBnZW9sb2NhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
R2VvbG9jYXRpb25FbmFibGVkOyB9Ci0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAg
ICB2b2lkIHNldFdlYmtpdEluZGV4ZWREQkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lu
ZGV4ZWREQkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIHdlYmtpdEluZGV4ZWREQkVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5kZXhlZERCRW5hYmxlZDsgfQotICAgIGJvb2wg
aW5kZXhlZERCRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbmRleGVkREJFbmFibGVkOyB9
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpCi0gICAg
dm9pZCBzZXRJbmRleGVkREJXb3JrZXJzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSW5k
ZXhlZERCV29ya2Vyc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIGluZGV4ZWREQldv
cmtlcnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0luZGV4ZWREQldvcmtlcnNFbmFibGVk
OyB9Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIHZvaWQgc2V0
Rm9udExvYWRFdmVudHNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNGb250TG9hZEV2ZW50
c0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIGZvbnRMb2FkRXZlbnRzRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNGb250TG9hZEV2ZW50c0VuYWJsZWQ7IH0KLSNlbHNlCi0gICAg
dm9pZCBzZXRGb250TG9hZEV2ZW50c0VuYWJsZWQoYm9vbCkgeyB9Ci0gICAgYm9vbCBmb250TG9h
ZEV2ZW50c0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUo
VklERU8pCi0gICAgYm9vbCBhdWRpb0VuYWJsZWQoKSBjb25zdDsKLSAgICBib29sIGh0bWxNZWRp
YUVsZW1lbnRFbmFibGVkKCkgY29uc3Q7Ci0gICAgYm9vbCBodG1sQXVkaW9FbGVtZW50RW5hYmxl
ZCgpIGNvbnN0OwotICAgIGJvb2wgaHRtbFZpZGVvRWxlbWVudEVuYWJsZWQoKSBjb25zdDsKLSAg
ICBib29sIGh0bWxTb3VyY2VFbGVtZW50RW5hYmxlZCgpIGNvbnN0OwotICAgIGJvb2wgbWVkaWFD
b250cm9sbGVyRW5hYmxlZCgpIGNvbnN0OwotICAgIGJvb2wgbWVkaWFFcnJvckVuYWJsZWQoKSBj
b25zdDsKLSAgICBib29sIHRpbWVSYW5nZXNFbmFibGVkKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lm
IEVOQUJMRShXRUJfU09DS0VUUykKLSAgICBib29sIHdlYlNvY2tldEVuYWJsZWQoKSBjb25zdDsK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBib29sIHRvdWNoRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUb3VjaEVuYWJsZWQ7IH0KLSAgICB2b2lkIHNldFRvdWNo
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzVG91Y2hFbmFibGVkID0gaXNFbmFibGVkOyB9
Ci0jZW5kaWYKLQotICAgIHZvaWQgc2V0RGV2aWNlTW90aW9uRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBtX2lzRGV2aWNlTW90aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIGJvb2wgZGV2
aWNlTW90aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXZpY2VNb3Rpb25FbmFibGVk
OyB9Ci0gICAgYm9vbCBkZXZpY2VNb3Rpb25FdmVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzRGV2aWNlTW90aW9uRW5hYmxlZDsgfQotICAgIGJvb2wgb25kZXZpY2Vtb3Rpb25FbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KLQotICAgIHZvaWQg
c2V0RGV2aWNlT3JpZW50YXRpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNEZXZpY2VP
cmllbnRhdGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIGRldmljZU9yaWVudGF0
aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7
IH0KLSAgICBib29sIGRldmljZU9yaWVudGF0aW9uRXZlbnRFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZDsgfQotICAgIGJvb2wgb25kZXZpY2Vvcmll
bnRhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGV2aWNlT3JpZW50YXRpb25FbmFi
bGVkOyB9Ci0KLSAgICB2b2lkIHNldExpbmtQcmVsb2FkRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBtX2lzTGlua1ByZWxvYWRFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgYm9vbCBsaW5rUHJl
bG9hZEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTGlua1ByZWxvYWRFbmFibGVkOyB9Ci0K
LSNpZiBFTkFCTEUoSkFWQVNDUklQVF9JMThOX0FQSSkKLSAgICBib29sIGphdmFTY3JpcHRJMThO
QVBJRW5hYmxlZCgpIGNvbnN0OwotICAgIHZvaWQgc2V0SmF2YVNjcmlwdEkxOE5BUElFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IG1faXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQgPSBpc0VuYWJs
ZWQ7IH0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBib29sIG1lZGlh
U3RyZWFtRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0K
LSAgICB2b2lkIHNldE1lZGlhU3RyZWFtRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzTWVk
aWFTdHJlYW1FbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgYm9vbCB3ZWJraXRHZXRVc2VyTWVk
aWFFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc01lZGlhU3RyZWFtRW5hYmxlZDsgfQotICAg
IGJvb2wgd2Via2l0TWVkaWFTdHJlYW1FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc01lZGlh
U3RyZWFtRW5hYmxlZDsgfQotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQl9SVEMpCi0gICAgYm9vbCBw
ZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWVkaWFTdHJlYW1FbmFi
bGVkICYmIG1faXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQ7IH0KLSAgICB2b2lkIHNldFBlZXJDb25u
ZWN0aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzUGVlckNvbm5lY3Rpb25FbmFibGVk
ID0gaXNFbmFibGVkOyB9Ci0gICAgYm9vbCB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBwZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTsgfQotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCi0gICAgdm9pZCBzZXRMZWdhY3lD
U1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0xlZ2FjeUNTU1Zl
bmRvclByZWZpeGVzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIGJvb2wgbGVnYWN5Q1NTVmVu
ZG9yUHJlZml4ZXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xlZ2FjeUNTU1ZlbmRvclBy
ZWZpeGVzRW5hYmxlZDsgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFKQot
ICAgIGJvb2wgaW5wdXRUeXBlRGF0ZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5wdXRU
eXBlRGF0ZUVuYWJsZWQ7IH0KLSAgICB2b2lkIHNldElucHV0VHlwZURhdGVFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IG1faXNJbnB1dFR5cGVEYXRlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKQotICAgIGJv
b2wgaW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lucHV0VHlw
ZURhdGVUaW1lRW5hYmxlZDsgfQotICAgIHZvaWQgc2V0SW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IG1faXNJbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQgPSBpc0VuYWJs
ZWQ7IH0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkKLSAg
ICBib29sIGlucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0lucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRJbnB1dFR5cGVE
YXRlVGltZUxvY2FsRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSW5wdXRUeXBlRGF0ZVRp
bWVMb2NhbEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVU
X1RZUEVfTU9OVEgpCi0gICAgYm9vbCBpbnB1dFR5cGVNb250aEVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW5wdXRUeXBlTW9udGhFbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRJbnB1dFR5cGVN
b250aEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lucHV0VHlwZU1vbnRoRW5hYmxlZCA9
IGlzRW5hYmxlZDsgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FKQotICAg
IGJvb2wgaW5wdXRUeXBlVGltZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5wdXRUeXBl
VGltZUVuYWJsZWQ7IH0KLSAgICB2b2lkIHNldElucHV0VHlwZVRpbWVFbmFibGVkKGJvb2wgaXNF
bmFibGVkKSB7IG1faXNJbnB1dFR5cGVUaW1lRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9XRUVLKQotICAgIGJvb2wgaW5wdXRUeXBlV2Vla0Vu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5wdXRUeXBlV2Vla0VuYWJsZWQ7IH0KLSAgICB2
b2lkIHNldElucHV0VHlwZVdlZWtFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJbnB1dFR5
cGVXZWVrRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQ1NQX05F
WFQpCi0gICAgYm9vbCBleHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0Vu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZUV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBv
bGljeUZlYXR1cmVzRW5hYmxlZDsgfQotICAgIHZvaWQgc2V0RXhwZXJpbWVudGFsQ29udGVudFNl
Y3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1fYXJlRXhwZXJp
bWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkID0gaXNFbmFibGVkOyB9
Ci0jZW5kaWYKLQotICAgIGJvb2wgbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVu
YWJsZWQ7IH0KLSAgICAvLyBUaGUgbGFuZyBhdHRyaWJ1dGUgc3VwcG9ydCBpcyBpbmNvbXBsZXRl
IGFuZCBzaG91bGQgb25seSBiZSB0dXJuZWQgb24gZm9yIHRlc3RzLgotICAgIHZvaWQgc2V0TGFu
Z0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9p
c0xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0K
LSAgICB2b2lkIHNldFJlc291cmNlVGltaW5nRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lz
UmVzb3VyY2VUaW1pbmdFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgYm9vbCByZXNvdXJjZVRp
bWluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUmVzb3VyY2VUaW1pbmdFbmFibGVkOyB9
Ci0KLSNpZiBFTkFCTEUoR0FNRVBBRCkKLSAgICB2b2lkIHNldEdhbWVwYWRzRW5hYmxlZChib29s
IGFyZUVuYWJsZWQpIHsgbV9hcmVHYW1lcGFkc0VuYWJsZWQgPSBhcmVFbmFibGVkOyB9Ci0gICAg
Ym9vbCBnYW1lcGFkc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZUdhbWVwYWRzRW5hYmxl
ZDsgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKLSAgICB2
b2lkIHNldEFuaW1hdGlvblRyaWdnZXJzRW5hYmxlZChib29sIGFyZUVuYWJsZWQpIHsgbV9hcmVB
bmltYXRpb25UcmlnZ2Vyc0VuYWJsZWQgPSBhcmVFbmFibGVkOyB9Ci0gICAgYm9vbCBhbmltYXRp
b25UcmlnZ2Vyc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZUFuaW1hdGlvblRyaWdnZXJz
RW5hYmxlZDsgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0FOSU1BVElPTlMpCi0gICAgdm9p
ZCBzZXRXZWJBbmltYXRpb25zRW5hYmxlZChib29sIGFyZUVuYWJsZWQpIHsgbV9hcmVXZWJBbmlt
YXRpb25zRW5hYmxlZCA9IGFyZUVuYWJsZWQ7IH0KLSAgICBib29sIHdlYkFuaW1hdGlvbnNFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9hcmVXZWJBbmltYXRpb25zRW5hYmxlZDsgfQotI2VuZGlm
Ci0KLSAgICB2b2lkIHNldFNoYWRvd0RPTUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1No
YWRvd0RPTUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIHNoYWRvd0RPTUVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzU2hhZG93RE9NRW5hYmxlZDsgfQotCi0gICAgdm9pZCBzZXRJ
bnB1dEV2ZW50c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pbnB1dEV2ZW50c0VuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIGlucHV0RXZlbnRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faW5wdXRFdmVudHNFbmFibGVkOyB9Ci0KLSAgICB2b2lkIHNldEludGVyYWN0aXZlRm9y
bVZhbGlkYXRpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJbnRlcmFjdGl2ZUZvcm1W
YWxpZGF0aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIGJvb2wgaW50ZXJhY3RpdmVGb3Jt
VmFsaWRhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW50ZXJhY3RpdmVGb3JtVmFs
aWRhdGlvbkVuYWJsZWQ7IH0KLQotICAgIHZvaWQgc2V0Q3VzdG9tRWxlbWVudHNFbmFibGVkKGJv
b2wgYXJlRW5hYmxlZCkgeyBtX2FyZUN1c3RvbUVsZW1lbnRzRW5hYmxlZCA9IGFyZUVuYWJsZWQ7
IH0KLSAgICBib29sIGN1c3RvbUVsZW1lbnRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJl
Q3VzdG9tRWxlbWVudHNFbmFibGVkOyB9Ci0KLSNpZiBFTkFCTEUoV0VCR0wyKQotICAgIHZvaWQg
c2V0V2ViR0wyRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzV2ViR0wyRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQotICAgIGJvb2wgd2ViR0wyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNX
ZWJHTDJFbmFibGVkOyB9Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShGRVRDSF9BUEkpCi0gICAgdm9p
ZCBzZXRGZXRjaEFQSUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0ZldGNoQVBJRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQotICAgIGJvb2wgZmV0Y2hBUElFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0ZldGNoQVBJRW5hYmxlZDsgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRE9XTkxPQURf
QVRUUklCVVRFKQotICAgIHZvaWQgc2V0RG93bmxvYWRBdHRyaWJ1dGVFbmFibGVkKGJvb2wgaXNF
bmFibGVkKSB7IG1faXNEb3dubG9hZEF0dHJpYnV0ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAg
ICBib29sIGRvd25sb2FkQXR0cmlidXRlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEb3du
bG9hZEF0dHJpYnV0ZUVuYWJsZWQ7IH0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKENTU19HUklEX0xB
WU9VVCkKLSAgICB2b2lkIHNldENTU0dyaWRMYXlvdXRFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7
IG1fY3NzR3JpZExheW91dEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIGlzQ1NTR3Jp
ZExheW91dEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Nzc0dyaWRMYXlvdXRFbmFibGVkOyB9
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCi0gICAgdm9pZCBz
ZXRJbnRlcnNlY3Rpb25PYnNlcnZlckVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pbnRlcnNl
Y3Rpb25PYnNlcnZlckVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIGludGVyc2VjdGlv
bk9ic2VydmVyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJzZWN0aW9uT2JzZXJ2ZXJF
bmFibGVkOyB9Ci0jZW5kaWYKLQotICAgIHZvaWQgc2V0TW9kZXJuTWVkaWFDb250cm9sc0VuYWJs
ZWQoYm9vbCBhcmVFbmFibGVkKSB7IG1fYXJlTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQgPSBh
cmVFbmFibGVkOyB9Ci0gICAgYm9vbCBtb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYXJlTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQ7IH0KLQotI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCi0gICAgdm9pZCBzZXRFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgbV9lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQgPSBpc0VuYWJsZWQ7
IH0KLSAgICBib29sIGVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW5jcnlwdGVkTWVkaWFBUElFbmFibGVkOyB9Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShTVUJUTEVf
Q1JZUFRPKQotICAgIHZvaWQgc2V0U3VidGxlQ3J5cHRvRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBtX2lzU3VidGxlQ3J5cHRvRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIGJvb2wgc3VidGxl
Q3J5cHRvRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdWJ0bGVDcnlwdG9FbmFibGVkOyB9
Ci0jZW5kaWYKLQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzJiBzaGFyZWRGZWF0dXJlcygpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldCgp
OwotCi1wcml2YXRlOgotICAgIC8vIE5ldmVyIGluc3RhbnRpYXRlLgotICAgIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMoKTsKLQotICAgIGJvb2wgbV9hcmVNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxl
ZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzTG9jYWxTdG9yYWdlRW5hYmxlZDsKLSAgICBib29s
IG1faXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQ7Ci0gICAgYm9vbCBtX2lzV2Via2l0Tm90aWZpY2F0
aW9uc0VuYWJsZWQ7Ci0gICAgYm9vbCBtX2lzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQ7Ci0gICAg
Ym9vbCBtX2lzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkOwotICAgIGJvb2wgbV9pc0RPTUl0ZXJh
dG9yRW5hYmxlZCB7IHRydWUgfTsKLSAgICBib29sIG1faXNHZW9sb2NhdGlvbkVuYWJsZWQ7Ci0g
ICAgYm9vbCBtX2lzVG91Y2hFbmFibGVkOwotICAgIGJvb2wgbV9pc0RldmljZU1vdGlvbkVuYWJs
ZWQ7Ci0gICAgYm9vbCBtX2lzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOwotICAgIGJvb2wgbV9p
c0xpbmtQcmVsb2FkRW5hYmxlZDsKLSAgICBib29sIG1faXNMYW5nQXR0cmlidXRlQXdhcmVGb3Jt
Q29udHJvbFVJRW5hYmxlZDsKLSAgICBib29sIG1faXNSZXNvdXJjZVRpbWluZ0VuYWJsZWQ7Ci0K
LSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICBib29sIG1faXNJbmRleGVkREJFbmFi
bGVkOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKQot
ICAgIGJvb2wgbV9pc0luZGV4ZWREQldvcmtlcnNFbmFibGVkOwotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoSkFWQVNDUklQVF9JMThOX0FQSSkKLSAgICBib29sIG1faXNKYXZhU2NyaXB0STE4TkFQSUVu
YWJsZWQ7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgYm9vbCBtX2lz
TWVkaWFTdHJlYW1FbmFibGVkIHsgdHJ1ZSB9OwotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQl9SVEMp
Ci0gICAgYm9vbCBtX2lzUGVlckNvbm5lY3Rpb25FbmFibGVkOwotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCi0gICAgYm9vbCBtX2lzTGVnYWN5Q1NTVmVu
ZG9yUHJlZml4ZXNFbmFibGVkOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRF
KQotICAgIGJvb2wgbV9pc0lucHV0VHlwZURhdGVFbmFibGVkOwotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKQotICAgIGJvb2wgbV9pc0lucHV0VHlw
ZURhdGVUaW1lRW5hYmxlZDsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJ
TUVMT0NBTCkKLSAgICBib29sIG1faXNJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZDsKLSNl
bmRpZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfTU9OVEgpCi0gICAgYm9vbCBtX2lzSW5wdXRU
eXBlTW9udGhFbmFibGVkOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FKQot
ICAgIGJvb2wgbV9pc0lucHV0VHlwZVRpbWVFbmFibGVkOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9XRUVLKQotICAgIGJvb2wgbV9pc0lucHV0VHlwZVdlZWtFbmFibGVkOwotI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoQ1NQX05FWFQpCi0gICAgYm9vbCBtX2FyZUV4cGVyaW1lbnRhbENv
bnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZDsKLSNlbmRpZgotCi0jaWYgRU5BQkxF
KEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgYm9vbCBtX2lzRm9udExvYWRFdmVudHNFbmFibGVkOwot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoR0FNRVBBRCkKLSAgICBib29sIG1fYXJlR2FtZXBhZHNFbmFi
bGVkIHsgZmFsc2UgfTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVM
XzIpCi0gICAgYm9vbCBtX2FyZUFuaW1hdGlvblRyaWdnZXJzRW5hYmxlZDsKLSNlbmRpZgotCi0j
aWYgRU5BQkxFKFdFQl9BTklNQVRJT05TKQotICAgIGJvb2wgbV9hcmVXZWJBbmltYXRpb25zRW5h
YmxlZDsKLSNlbmRpZgotICAgIAotICAgIGJvb2wgbV9pc1NoYWRvd0RPTUVuYWJsZWQ7Ci0KLSAg
ICBib29sIG1faW5wdXRFdmVudHNFbmFibGVkOwotCi0gICAgYm9vbCBtX2lzSW50ZXJhY3RpdmVG
b3JtVmFsaWRhdGlvbkVuYWJsZWQgeyBmYWxzZSB9OwotCi0gICAgYm9vbCBtX2FyZUN1c3RvbUVs
ZW1lbnRzRW5hYmxlZCB7IHRydWUgfTsKLQotI2lmIEVOQUJMRShXRUJHTDIpCi0gICAgYm9vbCBt
X2lzV2ViR0wyRW5hYmxlZDsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEZFVENIX0FQSSkKLSAgICBi
b29sIG1faXNGZXRjaEFQSUVuYWJsZWQgeyBmYWxzZSB9OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUo
RE9XTkxPQURfQVRUUklCVVRFKQotICAgIGJvb2wgbV9pc0Rvd25sb2FkQXR0cmlidXRlRW5hYmxl
ZCB7IGZhbHNlIH07Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAg
Ym9vbCBtX2Nzc0dyaWRMYXlvdXRFbmFibGVkOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQotICAgIGJvb2wgbV9lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQgeyBmYWxzZSB9
OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09CU0VSVkVSKQotICAgIGJvb2wg
bV9pbnRlcnNlY3Rpb25PYnNlcnZlckVuYWJsZWQgeyBmYWxzZSB9OwotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoU1VCVExFX0NSWVBUTykKLSAgICBib29sIG1faXNTdWJ0bGVDcnlwdG9FbmFibGVkOwot
I2VuZGlmCi0KLSAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxSdW50aW1lRW5h
YmxlZEZlYXR1cmVzPjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNo
YW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMj
Ci1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFjay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFjay5jcHAJ
KHJldmlzaW9uIDIxMDI4NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQWN0
aXZlRE9NQ2FsbGJhY2suY3BwCShub25leGlzdGVudCkKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMC4gMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJBY3RpdmVET01DYWxsYmFjay5oIgotCi0jaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUFjdGl2ZURPTUNhbGxiYWNrOjpBY3RpdmVET01DYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQotICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkK
LXsKLX0KLQotQWN0aXZlRE9NQ2FsbGJhY2s6On5BY3RpdmVET01DYWxsYmFjaygpCi17Ci19Ci0K
LWJvb2wgQWN0aXZlRE9NQ2FsbGJhY2s6OmNhbkludm9rZUNhbGxiYWNrKCkgY29uc3QKLXsKLSAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOwotICAgIHJldHVybiBjb250ZXh0ICYmICFjb250ZXh0LT5hY3RpdmVET01PYmplY3RzQXJl
U3VzcGVuZGVkKCkgJiYgIWNvbnRleHQtPmFjdGl2ZURPTU9iamVjdHNBcmVTdG9wcGVkKCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJp
Yy9BY3RpdmVET01DYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suaAkocmV2aXNpb24gMjEwMjg2KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFjay5oCShub25leGlz
dGVudCkKQEAgLTEsNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwotCi0vLyBBIGJhc2UgY2xhc3MgdGhhdCBwcmV2ZW50
cyBiaW5kaW5nIGNhbGxiYWNrcyBmcm9tIGV4ZWN1dGluZyB3aGVuCi0vLyBhY3RpdmUgZG9tIG9i
amVjdHMgYXJlIHN0b3BwZWQgb3Igc3VzcGVuZGVkLgotLy8KLS8vIFNob3VsZCBvbmx5IGJlIGNy
ZWF0ZWQsIHVzZWQsIGFuZCBkZXN0cm95ZWQgb24gdGhlIHNjcmlwdCBleGVjdXRpb24KLS8vIGNv
bnRleHQgdGhyZWFkLgotY2xhc3MgQWN0aXZlRE9NQ2FsbGJhY2sgOiBwdWJsaWMgQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXIgewotcHVibGljOgotICAgIEFjdGl2ZURPTUNhbGxiYWNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpOwotICAgIHZpcnR1YWwgfkFjdGl2ZURPTUNhbGxi
YWNrKCk7Ci0KLSAgICBib29sIGNhbkludm9rZUNhbGxiYWNrKCkgY29uc3Q7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmgKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0lETFR5cGVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9JRExUeXBl
cy5oCShyZXZpc2lvbiAyMTAyODYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L0lETFR5cGVzLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMjYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8aGVhcC9IYW5kbGVUeXBlcy5oPgotI2luY2x1ZGUg
PHd0Zi9CcmlnYW5kLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVz
cGFjZSBKU0MgewotY2xhc3MgQXJyYXlCdWZmZXI7Ci1jbGFzcyBBcnJheUJ1ZmZlclZpZXc7Ci1j
bGFzcyBKU1ZhbHVlOwotY2xhc3MgSlNPYmplY3Q7Ci10ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3Mg
U3Ryb25nOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lPiBj
bGFzcyBET01Qcm9taXNlOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IElETFR5cGUg
ewotICAgIHVzaW5nIEltcGxlbWVudGF0aW9uVHlwZSA9IFQ7Ci0gICAgdXNpbmcgUGFyYW1ldGVy
VHlwZSA9IFQ7Ci0KLSAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBzdGQ6Om9wdGlvbmFsPEltcGxl
bWVudGF0aW9uVHlwZT47Ci0gICAgc3RhdGljIE51bGxhYmxlVHlwZSBudWxsVmFsdWUoKSB7IHJl
dHVybiBzdGQ6Om51bGxvcHQ7IH0KLSAgICBzdGF0aWMgYm9vbCBpc051bGxWYWx1ZShjb25zdCBO
dWxsYWJsZVR5cGUmIHZhbHVlKSB7IHJldHVybiAhdmFsdWU7IH0KLSAgICBzdGF0aWMgSW1wbGVt
ZW50YXRpb25UeXBlIGV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShjb25zdCBOdWxsYWJsZVR5cGUm
IHZhbHVlKSB7IHJldHVybiB2YWx1ZS52YWx1ZSgpOyB9Ci19OwotCi0vLyBJRExVbnN1cHBvcnRl
ZFR5cGUgaXMgYSBzcGVjaWFsIHR5cGUgdGhhdCBzZXJ2ZXMgYXMgYSBiYXNlIGNsYXNzIGZvciBj
dXJyZW50bHkgdW5zdXBwb3J0ZWQgdHlwZXMuCi1zdHJ1Y3QgSURMVW5zdXBwb3J0ZWRUeXBlIDog
SURMVHlwZTx2b2lkPiB7IH07Ci0KLS8vIElETE51bGwgaXMgYSBzcGVjaWFsIHR5cGUgZm9yIHVz
ZSBhcyBhIHN1YnR5cGUgaW4gYW4gSURMVW5pb24gdGhhdCBpcyBudWxsYWJsZS4KLXN0cnVjdCBJ
RExOdWxsIDogSURMVHlwZTxzdGQ6Om51bGxwdHJfdD4geyB9OwotCi1zdHJ1Y3QgSURMQW55IDog
SURMVHlwZTxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiB7Ci0gICAgdXNpbmcgUGFyYW1ldGVy
VHlwZSA9IEpTQzo6SlNWYWx1ZTsKLQotICAgIHVzaW5nIE51bGxhYmxlVHlwZSA9IEpTQzo6U3Ry
b25nPEpTQzo6VW5rbm93bj47Ci0gICAgc3RhdGljIGlubGluZSBzdGQ6Om51bGxwdHJfdCBudWxs
VmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3Rh
dGljIGlubGluZSBib29sIGlzTnVsbFZhbHVlKFUmJiB2YWx1ZSkgeyByZXR1cm4gIXZhbHVlOyB9
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIGlubGluZSBVJiYgZXh0cmFjdFZhbHVl
RnJvbU51bGxhYmxlKFUmJiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpmb3J3YXJkPFU+KHZhbHVlKTsg
fQotfTsKLQotc3RydWN0IElETEJvb2xlYW4gOiBJRExUeXBlPGJvb2w+IHsgfTsKLQotdGVtcGxh
dGU8dHlwZW5hbWUgTnVtZXJpY1R5cGU+IHN0cnVjdCBJRExOdW1iZXIgOiBJRExUeXBlPE51bWVy
aWNUeXBlPiB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEludGVnZXJUeXBlPiBzdHJ1Y3QgSURM
SW50ZWdlciA6IElETE51bWJlcjxJbnRlZ2VyVHlwZT4geyB9Owotc3RydWN0IElETEJ5dGUgOiBJ
RExJbnRlZ2VyPGludDhfdD4geyB9Owotc3RydWN0IElETE9jdGV0IDogSURMSW50ZWdlcjx1aW50
OF90PiB7IH07Ci1zdHJ1Y3QgSURMU2hvcnQgOiBJRExJbnRlZ2VyPGludDE2X3Q+IHsgfTsKLXN0
cnVjdCBJRExVbnNpZ25lZFNob3J0IDogSURMSW50ZWdlcjx1aW50MTZfdD4geyB9Owotc3RydWN0
IElETExvbmcgOiBJRExJbnRlZ2VyPGludDMyX3Q+IHsgfTsKLXN0cnVjdCBJRExVbnNpZ25lZExv
bmcgOiBJRExJbnRlZ2VyPHVpbnQzMl90PiB7IH07Ci1zdHJ1Y3QgSURMTG9uZ0xvbmcgOiBJRExJ
bnRlZ2VyPGludDY0X3Q+IHsgfTsKLXN0cnVjdCBJRExVbnNpZ25lZExvbmdMb25nIDogSURMSW50
ZWdlcjx1aW50NjRfdD4geyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGbG9hdGluZ1BvaW50VHlw
ZSwgYm9vbCB1bnJlc3RyaWN0ZWQgPSBmYWxzZT4gc3RydWN0IElETEZsb2F0aW5nUG9pbnQgOiBJ
RExOdW1iZXI8RmxvYXRpbmdQb2ludFR5cGU+IHsKLSAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
aXNVbnJlc3RyaWN0ZWQgPSB1bnJlc3RyaWN0ZWQ7Ci19Owotc3RydWN0IElETEZsb2F0IDogSURM
RmxvYXRpbmdQb2ludDxmbG9hdD4geyB9Owotc3RydWN0IElETFVucmVzdHJpY3RlZEZsb2F0IDog
SURMRmxvYXRpbmdQb2ludDxmbG9hdCwgdHJ1ZT4geyB9Owotc3RydWN0IElETERvdWJsZSA6IElE
TEZsb2F0aW5nUG9pbnQ8ZG91YmxlPiB7IH07Ci1zdHJ1Y3QgSURMVW5yZXN0cmljdGVkRG91Ymxl
IDogSURMRmxvYXRpbmdQb2ludDxkb3VibGUsIHRydWU+IHsgfTsKLQotc3RydWN0IElETFN0cmlu
ZyA6IElETFR5cGU8U3RyaW5nPiB7Ci0gICAgdXNpbmcgUGFyYW1ldGVyVHlwZSA9IGNvbnN0IFN0
cmluZyY7Ci0KLSAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBTdHJpbmc7Ci0gICAgc3RhdGljIFN0
cmluZyBudWxsVmFsdWUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHN0YXRpYyBib29sIGlz
TnVsbFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmlzTnVsbCgpOyB9
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IHN0YXRpYyBVJiYgZXh0cmFjdFZhbHVlRnJvbU51
bGxhYmxlKFUmJiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpmb3J3YXJkPFU+KHZhbHVlKTsgfQotfTsK
LXN0cnVjdCBJRExET01TdHJpbmcgOiBJRExTdHJpbmcgeyB9Owotc3RydWN0IElETEJ5dGVTdHJp
bmcgOiBJRExTdHJpbmcgeyB9Owotc3RydWN0IElETFVTVlN0cmluZyA6IElETFN0cmluZyB7IH07
Ci0KLXN0cnVjdCBJRExPYmplY3QgOiBJRExUeXBlPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+
PiB7Ci0gICAgdXNpbmcgTnVsbGFibGVUeXBlID0gSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD47
Ci0KLSAgICBzdGF0aWMgaW5saW5lIHN0ZDo6bnVsbHB0cl90IG51bGxWYWx1ZSgpIHsgcmV0dXJu
IG51bGxwdHI7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMgaW5saW5lIGJvb2wg
aXNOdWxsVmFsdWUoVSYmIHZhbHVlKSB7IHJldHVybiAhdmFsdWU7IH0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBzdGF0aWMgaW5saW5lIFUmJiBleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoVSYm
IHZhbHVlKSB7IHJldHVybiBzdGQ6OmZvcndhcmQ8VT4odmFsdWUpOyB9Ci19OwotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMV3JhcHBlciA6IElETFR5cGU8UmVmUHRyPFQ+PiB7Ci0g
ICAgdXNpbmcgUmF3VHlwZSA9IFQ7Ci0KLSAgICB1c2luZyBQYXJhbWV0ZXJUeXBlID0gVCY7Ci0K
LSAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBSZWZQdHI8VD47Ci0gICAgc3RhdGljIGlubGluZSBz
dGQ6Om51bGxwdHJfdCBudWxsVmFsdWUoKSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVT4gc3RhdGljIGlubGluZSBib29sIGlzTnVsbFZhbHVlKFUmJiB2YWx1ZSkg
eyByZXR1cm4gIXZhbHVlOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIGlubGlu
ZSBVJiYgZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKFUmJiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpm
b3J3YXJkPFU+KHZhbHVlKTsgfQotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElE
TEludGVyZmFjZSA6IElETFdyYXBwZXI8VD4geyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IElETENhbGxiYWNrSW50ZXJmYWNlIDogSURMV3JhcHBlcjxUPiB7IH07Ci10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgSURMQ2FsbGJhY2tGdW5jdGlvbiA6IElETFdyYXBwZXI8VD4geyB9
OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMRGljdGlvbmFyeSA6IElETFR5cGU8
VD4gewotICAgIHVzaW5nIFBhcmFtZXRlclR5cGUgPSBjb25zdCBUJjsKLX07Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExFbnVtZXJhdGlvbiA6IElETFR5cGU8VD4geyB9OwotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMTnVsbGFibGUgOiBJRExUeXBlPHR5cGVuYW1l
IFQ6Ok51bGxhYmxlVHlwZT4gewotICAgIHVzaW5nIElubmVyVHlwZSA9IFQ7Ci19OwotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMU2VxdWVuY2UgOiBJRExUeXBlPFZlY3Rvcjx0eXBl
bmFtZSBUOjpJbXBsZW1lbnRhdGlvblR5cGU+PiB7Ci0gICAgdXNpbmcgSW5uZXJUeXBlID0gVDsK
LQotICAgIHVzaW5nIFBhcmFtZXRlclR5cGUgPSBjb25zdCBWZWN0b3I8dHlwZW5hbWUgVDo6SW1w
bGVtZW50YXRpb25UeXBlPiY7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURM
RnJvemVuQXJyYXkgOiBJRExUeXBlPFZlY3Rvcjx0eXBlbmFtZSBUOjpJbXBsZW1lbnRhdGlvblR5
cGU+PiB7Ci0gICAgdXNpbmcgSW5uZXJUeXBlID0gVDsKLQotICAgIHVzaW5nIFBhcmFtZXRlclR5
cGUgPSBjb25zdCBWZWN0b3I8dHlwZW5hbWUgVDo6SW1wbGVtZW50YXRpb25UeXBlPiY7Ci19Owot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPiBzdHJ1Y3QgSURMUmVjb3JkIDogSURM
VHlwZTxIYXNoTWFwPHR5cGVuYW1lIEs6OkltcGxlbWVudGF0aW9uVHlwZSwgdHlwZW5hbWUgVjo6
SW1wbGVtZW50YXRpb25UeXBlPj4gewotICAgIHVzaW5nIEtleVR5cGUgPSBLOwotICAgIHVzaW5n
IFZhbHVlVHlwZSA9IFY7Ci0KLSAgICB1c2luZyBQYXJhbWV0ZXJUeXBlID0gY29uc3QgSGFzaE1h
cDx0eXBlbmFtZSBLOjpJbXBsZW1lbnRhdGlvblR5cGUsIHR5cGVuYW1lIFY6OkltcGxlbWVudGF0
aW9uVHlwZT4mOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFByb21pc2Ug
OiBJRExUeXBlPERPTVByb21pc2U8VD4+IHsKLSAgICB1c2luZyBJbm5lclR5cGUgPSBUOwotfTsK
LQotc3RydWN0IElETEVycm9yIDogSURMVW5zdXBwb3J0ZWRUeXBlIHsgfTsKLXN0cnVjdCBJRExE
T01FeGNlcHRpb24gOiBJRExVbnN1cHBvcnRlZFR5cGUgeyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBUcz4KLXN0cnVjdCBJRExVbmlvbiA6IElETFR5cGU8VmFyaWFudDx0eXBlbmFtZSBUczo6
SW1wbGVtZW50YXRpb25UeXBlLi4uPj4gewotICAgIHVzaW5nIFR5cGVMaXN0ID0gYnJpZ2FuZDo6
bGlzdDxUcy4uLj47Ci0KLSAgICB1c2luZyBQYXJhbWV0ZXJUeXBlID0gY29uc3QgVmFyaWFudDx0
eXBlbmFtZSBUczo6SW1wbGVtZW50YXRpb25UeXBlLi4uPiY7Ci19OwotCi0vLyBOb24tV2ViSURM
IGV4dGVuc2lvbnMKLQotc3RydWN0IElETERhdGUgOiBJRExUeXBlPGRvdWJsZT4geyAKLSAgICB1
c2luZyBOdWxsYWJsZVR5cGUgPSBkb3VibGU7Ci0gICAgc3RhdGljIGRvdWJsZSBudWxsVmFsdWUo
KSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpOyB9Ci0g
ICAgc3RhdGljIGJvb2wgaXNOdWxsVmFsdWUoZG91YmxlIHZhbHVlKSB7IHJldHVybiBzdGQ6Omlz
bmFuKHZhbHVlKTsgfQotICAgIHN0YXRpYyBkb3VibGUgZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KGRvdWJsZSB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KLX07Ci0KLXN0cnVjdCBJRExKU09OIDog
SURMVHlwZTxTdHJpbmc+IHsgCi0gICAgdXNpbmcgUGFyYW1ldGVyVHlwZSA9IGNvbnN0IFN0cmlu
ZyY7Ci0KLSAgICB1c2luZyBOdWxsYWJsZVR5cGUgPSBTdHJpbmc7Ci0gICAgc3RhdGljIFN0cmlu
ZyBudWxsVmFsdWUoKSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHN0YXRpYyBib29sIGlzTnVs
bFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmlzTnVsbCgpOyB9Ci0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+IHN0YXRpYyBVJiYgZXh0cmFjdFZhbHVlRnJvbU51bGxh
YmxlKFUmJiB2YWx1ZSkgeyByZXR1cm4gc3RkOjpmb3J3YXJkPFU+KHZhbHVlKTsgfQotfTsKLQot
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IElE
TFdyYXBwZXI8VD4geyB9OwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETEV2ZW50TGlz
dGVuZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJ
RExYUGF0aE5TUmVzb2x2ZXIgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBJRExJREJLZXkgOiBJRExXcmFwcGVyPFQ+IHsgfTsKLQotLy8gTm9uLVdlYklE
TCBjb252ZW5pZW5jZSB0eXBlIGFsaWFzZXMKLQotdXNpbmcgSURMQnVmZmVyU291cmNlID0gSURM
VW5pb248SURMSW50ZXJmYWNlPEpTQzo6QXJyYXlCdWZmZXJWaWV3PiwgSURMSW50ZXJmYWNlPEpT
Qzo6QXJyYXlCdWZmZXI+PjsKLQotCi0vLyBIZWxwZXIgcHJlZGljYXRlcwotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotc3RydWN0IElzSURMSW50ZXJmYWNlIDogcHVibGljIHN0ZDo6aW50ZWdyYWxf
Y29uc3RhbnQ8Ym9vbCwgV1RGOjpJc1RlbXBsYXRlPFQsIElETEludGVyZmFjZT46OnZhbHVlPiB7
IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgSXNJRExEaWN0aW9uYXJ5IDogcHVi
bGljIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJc1RlbXBsYXRlPFQsIElETERp
Y3Rpb25hcnk+Ojp2YWx1ZT4geyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IElz
SURMRW51bWVyYXRpb24gOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBXVEY6
OklzVGVtcGxhdGU8VCwgSURMRW51bWVyYXRpb24+Ojp2YWx1ZT4geyB9OwotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotc3RydWN0IElzSURMU2VxdWVuY2UgOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9j
b25zdGFudDxib29sLCBXVEY6OklzVGVtcGxhdGU8VCwgSURMU2VxdWVuY2U+Ojp2YWx1ZT4geyB9
OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IElzSURMRnJvemVuQXJyYXkgOiBwdWJs
aWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBXVEY6OklzVGVtcGxhdGU8VCwgSURMRnJv
emVuQXJyYXk+Ojp2YWx1ZT4geyB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IElz
SURMUmVjb3JkIDogcHVibGljIHN0ZDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgV1RGOjpJc1Rl
bXBsYXRlPFQsIElETFJlY29yZD46OnZhbHVlPiB7IH07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1zdHJ1Y3QgSXNJRExOdW1iZXIgOiBwdWJsaWMgc3RkOjppbnRlZ3JhbF9jb25zdGFudDxib29s
LCBXVEY6OklzQmFzZU9mVGVtcGxhdGU8SURMTnVtYmVyLCBUPjo6dmFsdWU+IHsgfTsKLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBJc0lETEludGVnZXIgOiBwdWJsaWMgc3RkOjppbnRl
Z3JhbF9jb25zdGFudDxib29sLCBXVEY6OklzQmFzZU9mVGVtcGxhdGU8SURMSW50ZWdlciwgVD46
OnZhbHVlPiB7IH07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmNwcAkocmV2aXNpb24gMjEwMjg2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDE4MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoK
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCi0KLSNpbmNsdWRlICJEYXRhYmFzZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJNZWRpYVBsYXll
ci5oIgotI2luY2x1ZGUgIldlYlNvY2tldC5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMoKQotewotICAgIHJlc2V0KCk7Ci0jaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkgJiYgUExBVEZPUk0oQ09DT0EpCi0gICAgbV9pc01lZGlhU3RyZWFtRW5hYmxlZCA9
IGZhbHNlOwotI2VuZGlmCi19Ci0KLXZvaWQgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6cmVzZXQo
KQotewotICAgIG1faXNMb2NhbFN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKLSAgICBtX2lzU2Vzc2lv
blN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKLSAgICBtX2lzV2Via2l0Tm90aWZpY2F0aW9uc0VuYWJs
ZWQgPSBmYWxzZTsKLSAgICBtX2lzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQgPSB0cnVlOwotICAg
IG1faXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQgPSB0cnVlOwotICAgIG1faXNHZW9sb2NhdGlv
bkVuYWJsZWQgPSB0cnVlOwotICAgIG1faXNUb3VjaEVuYWJsZWQgPSB0cnVlOwotICAgIG1faXNE
ZXZpY2VNb3Rpb25FbmFibGVkID0gdHJ1ZTsKLSAgICBtX2lzRGV2aWNlT3JpZW50YXRpb25FbmFi
bGVkID0gdHJ1ZTsKLSAgICBtX2lzTGlua1ByZWxvYWRFbmFibGVkID0gZmFsc2U7Ci0gICAgbV9p
c0xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkID0gZmFsc2U7Ci0gICAgbV9p
c1Jlc291cmNlVGltaW5nRW5hYmxlZCA9IGZhbHNlOwotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQotICAgIG1faXNJbmRleGVkREJFbmFibGVkID0gdHJ1ZTsKLSNlbmRpZgotI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpCi0gICAgbV9pc0luZGV4ZWREQldvcmtlcnNF
bmFibGVkID0gdHJ1ZTsKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJfUlRDKQotICAgIG1faXNQZWVy
Q29ubmVjdGlvbkVuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0jaWYgRU5BQkxFKExFR0FDWV9DU1Nf
VkVORE9SX1BSRUZJWEVTKQotICAgIG1faXNMZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQg
PSBmYWxzZTsKLSNlbmRpZgotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0kxOE5fQVBJKQotICAgIG1f
aXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX0RBVEUpCi0gICAgbV9pc0lucHV0VHlwZURhdGVFbmFibGVkID0gdHJ1ZTsKLSNl
bmRpZgotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpCi0gICAgbV9p
c0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0jaWYgRU5BQkxFKElO
UFVUX1RZUEVfREFURVRJTUVMT0NBTCkKLSAgICBtX2lzSW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVu
YWJsZWQgPSB0cnVlOwotI2VuZGlmCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfTU9OVEgpCi0gICAg
bV9pc0lucHV0VHlwZU1vbnRoRW5hYmxlZCA9IHRydWU7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9USU1FKQotICAgIG1faXNJbnB1dFR5cGVUaW1lRW5hYmxlZCA9IHRydWU7Ci0jZW5k
aWYKLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9XRUVLKQotICAgIG1faXNJbnB1dFR5cGVXZWVrRW5h
YmxlZCA9IHRydWU7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoQ1NQX05FWFQpCi0gICAgbV9hcmVFeHBl
cmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQgPSBmYWxzZTsKLSNl
bmRpZgotI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIG1faXNGb250TG9hZEV2ZW50
c0VuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0jaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVM
XzIpCi0gICAgbV9hcmVBbmltYXRpb25UcmlnZ2Vyc0VuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgot
I2lmIEVOQUJMRShXRUJfQU5JTUFUSU9OUykKLSAgICBtX2FyZVdlYkFuaW1hdGlvbnNFbmFibGVk
ID0gZmFsc2U7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotICAgIG1fY3Nz
R3JpZExheW91dEVuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSU0VDVElP
Tl9PQlNFUlZFUikKLSAgICBtX2ludGVyc2VjdGlvbk9ic2VydmVyRW5hYmxlZCA9IGZhbHNlOwot
I2VuZGlmCi19Ci0KLVJ1bnRpbWVFbmFibGVkRmVhdHVyZXMmIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UnVudGlt
ZUVuYWJsZWRGZWF0dXJlcz4gcnVudGltZUVuYWJsZWRGZWF0dXJlczsKLQotICAgIHJldHVybiBy
dW50aW1lRW5hYmxlZEZlYXR1cmVzOwotfQotCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfSTE4Tl9B
UEkpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmphdmFTY3JpcHRJMThOQVBJRW5hYmxl
ZCgpCi17Ci0gICAgcmV0dXJuIG1faXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQ7Ci19Ci0jZW5k
aWYKLQotI2lmIEVOQUJMRShWSURFTykKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6YXVk
aW9FbmFibGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxl
KCk7Ci19Ci0KLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbE1lZGlhRWxlbWVudEVu
YWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsK
LX0KLQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sQXVkaW9FbGVtZW50RW5hYmxl
ZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOwotfQot
Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omh0bWxWaWRlb0VsZW1lbnRFbmFibGVkKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7Ci19Ci0KLWJv
b2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbFNvdXJjZUVsZW1lbnRFbmFibGVkKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7Ci19Ci0KLWJvb2wg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFDb250cm9sbGVyRW5hYmxlZCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOwotfQotCi1ib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhRXJyb3JFbmFibGVkKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7Ci19Ci0KLWJvb2wgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6dGltZVJhbmdlc0VuYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBNZWRpYVBs
YXllcjo6aXNBdmFpbGFibGUoKTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQl9TT0NLRVRT
KQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJTb2NrZXRFbmFibGVkKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gV2ViU29ja2V0Ojppc0F2YWlsYWJsZSgpOwotfQotI2VuZGlmCi0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAkocmV2aXNpb24gMjEwMjg2
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAKLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9u
LgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIlBsYXRmb3JtRXhwb3J0TWFjcm9zLmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQSBjbGFzcyB0aGF0IHN0b3Jl
cyBzdGF0aWMgZW5hYmxlcnMgZm9yIGFsbCBleHBlcmltZW50YWwgZmVhdHVyZXMuIE5vdGUgdGhh
dAotLy8gdGhlIG1ldGhvZCBuYW1lcyBtdXN0IGxpbmUgdXAgd2l0aCB0aGUgSmF2YVNjcmlwdCBt
ZXRob2QgdGhleSBlbmFibGUgZm9yIGNvZGUKLS8vIGdlbmVyYXRpb24gdG8gd29yayBwcm9wZXJs
eS4KLQotY2xhc3MgUnVudGltZUVuYWJsZWRGZWF0dXJlcyB7Ci0gICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUnVudGltZUVuYWJsZWRGZWF0dXJlcyk7Ci1wdWJsaWM6Ci0gICAgdm9pZCBzZXRMb2Nh
bFN0b3JhZ2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNMb2NhbFN0b3JhZ2VFbmFibGVk
ID0gaXNFbmFibGVkOyB9Ci0gICAgYm9vbCBsb2NhbFN0b3JhZ2VFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0xvY2FsU3RvcmFnZUVuYWJsZWQ7IH0KLQotICAgIHZvaWQgc2V0U2Vzc2lvblN0
b3JhZ2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIHNlc3Npb25TdG9yYWdlRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQ7IH0KLQotICAgIHZvaWQgc2V0V2Via2l0
Tm90aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1dlYmtpdE5vdGlmaWNh
dGlvbnNFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgYm9vbCB3ZWJraXROb3RpZmljYXRpb25z
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZDsg
fQotCi0gICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBtX2lzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIGFw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0FwcGxpY2F0aW9uQ2Fj
aGVFbmFibGVkOyB9Ci0KLSAgICB2b2lkIHNldERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBtX2lzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkID0gaXNFbmFibGVkOyB9
Ci0gICAgYm9vbCBkYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkOyB9Ci0KLSAgICB2b2lkIHNldERPTUl0ZXJhdG9yRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzRE9NSXRlcmF0b3JFbmFibGVkID0gaXNFbmFibGVk
OyB9Ci0gICAgYm9vbCBkb21JdGVyYXRvckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRE9N
SXRlcmF0b3JFbmFibGVkOyB9Ci0KLSAgICB2b2lkIHNldEdlb2xvY2F0aW9uRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBtX2lzR2VvbG9jYXRpb25FbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAg
Ym9vbCBnZW9sb2NhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzR2VvbG9jYXRpb25F
bmFibGVkOyB9Ci0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICB2b2lkIHNldFdl
YmtpdEluZGV4ZWREQkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0luZGV4ZWREQkVuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIHdlYmtpdEluZGV4ZWREQkVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzSW5kZXhlZERCRW5hYmxlZDsgfQotICAgIGJvb2wgaW5kZXhlZERCRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbmRleGVkREJFbmFibGVkOyB9Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpCi0gICAgdm9pZCBzZXRJbmRl
eGVkREJXb3JrZXJzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSW5kZXhlZERCV29ya2Vy
c0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIGluZGV4ZWREQldvcmtlcnNFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc0luZGV4ZWREQldvcmtlcnNFbmFibGVkOyB9Ci0jZW5kaWYK
LQotI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIHZvaWQgc2V0Rm9udExvYWRFdmVu
dHNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNGb250TG9hZEV2ZW50c0VuYWJsZWQgPSBp
c0VuYWJsZWQ7IH0KLSAgICBib29sIGZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNGb250TG9hZEV2ZW50c0VuYWJsZWQ7IH0KLSNlbHNlCi0gICAgdm9pZCBzZXRGb250
TG9hZEV2ZW50c0VuYWJsZWQoYm9vbCkgeyB9Ci0gICAgYm9vbCBmb250TG9hZEV2ZW50c0VuYWJs
ZWQoKSB7IHJldHVybiBmYWxzZTsgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVklERU8pCi0gICAg
Ym9vbCBhdWRpb0VuYWJsZWQoKSBjb25zdDsKLSAgICBib29sIGh0bWxNZWRpYUVsZW1lbnRFbmFi
bGVkKCkgY29uc3Q7Ci0gICAgYm9vbCBodG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpIGNvbnN0Owot
ICAgIGJvb2wgaHRtbFZpZGVvRWxlbWVudEVuYWJsZWQoKSBjb25zdDsKLSAgICBib29sIGh0bWxT
b3VyY2VFbGVtZW50RW5hYmxlZCgpIGNvbnN0OwotICAgIGJvb2wgbWVkaWFDb250cm9sbGVyRW5h
YmxlZCgpIGNvbnN0OwotICAgIGJvb2wgbWVkaWFFcnJvckVuYWJsZWQoKSBjb25zdDsKLSAgICBi
b29sIHRpbWVSYW5nZXNFbmFibGVkKCkgY29uc3Q7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKLSAgICBib29sIHdlYlNvY2tldEVuYWJsZWQoKSBjb25zdDsKLSNlbmRpZgotCi0j
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBib29sIHRvdWNoRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNUb3VjaEVuYWJsZWQ7IH0KLSAgICB2b2lkIHNldFRvdWNoRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBtX2lzVG91Y2hFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0jZW5kaWYKLQot
ICAgIHZvaWQgc2V0RGV2aWNlTW90aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzRGV2
aWNlTW90aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIGJvb2wgZGV2aWNlTW90aW9uRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXZpY2VNb3Rpb25FbmFibGVkOyB9Ci0gICAgYm9v
bCBkZXZpY2VNb3Rpb25FdmVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGV2aWNlTW90
aW9uRW5hYmxlZDsgfQotICAgIGJvb2wgb25kZXZpY2Vtb3Rpb25FbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KLQotICAgIHZvaWQgc2V0RGV2aWNlT3Jp
ZW50YXRpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNEZXZpY2VPcmllbnRhdGlvbkVu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIGRldmljZU9yaWVudGF0aW9uRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7IH0KLSAgICBib29s
IGRldmljZU9yaWVudGF0aW9uRXZlbnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Rldmlj
ZU9yaWVudGF0aW9uRW5hYmxlZDsgfQotICAgIGJvb2wgb25kZXZpY2VvcmllbnRhdGlvbkVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9Ci0KLSAg
ICB2b2lkIHNldExpbmtQcmVsb2FkRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzTGlua1By
ZWxvYWRFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgYm9vbCBsaW5rUHJlbG9hZEVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzTGlua1ByZWxvYWRFbmFibGVkOyB9Ci0KLSNpZiBFTkFCTEUo
SkFWQVNDUklQVF9JMThOX0FQSSkKLSAgICBib29sIGphdmFTY3JpcHRJMThOQVBJRW5hYmxlZCgp
IGNvbnN0OwotICAgIHZvaWQgc2V0SmF2YVNjcmlwdEkxOE5BUElFbmFibGVkKGJvb2wgaXNFbmFi
bGVkKSB7IG1faXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSNlbmRp
ZgotCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBib29sIG1lZGlhU3RyZWFtRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KLSAgICB2b2lkIHNl
dE1lZGlhU3RyZWFtRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzTWVkaWFTdHJlYW1FbmFi
bGVkID0gaXNFbmFibGVkOyB9Ci0gICAgYm9vbCB3ZWJraXRHZXRVc2VyTWVkaWFFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc01lZGlhU3RyZWFtRW5hYmxlZDsgfQotICAgIGJvb2wgd2Via2l0
TWVkaWFTdHJlYW1FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc01lZGlhU3RyZWFtRW5hYmxl
ZDsgfQotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQl9SVEMpCi0gICAgYm9vbCBwZWVyQ29ubmVjdGlv
bkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWVkaWFTdHJlYW1FbmFibGVkICYmIG1faXNQ
ZWVyQ29ubmVjdGlvbkVuYWJsZWQ7IH0KLSAgICB2b2lkIHNldFBlZXJDb25uZWN0aW9uRW5hYmxl
ZChib29sIGlzRW5hYmxlZCkgeyBtX2lzUGVlckNvbm5lY3Rpb25FbmFibGVkID0gaXNFbmFibGVk
OyB9Ci0gICAgYm9vbCB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBwZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTsgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTEVH
QUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCi0gICAgdm9pZCBzZXRMZWdhY3lDU1NWZW5kb3JQcmVm
aXhlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVz
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIGJvb2wgbGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxl
ZDsgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFKQotICAgIGJvb2wgaW5w
dXRUeXBlRGF0ZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5wdXRUeXBlRGF0ZUVuYWJs
ZWQ7IH0KLSAgICB2b2lkIHNldElucHV0VHlwZURhdGVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7
IG1faXNJbnB1dFR5cGVEYXRlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKQotICAgIGJvb2wgaW5wdXRUeXBl
RGF0ZVRpbWVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lucHV0VHlwZURhdGVUaW1lRW5h
YmxlZDsgfQotICAgIHZvaWQgc2V0SW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkKGJvb2wgaXNFbmFi
bGVkKSB7IG1faXNJbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSNlbmRp
ZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkKLSAgICBib29sIGlucHV0
VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lucHV0VHlwZURh
dGVUaW1lTG9jYWxFbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRJbnB1dFR5cGVEYXRlVGltZUxvY2Fs
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfTU9OVEgp
Ci0gICAgYm9vbCBpbnB1dFR5cGVNb250aEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5w
dXRUeXBlTW9udGhFbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRJbnB1dFR5cGVNb250aEVuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgbV9pc0lucHV0VHlwZU1vbnRoRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FKQotICAgIGJvb2wgaW5wdXRU
eXBlVGltZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5wdXRUeXBlVGltZUVuYWJsZWQ7
IH0KLSAgICB2b2lkIHNldElucHV0VHlwZVRpbWVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1f
aXNJbnB1dFR5cGVUaW1lRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9XRUVLKQotICAgIGJvb2wgaW5wdXRUeXBlV2Vla0VuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzSW5wdXRUeXBlV2Vla0VuYWJsZWQ7IH0KLSAgICB2b2lkIHNldElucHV0
VHlwZVdlZWtFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJbnB1dFR5cGVXZWVrRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQ1NQX05FWFQpCi0gICAgYm9v
bCBleHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2FyZUV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVz
RW5hYmxlZDsgfQotICAgIHZvaWQgc2V0RXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5
RmVhdHVyZXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1fYXJlRXhwZXJpbWVudGFsQ29udGVu
dFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0jZW5kaWYKLQot
ICAgIGJvb2wgbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7IH0KLSAg
ICAvLyBUaGUgbGFuZyBhdHRyaWJ1dGUgc3VwcG9ydCBpcyBpbmNvbXBsZXRlIGFuZCBzaG91bGQg
b25seSBiZSB0dXJuZWQgb24gZm9yIHRlc3RzLgotICAgIHZvaWQgc2V0TGFuZ0F0dHJpYnV0ZUF3
YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0xhbmdBdHRyaWJ1
dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0KLSAgICB2b2lkIHNl
dFJlc291cmNlVGltaW5nRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzUmVzb3VyY2VUaW1p
bmdFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgYm9vbCByZXNvdXJjZVRpbWluZ0VuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzUmVzb3VyY2VUaW1pbmdFbmFibGVkOyB9Ci0KLSNpZiBFTkFC
TEUoR0FNRVBBRCkKLSAgICB2b2lkIHNldEdhbWVwYWRzRW5hYmxlZChib29sIGFyZUVuYWJsZWQp
IHsgbV9hcmVHYW1lcGFkc0VuYWJsZWQgPSBhcmVFbmFibGVkOyB9Ci0gICAgYm9vbCBnYW1lcGFk
c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZUdhbWVwYWRzRW5hYmxlZDsgfQotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKLSAgICB2b2lkIHNldEFuaW1h
dGlvblRyaWdnZXJzRW5hYmxlZChib29sIGFyZUVuYWJsZWQpIHsgbV9hcmVBbmltYXRpb25Ucmln
Z2Vyc0VuYWJsZWQgPSBhcmVFbmFibGVkOyB9Ci0gICAgYm9vbCBhbmltYXRpb25UcmlnZ2Vyc0Vu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZUFuaW1hdGlvblRyaWdnZXJzRW5hYmxlZDsgfQot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCX0FOSU1BVElPTlMpCi0gICAgdm9pZCBzZXRXZWJBbmlt
YXRpb25zRW5hYmxlZChib29sIGFyZUVuYWJsZWQpIHsgbV9hcmVXZWJBbmltYXRpb25zRW5hYmxl
ZCA9IGFyZUVuYWJsZWQ7IH0KLSAgICBib29sIHdlYkFuaW1hdGlvbnNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9hcmVXZWJBbmltYXRpb25zRW5hYmxlZDsgfQotI2VuZGlmCi0KLSAgICB2b2lk
IHNldFNoYWRvd0RPTUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1NoYWRvd0RPTUVuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIHNoYWRvd0RPTUVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzU2hhZG93RE9NRW5hYmxlZDsgfQotCi0gICAgdm9pZCBzZXRJbnB1dEV2ZW50c0Vu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pbnB1dEV2ZW50c0VuYWJsZWQgPSBpc0VuYWJsZWQ7
IH0KLSAgICBib29sIGlucHV0RXZlbnRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5wdXRF
dmVudHNFbmFibGVkOyB9Ci0KLSAgICB2b2lkIHNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25F
bmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIGJvb2wgaW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJs
ZWQ7IH0KLQotICAgIHZvaWQgc2V0Q3VzdG9tRWxlbWVudHNFbmFibGVkKGJvb2wgYXJlRW5hYmxl
ZCkgeyBtX2FyZUN1c3RvbUVsZW1lbnRzRW5hYmxlZCA9IGFyZUVuYWJsZWQ7IH0KLSAgICBib29s
IGN1c3RvbUVsZW1lbnRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlQ3VzdG9tRWxlbWVu
dHNFbmFibGVkOyB9Ci0KLSNpZiBFTkFCTEUoV0VCR0wyKQotICAgIHZvaWQgc2V0V2ViR0wyRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzV2ViR0wyRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQot
ICAgIGJvb2wgd2ViR0wyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNXZWJHTDJFbmFibGVk
OyB9Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShGRVRDSF9BUEkpCi0gICAgdm9pZCBzZXRGZXRjaEFQ
SUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0ZldGNoQVBJRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQotICAgIGJvb2wgZmV0Y2hBUElFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZldGNo
QVBJRW5hYmxlZDsgfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRE9XTkxPQURfQVRUUklCVVRFKQot
ICAgIHZvaWQgc2V0RG93bmxvYWRBdHRyaWJ1dGVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1f
aXNEb3dubG9hZEF0dHJpYnV0ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIGRvd25s
b2FkQXR0cmlidXRlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEb3dubG9hZEF0dHJpYnV0
ZUVuYWJsZWQ7IH0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLSAgICB2
b2lkIHNldENTU0dyaWRMYXlvdXRFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1fY3NzR3JpZExh
eW91dEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIGlzQ1NTR3JpZExheW91dEVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2Nzc0dyaWRMYXlvdXRFbmFibGVkOyB9Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCi0gICAgdm9pZCBzZXRJbnRlcnNlY3Rp
b25PYnNlcnZlckVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pbnRlcnNlY3Rpb25PYnNlcnZl
ckVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29sIGludGVyc2VjdGlvbk9ic2VydmVyRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbmFibGVkOyB9Ci0j
ZW5kaWYKLQotICAgIHZvaWQgc2V0TW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQoYm9vbCBhcmVF
bmFibGVkKSB7IG1fYXJlTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQgPSBhcmVFbmFibGVkOyB9
Ci0gICAgYm9vbCBtb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
YXJlTW9kZXJuTWVkaWFDb250cm9sc0VuYWJsZWQ7IH0KLQotI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCi0gICAgdm9pZCBzZXRFbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQoYm9vbCBpc0VuYWJs
ZWQpIHsgbV9lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBib29s
IGVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jcnlwdGVkTWVk
aWFBUElFbmFibGVkOyB9Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQotICAg
IHZvaWQgc2V0U3VidGxlQ3J5cHRvRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzU3VidGxl
Q3J5cHRvRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIGJvb2wgc3VidGxlQ3J5cHRvRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdWJ0bGVDcnlwdG9FbmFibGVkOyB9Ci0jZW5kaWYKLQot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzJiBzaGFyZWRG
ZWF0dXJlcygpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldCgpOwotCi1wcml2YXRl
OgotICAgIC8vIE5ldmVyIGluc3RhbnRpYXRlLgotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMo
KTsKLQotICAgIGJvb2wgbV9hcmVNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCB7IGZhbHNlIH07
Ci0gICAgYm9vbCBtX2lzTG9jYWxTdG9yYWdlRW5hYmxlZDsKLSAgICBib29sIG1faXNTZXNzaW9u
U3RvcmFnZUVuYWJsZWQ7Ci0gICAgYm9vbCBtX2lzV2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQ7
Ci0gICAgYm9vbCBtX2lzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQ7Ci0gICAgYm9vbCBtX2lzRGF0
YVRyYW5zZmVySXRlbXNFbmFibGVkOwotICAgIGJvb2wgbV9pc0RPTUl0ZXJhdG9yRW5hYmxlZCB7
IHRydWUgfTsKLSAgICBib29sIG1faXNHZW9sb2NhdGlvbkVuYWJsZWQ7Ci0gICAgYm9vbCBtX2lz
VG91Y2hFbmFibGVkOwotICAgIGJvb2wgbV9pc0RldmljZU1vdGlvbkVuYWJsZWQ7Ci0gICAgYm9v
bCBtX2lzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOwotICAgIGJvb2wgbV9pc0xpbmtQcmVsb2Fk
RW5hYmxlZDsKLSAgICBib29sIG1faXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5h
YmxlZDsKLSAgICBib29sIG1faXNSZXNvdXJjZVRpbWluZ0VuYWJsZWQ7Ci0KLSNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKLSAgICBib29sIG1faXNJbmRleGVkREJFbmFibGVkOwotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKQotICAgIGJvb2wgbV9p
c0luZGV4ZWREQldvcmtlcnNFbmFibGVkOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9JMThOX0FQSSkKLSAgICBib29sIG1faXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQ7Ci0jZW5k
aWYKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgYm9vbCBtX2lzTWVkaWFTdHJlYW1F
bmFibGVkIHsgdHJ1ZSB9OwotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQl9SVEMpCi0gICAgYm9vbCBt
X2lzUGVlckNvbm5lY3Rpb25FbmFibGVkOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTEVHQUNZX0NT
U19WRU5ET1JfUFJFRklYRVMpCi0gICAgYm9vbCBtX2lzTGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNF
bmFibGVkOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFKQotICAgIGJvb2wg
bV9pc0lucHV0VHlwZURhdGVFbmFibGVkOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9EQVRFVElNRV9JTkNPTVBMRVRFKQotICAgIGJvb2wgbV9pc0lucHV0VHlwZURhdGVUaW1lRW5h
YmxlZDsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkKLSAg
ICBib29sIG1faXNJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZDsKLSNlbmRpZgotCi0jaWYg
RU5BQkxFKElOUFVUX1RZUEVfTU9OVEgpCi0gICAgYm9vbCBtX2lzSW5wdXRUeXBlTW9udGhFbmFi
bGVkOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FKQotICAgIGJvb2wgbV9p
c0lucHV0VHlwZVRpbWVFbmFibGVkOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9X
RUVLKQotICAgIGJvb2wgbV9pc0lucHV0VHlwZVdlZWtFbmFibGVkOwotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoQ1NQX05FWFQpCi0gICAgYm9vbCBtX2FyZUV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0
eVBvbGljeUZlYXR1cmVzRW5hYmxlZDsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEZPTlRfTE9BRF9F
VkVOVFMpCi0gICAgYm9vbCBtX2lzRm9udExvYWRFdmVudHNFbmFibGVkOwotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoR0FNRVBBRCkKLSAgICBib29sIG1fYXJlR2FtZXBhZHNFbmFibGVkIHsgZmFsc2Ug
fTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKENTU19BTklNQVRJT05TX0xFVkVMXzIpCi0gICAgYm9v
bCBtX2FyZUFuaW1hdGlvblRyaWdnZXJzRW5hYmxlZDsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdF
Ql9BTklNQVRJT05TKQotICAgIGJvb2wgbV9hcmVXZWJBbmltYXRpb25zRW5hYmxlZDsKLSNlbmRp
ZgotICAgIAotICAgIGJvb2wgbV9pc1NoYWRvd0RPTUVuYWJsZWQ7Ci0KLSAgICBib29sIG1faW5w
dXRFdmVudHNFbmFibGVkOwotCi0gICAgYm9vbCBtX2lzSW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlv
bkVuYWJsZWQgeyBmYWxzZSB9OwotCi0gICAgYm9vbCBtX2FyZUN1c3RvbUVsZW1lbnRzRW5hYmxl
ZCB7IHRydWUgfTsKLQotI2lmIEVOQUJMRShXRUJHTDIpCi0gICAgYm9vbCBtX2lzV2ViR0wyRW5h
YmxlZDsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEZFVENIX0FQSSkKLSAgICBib29sIG1faXNGZXRj
aEFQSUVuYWJsZWQgeyBmYWxzZSB9OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRE9XTkxPQURfQVRU
UklCVVRFKQotICAgIGJvb2wgbV9pc0Rvd25sb2FkQXR0cmlidXRlRW5hYmxlZCB7IGZhbHNlIH07
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgYm9vbCBtX2Nzc0dy
aWRMYXlvdXRFbmFibGVkOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQot
ICAgIGJvb2wgbV9lbmNyeXB0ZWRNZWRpYUFQSUVuYWJsZWQgeyBmYWxzZSB9OwotI2VuZGlmCi0K
LSNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09CU0VSVkVSKQotICAgIGJvb2wgbV9pbnRlcnNlY3Rp
b25PYnNlcnZlckVuYWJsZWQgeyBmYWxzZSB9OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU1VCVExF
X0NSWVBUTykKLSAgICBib29sIG1faXNTdWJ0bGVDcnlwdG9FbmFibGVkOwotI2VuZGlmCi0KLSAg
ICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxSdW50aW1lRW5hYmxlZEZlYXR1cmVz
PjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Fj
dGl2ZURPTUNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQWN0
aXZlRE9NQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAyMTAyODYpCShmcm9tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwOjIxMDI4NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC4gMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY3RpdmVET01D
YWxsYmFjay5oIgorCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0FjdGl2ZURPTUNhbGxiYWNrOjpBY3RpdmVET01DYWxsYmFjayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIoY29udGV4dCkKK3sKK30KKworQWN0aXZlRE9NQ2FsbGJhY2s6On5BY3RpdmVET01D
YWxsYmFjaygpCit7Cit9CisKK2Jvb2wgQWN0aXZlRE9NQ2FsbGJhY2s6OmNhbkludm9rZUNhbGxi
YWNrKCkgY29uc3QKK3sKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIHJldHVybiBjb250ZXh0ICYmICFjb250ZXh0LT5h
Y3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkKCkgJiYgIWNvbnRleHQtPmFjdGl2ZURPTU9iamVj
dHNBcmVTdG9wcGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrLmgJKHJldmlzaW9uIDIxMDI4NikJKGZyb20g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFjay5oOjIxMDI4
NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01DYWxsYmFjay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworLy8gQSBiYXNlIGNsYXNzIHRoYXQgcHJldmVudHMg
YmluZGluZyBjYWxsYmFja3MgZnJvbSBleGVjdXRpbmcgd2hlbgorLy8gYWN0aXZlIGRvbSBvYmpl
Y3RzIGFyZSBzdG9wcGVkIG9yIHN1c3BlbmRlZC4KKy8vCisvLyBTaG91bGQgb25seSBiZSBjcmVh
dGVkLCB1c2VkLCBhbmQgZGVzdHJveWVkIG9uIHRoZSBzY3JpcHQgZXhlY3V0aW9uCisvLyBjb250
ZXh0IHRocmVhZC4KK2NsYXNzIEFjdGl2ZURPTUNhbGxiYWNrIDogcHVibGljIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBBY3RpdmVET01DYWxsYmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KTsKKyAgICB2aXJ0dWFsIH5BY3RpdmVET01DYWxsYmFj
aygpOworCisgICAgYm9vbCBjYW5JbnZva2VDYWxsYmFjaygpIGNvbnN0OworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxi
YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuY3BwCShyZXZpc2lvbiAyMTAyODYpCShmcm9tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHA6MjEwMjg2KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIgorCisjaW5jbHVkZSAiRGF0YWJhc2VNYW5hZ2VyLmgiCisjaW5j
bHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkKK3sKKyAgICByZXNldCgpOwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFBMQVRGT1JNKENPQ09BKQorICAgIG1faXNNZWRp
YVN0cmVhbUVuYWJsZWQgPSBmYWxzZTsKKyNlbmRpZgorfQorCit2b2lkIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnJlc2V0KCkKK3sKKyAgICBtX2lzTG9jYWxTdG9yYWdlRW5hYmxlZCA9IHRydWU7
CisgICAgbV9pc1Nlc3Npb25TdG9yYWdlRW5hYmxlZCA9IHRydWU7CisgICAgbV9pc1dlYmtpdE5v
dGlmaWNhdGlvbnNFbmFibGVkID0gZmFsc2U7CisgICAgbV9pc0FwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkID0gdHJ1ZTsKKyAgICBtX2lzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkID0gdHJ1ZTsKKyAg
ICBtX2lzR2VvbG9jYXRpb25FbmFibGVkID0gdHJ1ZTsKKyAgICBtX2lzVG91Y2hFbmFibGVkID0g
dHJ1ZTsKKyAgICBtX2lzRGV2aWNlTW90aW9uRW5hYmxlZCA9IHRydWU7CisgICAgbV9pc0Rldmlj
ZU9yaWVudGF0aW9uRW5hYmxlZCA9IHRydWU7CisgICAgbV9pc0xpbmtQcmVsb2FkRW5hYmxlZCA9
IGZhbHNlOworICAgIG1faXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCA9
IGZhbHNlOworICAgIG1faXNSZXNvdXJjZVRpbWluZ0VuYWJsZWQgPSBmYWxzZTsKKyNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBtX2lzSW5kZXhlZERCRW5hYmxlZCA9IHRydWU7Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRV9JTl9XT1JLRVJTKQorICAgIG1faXNJ
bmRleGVkREJXb3JrZXJzRW5hYmxlZCA9IHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JU
QykKKyAgICBtX2lzUGVlckNvbm5lY3Rpb25FbmFibGVkID0gdHJ1ZTsKKyNlbmRpZgorI2lmIEVO
QUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKKyAgICBtX2lzTGVnYWN5Q1NTVmVuZG9y
UHJlZml4ZXNFbmFibGVkID0gZmFsc2U7CisjZW5kaWYKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9J
MThOX0FQSSkKKyAgICBtX2lzSmF2YVNjcmlwdEkxOE5BUElFbmFibGVkID0gZmFsc2U7CisjZW5k
aWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFKQorICAgIG1faXNJbnB1dFR5cGVEYXRlRW5h
YmxlZCA9IHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNP
TVBMRVRFKQorICAgIG1faXNJbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQgPSBmYWxzZTsKKyNlbmRp
ZgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpCisgICAgbV9pc0lucHV0VHlw
ZURhdGVUaW1lTG9jYWxFbmFibGVkID0gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShJTlBVVF9U
WVBFX01PTlRIKQorICAgIG1faXNJbnB1dFR5cGVNb250aEVuYWJsZWQgPSB0cnVlOworI2VuZGlm
CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfVElNRSkKKyAgICBtX2lzSW5wdXRUeXBlVGltZUVuYWJs
ZWQgPSB0cnVlOworI2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfV0VFSykKKyAgICBtX2lz
SW5wdXRUeXBlV2Vla0VuYWJsZWQgPSB0cnVlOworI2VuZGlmCisjaWYgRU5BQkxFKENTUF9ORVhU
KQorICAgIG1fYXJlRXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFi
bGVkID0gZmFsc2U7CisjZW5kaWYKKyNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKKyAgICBt
X2lzRm9udExvYWRFdmVudHNFbmFibGVkID0gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShDU1Nf
QU5JTUFUSU9OU19MRVZFTF8yKQorICAgIG1fYXJlQW5pbWF0aW9uVHJpZ2dlcnNFbmFibGVkID0g
ZmFsc2U7CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX0FOSU1BVElPTlMpCisgICAgbV9hcmVXZWJB
bmltYXRpb25zRW5hYmxlZCA9IGZhbHNlOworI2VuZGlmCisjaWYgRU5BQkxFKENTU19HUklEX0xB
WU9VVCkKKyAgICBtX2Nzc0dyaWRMYXlvdXRFbmFibGVkID0gdHJ1ZTsKKyNlbmRpZgorI2lmIEVO
QUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCisgICAgbV9pbnRlcnNlY3Rpb25PYnNlcnZlckVu
YWJsZWQgPSBmYWxzZTsKKyNlbmRpZgorfQorCitSdW50aW1lRW5hYmxlZEZlYXR1cmVzJiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+IHJ1bnRpbWVFbmFibGVkRmVhdHVyZXM7
CisKKyAgICByZXR1cm4gcnVudGltZUVuYWJsZWRGZWF0dXJlczsKK30KKworI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0kxOE5fQVBJKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpqYXZhU2Ny
aXB0STE4TkFQSUVuYWJsZWQoKQoreworICAgIHJldHVybiBtX2lzSmF2YVNjcmlwdEkxOE5BUElF
bmFibGVkOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoVklERU8pCitib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmF1ZGlvRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhUGxh
eWVyOjppc0F2YWlsYWJsZSgpOworfQorCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omh0
bWxNZWRpYUVsZW1lbnRFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6
OmlzQXZhaWxhYmxlKCk7Cit9CisKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbEF1
ZGlvRWxlbWVudEVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNB
dmFpbGFibGUoKTsKK30KKworYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sVmlkZW9F
bGVtZW50RW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWls
YWJsZSgpOworfQorCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omh0bWxTb3VyY2VFbGVt
ZW50RW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJs
ZSgpOworfQorCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhQ29udHJvbGxlckVu
YWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsK
K30KKworYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRpYUVycm9yRW5hYmxlZCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOworfQorCitib29s
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnRpbWVSYW5nZXNFbmFibGVkKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7Cit9CisjZW5kaWYKKworI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2ViU29ja2V0
RW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlNvY2tldDo6aXNBdmFpbGFibGUoKTsK
K30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCShyZXZpc2lvbiAyMTAy
ODYpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oOjIxMDI4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzc3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIAorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBBIGNsYXNzIHRoYXQg
c3RvcmVzIHN0YXRpYyBlbmFibGVycyBmb3IgYWxsIGV4cGVyaW1lbnRhbCBmZWF0dXJlcy4gTm90
ZSB0aGF0CisvLyB0aGUgbWV0aG9kIG5hbWVzIG11c3QgbGluZSB1cCB3aXRoIHRoZSBKYXZhU2Ny
aXB0IG1ldGhvZCB0aGV5IGVuYWJsZSBmb3IgY29kZQorLy8gZ2VuZXJhdGlvbiB0byB3b3JrIHBy
b3Blcmx5LgorCitjbGFzcyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShSdW50aW1lRW5hYmxlZEZlYXR1cmVzKTsKK3B1YmxpYzoKKyAgICB2b2lkIHNl
dExvY2FsU3RvcmFnZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0xvY2FsU3RvcmFnZUVu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGxvY2FsU3RvcmFnZUVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzTG9jYWxTdG9yYWdlRW5hYmxlZDsgfQorCisgICAgdm9pZCBzZXRTZXNz
aW9uU3RvcmFnZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1Nlc3Npb25TdG9yYWdlRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgc2Vzc2lvblN0b3JhZ2VFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc1Nlc3Npb25TdG9yYWdlRW5hYmxlZDsgfQorCisgICAgdm9pZCBzZXRX
ZWJraXROb3RpZmljYXRpb25zRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzV2Via2l0Tm90
aWZpY2F0aW9uc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdE5vdGlmaWNh
dGlvbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1dlYmtpdE5vdGlmaWNhdGlvbnNFbmFi
bGVkOyB9CisKKyAgICB2b2lkIHNldEFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKGJvb2wgaXNFbmFi
bGVkKSB7IG1faXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJv
b2wgYXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXBwbGljYXRp
b25DYWNoZUVuYWJsZWQ7IH0KKworICAgIHZvaWQgc2V0RGF0YVRyYW5zZmVySXRlbXNFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IG1faXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQgPSBpc0VuYWJs
ZWQ7IH0KKyAgICBib29sIGRhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQ7IH0KKworICAgIHZvaWQgc2V0RE9NSXRlcmF0
b3JFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNET01JdGVyYXRvckVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KKyAgICBib29sIGRvbUl0ZXJhdG9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNET01JdGVyYXRvckVuYWJsZWQ7IH0KKworICAgIHZvaWQgc2V0R2VvbG9jYXRpb25FbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IG1faXNHZW9sb2NhdGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
KyAgICBib29sIGdlb2xvY2F0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW9sb2Nh
dGlvbkVuYWJsZWQ7IH0KKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIHZvaWQg
c2V0V2Via2l0SW5kZXhlZERCRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSW5kZXhlZERC
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0SW5kZXhlZERCRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNJbmRleGVkREJFbmFibGVkOyB9CisgICAgYm9vbCBpbmRleGVk
REJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0luZGV4ZWREQkVuYWJsZWQ7IH0KKyNlbmRp
ZgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykKKyAgICB2b2lkIHNl
dEluZGV4ZWREQldvcmtlcnNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJbmRleGVkREJX
b3JrZXJzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgaW5kZXhlZERCV29ya2Vyc0Vu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5kZXhlZERCV29ya2Vyc0VuYWJsZWQ7IH0KKyNl
bmRpZgorCisjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCisgICAgdm9pZCBzZXRGb250TG9h
ZEV2ZW50c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0ZvbnRMb2FkRXZlbnRzRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgZm9udExvYWRFdmVudHNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZDsgfQorI2Vsc2UKKyAgICB2b2lkIHNl
dEZvbnRMb2FkRXZlbnRzRW5hYmxlZChib29sKSB7IH0KKyAgICBib29sIGZvbnRMb2FkRXZlbnRz
RW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKworI2lmIEVOQUJMRShWSURFTykK
KyAgICBib29sIGF1ZGlvRW5hYmxlZCgpIGNvbnN0OworICAgIGJvb2wgaHRtbE1lZGlhRWxlbWVu
dEVuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIGh0bWxBdWRpb0VsZW1lbnRFbmFibGVkKCkgY29u
c3Q7CisgICAgYm9vbCBodG1sVmlkZW9FbGVtZW50RW5hYmxlZCgpIGNvbnN0OworICAgIGJvb2wg
aHRtbFNvdXJjZUVsZW1lbnRFbmFibGVkKCkgY29uc3Q7CisgICAgYm9vbCBtZWRpYUNvbnRyb2xs
ZXJFbmFibGVkKCkgY29uc3Q7CisgICAgYm9vbCBtZWRpYUVycm9yRW5hYmxlZCgpIGNvbnN0Owor
ICAgIGJvb2wgdGltZVJhbmdlc0VuYWJsZWQoKSBjb25zdDsKKyNlbmRpZgorCisjaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQorICAgIGJvb2wgd2ViU29ja2V0RW5hYmxlZCgpIGNvbnN0OworI2VuZGlm
CisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGJvb2wgdG91Y2hFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc1RvdWNoRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0VG91Y2hFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IG1faXNUb3VjaEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyNlbmRp
ZgorCisgICAgdm9pZCBzZXREZXZpY2VNb3Rpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1f
aXNEZXZpY2VNb3Rpb25FbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBkZXZpY2VNb3Rp
b25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KKyAg
ICBib29sIGRldmljZU1vdGlvbkV2ZW50RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXZp
Y2VNb3Rpb25FbmFibGVkOyB9CisgICAgYm9vbCBvbmRldmljZW1vdGlvbkVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzRGV2aWNlTW90aW9uRW5hYmxlZDsgfQorCisgICAgdm9pZCBzZXREZXZp
Y2VPcmllbnRhdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0RldmljZU9yaWVudGF0
aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgZGV2aWNlT3JpZW50YXRpb25FbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZDsgfQorICAg
IGJvb2wgZGV2aWNlT3JpZW50YXRpb25FdmVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
RGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9CisgICAgYm9vbCBvbmRldmljZW9yaWVudGF0aW9u
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7IH0K
KworICAgIHZvaWQgc2V0TGlua1ByZWxvYWRFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNM
aW5rUHJlbG9hZEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGxpbmtQcmVsb2FkRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNMaW5rUHJlbG9hZEVuYWJsZWQ7IH0KKworI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0kxOE5fQVBJKQorICAgIGJvb2wgamF2YVNjcmlwdEkxOE5BUElFbmFi
bGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgbV9pc0phdmFTY3JpcHRJMThOQVBJRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQor
I2VuZGlmCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorICAgIGJvb2wgbWVkaWFTdHJlYW1F
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc01lZGlhU3RyZWFtRW5hYmxlZDsgfQorICAgIHZv
aWQgc2V0TWVkaWFTdHJlYW1FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNNZWRpYVN0cmVh
bUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdEdldFVzZXJNZWRpYUVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWVkaWFTdHJlYW1FbmFibGVkOyB9CisgICAgYm9vbCB3
ZWJraXRNZWRpYVN0cmVhbUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWVkaWFTdHJlYW1F
bmFibGVkOyB9CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBib29sIHBlZXJDb25u
ZWN0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRpYVN0cmVhbUVuYWJsZWQgJiYg
bV9pc1BlZXJDb25uZWN0aW9uRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0UGVlckNvbm5lY3Rpb25F
bmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIHBlZXJDb25uZWN0aW9uRW5hYmxlZCgpOyB9CisjZW5kaWYKKworI2lmIEVOQUJM
RShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKKyAgICB2b2lkIHNldExlZ2FjeUNTU1ZlbmRv
clByZWZpeGVzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzTGVnYWN5Q1NTVmVuZG9yUHJl
Zml4ZXNFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBsZWdhY3lDU1NWZW5kb3JQcmVm
aXhlc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNF
bmFibGVkOyB9CisjZW5kaWYKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEUpCisgICAgYm9v
bCBpbnB1dFR5cGVEYXRlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnB1dFR5cGVEYXRl
RW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SW5wdXRUeXBlRGF0ZUVuYWJsZWQoYm9vbCBpc0VuYWJs
ZWQpIHsgbV9pc0lucHV0VHlwZURhdGVFbmFibGVkID0gaXNFbmFibGVkOyB9CisjZW5kaWYKKwor
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpCisgICAgYm9vbCBpbnB1
dFR5cGVEYXRlVGltZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5wdXRUeXBlRGF0ZVRp
bWVFbmFibGVkOyB9CisgICAgdm9pZCBzZXRJbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgbV9pc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQor
I2VuZGlmCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKQorICAgIGJvb2wg
aW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5wdXRU
eXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldElucHV0VHlwZURhdGVUaW1l
TG9jYWxFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJbnB1dFR5cGVEYXRlVGltZUxvY2Fs
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9N
T05USCkKKyAgICBib29sIGlucHV0VHlwZU1vbnRoRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNJbnB1dFR5cGVNb250aEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldElucHV0VHlwZU1vbnRoRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSW5wdXRUeXBlTW9udGhFbmFibGVkID0gaXNFbmFi
bGVkOyB9CisjZW5kaWYKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX1RJTUUpCisgICAgYm9vbCBp
bnB1dFR5cGVUaW1lRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnB1dFR5cGVUaW1lRW5h
YmxlZDsgfQorICAgIHZvaWQgc2V0SW5wdXRUeXBlVGltZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgbV9pc0lucHV0VHlwZVRpbWVFbmFibGVkID0gaXNFbmFibGVkOyB9CisjZW5kaWYKKworI2lm
IEVOQUJMRShJTlBVVF9UWVBFX1dFRUspCisgICAgYm9vbCBpbnB1dFR5cGVXZWVrRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNJbnB1dFR5cGVXZWVrRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0
SW5wdXRUeXBlV2Vla0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lucHV0VHlwZVdlZWtF
bmFibGVkID0gaXNFbmFibGVkOyB9CisjZW5kaWYKKworI2lmIEVOQUJMRShDU1BfTkVYVCkKKyAg
ICBib29sIGV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fYXJlRXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVh
dHVyZXNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQ
b2xpY3lGZWF0dXJlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9hcmVFeHBlcmltZW50YWxD
b250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyNlbmRp
ZgorCisgICAgYm9vbCBsYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZDsg
fQorICAgIC8vIFRoZSBsYW5nIGF0dHJpYnV0ZSBzdXBwb3J0IGlzIGluY29tcGxldGUgYW5kIHNo
b3VsZCBvbmx5IGJlIHR1cm5lZCBvbiBmb3IgdGVzdHMuCisgICAgdm9pZCBzZXRMYW5nQXR0cmli
dXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzTGFuZ0F0
dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKworICAgIHZv
aWQgc2V0UmVzb3VyY2VUaW1pbmdFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNSZXNvdXJj
ZVRpbWluZ0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHJlc291cmNlVGltaW5nRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXNvdXJjZVRpbWluZ0VuYWJsZWQ7IH0KKworI2lm
IEVOQUJMRShHQU1FUEFEKQorICAgIHZvaWQgc2V0R2FtZXBhZHNFbmFibGVkKGJvb2wgYXJlRW5h
YmxlZCkgeyBtX2FyZUdhbWVwYWRzRW5hYmxlZCA9IGFyZUVuYWJsZWQ7IH0KKyAgICBib29sIGdh
bWVwYWRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlR2FtZXBhZHNFbmFibGVkOyB9Cisj
ZW5kaWYKKworI2lmIEVOQUJMRShDU1NfQU5JTUFUSU9OU19MRVZFTF8yKQorICAgIHZvaWQgc2V0
QW5pbWF0aW9uVHJpZ2dlcnNFbmFibGVkKGJvb2wgYXJlRW5hYmxlZCkgeyBtX2FyZUFuaW1hdGlv
blRyaWdnZXJzRW5hYmxlZCA9IGFyZUVuYWJsZWQ7IH0KKyAgICBib29sIGFuaW1hdGlvblRyaWdn
ZXJzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlQW5pbWF0aW9uVHJpZ2dlcnNFbmFibGVk
OyB9CisjZW5kaWYKKworI2lmIEVOQUJMRShXRUJfQU5JTUFUSU9OUykKKyAgICB2b2lkIHNldFdl
YkFuaW1hdGlvbnNFbmFibGVkKGJvb2wgYXJlRW5hYmxlZCkgeyBtX2FyZVdlYkFuaW1hdGlvbnNF
bmFibGVkID0gYXJlRW5hYmxlZDsgfQorICAgIGJvb2wgd2ViQW5pbWF0aW9uc0VuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2FyZVdlYkFuaW1hdGlvbnNFbmFibGVkOyB9CisjZW5kaWYKKworICAg
IHZvaWQgc2V0U2hhZG93RE9NRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzU2hhZG93RE9N
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgc2hhZG93RE9NRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNTaGFkb3dET01FbmFibGVkOyB9CisKKyAgICB2b2lkIHNldElucHV0RXZl
bnRzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lucHV0RXZlbnRzRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQorICAgIGJvb2wgaW5wdXRFdmVudHNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
bnB1dEV2ZW50c0VuYWJsZWQ7IH0KKworICAgIHZvaWQgc2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRh
dGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0ludGVyYWN0aXZlRm9ybVZhbGlkYXRp
b25FbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBpbnRlcmFjdGl2ZUZvcm1WYWxpZGF0
aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9u
RW5hYmxlZDsgfQorCisgICAgdm9pZCBzZXRDdXN0b21FbGVtZW50c0VuYWJsZWQoYm9vbCBhcmVF
bmFibGVkKSB7IG1fYXJlQ3VzdG9tRWxlbWVudHNFbmFibGVkID0gYXJlRW5hYmxlZDsgfQorICAg
IGJvb2wgY3VzdG9tRWxlbWVudHNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hcmVDdXN0b21F
bGVtZW50c0VuYWJsZWQ7IH0KKworI2lmIEVOQUJMRShXRUJHTDIpCisgICAgdm9pZCBzZXRXZWJH
TDJFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNXZWJHTDJFbmFibGVkID0gaXNFbmFibGVk
OyB9CisgICAgYm9vbCB3ZWJHTDJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1dlYkdMMkVu
YWJsZWQ7IH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKEZFVENIX0FQSSkKKyAgICB2b2lkIHNldEZl
dGNoQVBJRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzRmV0Y2hBUElFbmFibGVkID0gaXNF
bmFibGVkOyB9CisgICAgYm9vbCBmZXRjaEFQSUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
RmV0Y2hBUElFbmFibGVkOyB9CisjZW5kaWYKKworI2lmIEVOQUJMRShET1dOTE9BRF9BVFRSSUJV
VEUpCisgICAgdm9pZCBzZXREb3dubG9hZEF0dHJpYnV0ZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgbV9pc0Rvd25sb2FkQXR0cmlidXRlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wg
ZG93bmxvYWRBdHRyaWJ1dGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Rvd25sb2FkQXR0
cmlidXRlRW5hYmxlZDsgfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQor
ICAgIHZvaWQgc2V0Q1NTR3JpZExheW91dEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9jc3NH
cmlkTGF5b3V0RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgaXNDU1NHcmlkTGF5b3V0
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY3NzR3JpZExheW91dEVuYWJsZWQ7IH0KKyNlbmRp
ZgorCisjaWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKKyAgICB2b2lkIHNldEludGVy
c2VjdGlvbk9ic2VydmVyRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2ludGVyc2VjdGlvbk9i
c2VydmVyRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgaW50ZXJzZWN0aW9uT2JzZXJ2
ZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnNlY3Rpb25PYnNlcnZlckVuYWJsZWQ7
IH0KKyNlbmRpZgorCisgICAgdm9pZCBzZXRNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZChib29s
IGFyZUVuYWJsZWQpIHsgbV9hcmVNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZCA9IGFyZUVuYWJs
ZWQ7IH0KKyAgICBib29sIG1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9hcmVNb2Rlcm5NZWRpYUNvbnRyb2xzRW5hYmxlZDsgfQorCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKKyAgICB2b2lkIHNldEVuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZChib29sIGlz
RW5hYmxlZCkgeyBtX2VuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAg
IGJvb2wgZW5jcnlwdGVkTWVkaWFBUElFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmNyeXB0
ZWRNZWRpYUFQSUVuYWJsZWQ7IH0KKyNlbmRpZgorCisjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8p
CisgICAgdm9pZCBzZXRTdWJ0bGVDcnlwdG9FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNT
dWJ0bGVDcnlwdG9FbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBzdWJ0bGVDcnlwdG9F
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N1YnRsZUNyeXB0b0VuYWJsZWQ7IH0KKyNlbmRp
ZgorCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMmIHNo
YXJlZEZlYXR1cmVzKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0KCk7CisKK3By
aXZhdGU6CisgICAgLy8gTmV2ZXIgaW5zdGFudGlhdGUuCisgICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlcygpOworCisgICAgYm9vbCBtX2FyZU1vZGVybk1lZGlhQ29udHJvbHNFbmFibGVkIHsgZmFs
c2UgfTsKKyAgICBib29sIG1faXNMb2NhbFN0b3JhZ2VFbmFibGVkOworICAgIGJvb2wgbV9pc1Nl
c3Npb25TdG9yYWdlRW5hYmxlZDsKKyAgICBib29sIG1faXNXZWJraXROb3RpZmljYXRpb25zRW5h
YmxlZDsKKyAgICBib29sIG1faXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsKKyAgICBib29sIG1f
aXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzRE9NSXRlcmF0b3JFbmFi
bGVkIHsgdHJ1ZSB9OworICAgIGJvb2wgbV9pc0dlb2xvY2F0aW9uRW5hYmxlZDsKKyAgICBib29s
IG1faXNUb3VjaEVuYWJsZWQ7CisgICAgYm9vbCBtX2lzRGV2aWNlTW90aW9uRW5hYmxlZDsKKyAg
ICBib29sIG1faXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7CisgICAgYm9vbCBtX2lzTGlua1By
ZWxvYWRFbmFibGVkOworICAgIGJvb2wgbV9pc0xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9s
VUlFbmFibGVkOworICAgIGJvb2wgbV9pc1Jlc291cmNlVGltaW5nRW5hYmxlZDsKKworI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIGJvb2wgbV9pc0luZGV4ZWREQkVuYWJsZWQ7Cisj
ZW5kaWYKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpCisgICAgYm9v
bCBtX2lzSW5kZXhlZERCV29ya2Vyc0VuYWJsZWQ7CisjZW5kaWYKKworI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0kxOE5fQVBJKQorICAgIGJvb2wgbV9pc0phdmFTY3JpcHRJMThOQVBJRW5hYmxlZDsK
KyNlbmRpZgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyAgICBib29sIG1faXNNZWRpYVN0
cmVhbUVuYWJsZWQgeyB0cnVlIH07CisjZW5kaWYKKyNpZiBFTkFCTEUoV0VCX1JUQykKKyAgICBi
b29sIG1faXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQ7CisjZW5kaWYKKworI2lmIEVOQUJMRShMRUdB
Q1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKKyAgICBib29sIG1faXNMZWdhY3lDU1NWZW5kb3JQcmVm
aXhlc0VuYWJsZWQ7CisjZW5kaWYKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEUpCisgICAg
Ym9vbCBtX2lzSW5wdXRUeXBlRGF0ZUVuYWJsZWQ7CisjZW5kaWYKKworI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpCisgICAgYm9vbCBtX2lzSW5wdXRUeXBlRGF0ZVRp
bWVFbmFibGVkOworI2VuZGlmCisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FM
KQorICAgIGJvb2wgbV9pc0lucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkOworI2VuZGlmCisK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9NT05USCkKKyAgICBib29sIG1faXNJbnB1dFR5cGVNb250
aEVuYWJsZWQ7CisjZW5kaWYKKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX1RJTUUpCisgICAgYm9v
bCBtX2lzSW5wdXRUeXBlVGltZUVuYWJsZWQ7CisjZW5kaWYKKworI2lmIEVOQUJMRShJTlBVVF9U
WVBFX1dFRUspCisgICAgYm9vbCBtX2lzSW5wdXRUeXBlV2Vla0VuYWJsZWQ7CisjZW5kaWYKKwor
I2lmIEVOQUJMRShDU1BfTkVYVCkKKyAgICBib29sIG1fYXJlRXhwZXJpbWVudGFsQ29udGVudFNl
Y3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkOworI2VuZGlmCisKKyNpZiBFTkFCTEUoRk9OVF9M
T0FEX0VWRU5UUykKKyAgICBib29sIG1faXNGb250TG9hZEV2ZW50c0VuYWJsZWQ7CisjZW5kaWYK
KworI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIGJvb2wgbV9hcmVHYW1lcGFkc0VuYWJsZWQgeyBm
YWxzZSB9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1NTX0FOSU1BVElPTlNfTEVWRUxfMikKKyAg
ICBib29sIG1fYXJlQW5pbWF0aW9uVHJpZ2dlcnNFbmFibGVkOworI2VuZGlmCisKKyNpZiBFTkFC
TEUoV0VCX0FOSU1BVElPTlMpCisgICAgYm9vbCBtX2FyZVdlYkFuaW1hdGlvbnNFbmFibGVkOwor
I2VuZGlmCisgICAgCisgICAgYm9vbCBtX2lzU2hhZG93RE9NRW5hYmxlZDsKKworICAgIGJvb2wg
bV9pbnB1dEV2ZW50c0VuYWJsZWQ7CisKKyAgICBib29sIG1faXNJbnRlcmFjdGl2ZUZvcm1WYWxp
ZGF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CisKKyAgICBib29sIG1fYXJlQ3VzdG9tRWxlbWVudHNF
bmFibGVkIHsgdHJ1ZSB9OworCisjaWYgRU5BQkxFKFdFQkdMMikKKyAgICBib29sIG1faXNXZWJH
TDJFbmFibGVkOworI2VuZGlmCisKKyNpZiBFTkFCTEUoRkVUQ0hfQVBJKQorICAgIGJvb2wgbV9p
c0ZldGNoQVBJRW5hYmxlZCB7IGZhbHNlIH07CisjZW5kaWYKKworI2lmIEVOQUJMRShET1dOTE9B
RF9BVFRSSUJVVEUpCisgICAgYm9vbCBtX2lzRG93bmxvYWRBdHRyaWJ1dGVFbmFibGVkIHsgZmFs
c2UgfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKKyAgICBib29sIG1f
Y3NzR3JpZExheW91dEVuYWJsZWQ7CisjZW5kaWYKKworI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCisgICAgYm9vbCBtX2VuY3J5cHRlZE1lZGlhQVBJRW5hYmxlZCB7IGZhbHNlIH07CisjZW5k
aWYKKworI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCisgICAgYm9vbCBtX2ludGVy
c2VjdGlvbk9ic2VydmVyRW5hYmxlZCB7IGZhbHNlIH07CisjZW5kaWYKKworI2lmIEVOQUJMRShT
VUJUTEVfQ1JZUFRPKQorICAgIGJvb2wgbV9pc1N1YnRsZUNyeXB0b0VuYWJsZWQ7CisjZW5kaWYK
KworICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>