<?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>194245</bug_id>
          
          <creation_ts>2019-02-04 15:39:33 -0800</creation_ts>
          <short_desc>Move some macOS/iOS scrolling code into the scrolling/cocoa directory</short_desc>
          <delta_ts>2019-02-04 20:36: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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>koivisto</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1502068</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-02-04 15:39:33 -0800</bug_when>
    <thetext>Move some macOS/iOS scrolling code into the scrolling/cocoa directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502080</commentid>
    <comment_count>1</comment_count>
      <attachid>361118</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-02-04 16:09:21 -0800</bug_when>
    <thetext>Created attachment 361118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502093</commentid>
    <comment_count>2</comment_count>
      <attachid>361123</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-02-04 16:25:42 -0800</bug_when>
    <thetext>Created attachment 361123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502114</commentid>
    <comment_count>3</comment_count>
      <attachid>361128</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-02-04 16:44:49 -0800</bug_when>
    <thetext>Created attachment 361128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502233</commentid>
    <comment_count>4</comment_count>
      <attachid>361128</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-04 20:35:01 -0800</bug_when>
    <thetext>Comment on attachment 361128
Patch

Clearing flags on attachment: 361128

Committed r240963: &lt;https://trac.webkit.org/changeset/240963&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502234</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-02-04 20:35:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502235</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-04 20:36:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/47809380&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361118</attachid>
            <date>2019-02-04 16:09:21 -0800</date>
            <delta_ts>2019-02-04 16:25:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194245-20190204160920.patch</filename>
            <type>text/plain</type>
            <size>55727</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk4MmM4MDY5YzM5ODc3
ZGQ4ZWQyZmUxNzU3ZmRjM2Q1OTFjMjg3OC4uNjhmZWM3YjA0MTJhMThiYjM3ODExODZjOTUyZmVi
OTEyNWRmZWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE5LTAyLTA0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgc29tZSBt
YWNPUy9pT1Mgc2Nyb2xsaW5nIGNvZGUgaW50byB0aGUgc2Nyb2xsaW5nL2NvY29hIGRpcmVjdG9y
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MjQ1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZSBhbmQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUgYXJlIHVzZWQgb24g
aU9TIGFuZCBtYWNPUywgc28gbW92ZSB0aGVtIHRvIHRoZSBjb2NvYQorICAgICAgICBkaXJlY3Rv
cnkuCisKKyAgICAgICAgU3RhbmRhcmRpemUgb24gdGhlIG9yZGVyaW5nIG9mIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKE1BQykuCisKKyAgICAgICAgU3RvcCBidWlsZGluZyBT
Y3JvbGxpbmdUaHJlYWQgZm9yIGlPUyAoaXQncyBuZXZlciB1c2VkKSwgYW5kIHN0dWIgb3V0IHNv
bWUgZnVuY3Rpb25zIHNvIHRoaW5ncyBidWlsZC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUaHJlYWQ6OmluaXRpYWxpemVSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RocmVhZDo6d2FrZVVwUnVuTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUaHJlYWQ6OnRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFjayk6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUu
aC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlRml4ZWROb2Rl
Lm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUubW0uCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oLgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Lm1tLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUaHJlYWRNYWMubW06
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbToKKwogMjAxOS0wMi0wNCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBc3luYyBvdmVyZmxvdyBzY3Jv
bGwgd2l0aCBib3JkZXItcmFkaXVzIHJlbmRlcnMgaW5jb3JyZWN0bHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTJk
MjE4YTBkNmMwNTE1ZTI3YmQ3YTExMmQ3ZjExZDdmNGU3OGFmZS4uOTUzMTRiMjAzYjBlN2I5ZTQ4
Y2ZkYzA1ZmUxOTBmZTY0MTQ3YzBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0w
Mi0wNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIHNvbWUgbWFjT1MvaU9TIHNjcm9sbGluZyBjb2RlIGludG8gdGhlIHNjcm9sbGluZy9jb2Nv
YSBkaXJlY3RvcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NDI0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBQTEFURk9STShNQUMpLCBub3QgIVBMQVRGT1JNKElPU19GQU1JTFkpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW06CisKIDIwMTktMDItMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgUGFnZU92ZXJsYXlDb250cm9sbGVyJ3MgbGF5ZXJzIHNo
b3VsZCBiZSBjcmVhdGVkIGxhemlseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNWEwMGQx
MmE1ODAwM2FkNTVhODNkZjEzZmZjODVkODY4MGE2N2JkYy4uMDcyMjI4OGRhMWM4OTM1YTc4Zjdl
MTkyMDk2YTdhZDg1NzJlODA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xNDYsNiAr
MTQ2LDggQEAgcGFnZS9tYWMvV2hlZWxFdmVudERlbHRhRmlsdGVyTWFjLm1tCiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCiAKIHBhZ2Uvc2Nyb2xsaW5nL2Nv
Y29hL1Njcm9sbGluZ1N0YXRlTm9kZS5tbQorcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5n
VHJlZUZpeGVkTm9kZS5tbQorcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUubW0KIAogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1t
CiBwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5t
bQpAQCAtMTU1LDEyICsxNTcsMTAgQEAgcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGVNYWMubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUaHJlYWRNYWMubW0KLXBh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tCiBwYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KIHBhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCiBwYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5jcHAKLXBhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQogCiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24u
Y3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA2ZDQ1Mzc0MTVlNjg2YTg4ODViY2E5OWQ3NTY4ZjBiMjQyMDQ4Mzg1Li44NTU5
MGY2ZGIyNzg4MGU4OTJlZDVkMGEzMTFhMTI3MTc4NGE2Mzk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNTksMTAgKzM1OSwx
MSBAQAogCQkwRjg3MTY3MDFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODcxNjZFMUM4NjlEODMw
MDRGRjBERSAvKiBMZW5ndGhQb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGOEI0NTcyMURDM0ZCQTMwMDQ0M0MzRiAvKiBJbnRlcnNlY3Rp
b25PYnNlcnZlckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjhCNDU3MTFEQzNGQkEzMDA0NDNDM0YgLyogSW50ZXJzZWN0aW9uT2JzZXJ2
ZXJDYWxsYmFjay5oICovOyB9OwogCQkwRjhCNDU3NjFEQzQxREJBMDA0NDNDM0YgLyogSlNJbnRl
cnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjhCNDU3NDFEQzQxREJBMDA0NDNDM0YgLyogSlNJbnRlcnNlY3Rp
b25PYnNlcnZlckNhbGxiYWNrLmggKi87IH07CisJCTBGOTRCNjQ3MjIwOEZFMzYwMDE1NzAxNCAv
KiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjk0QjY0MjIyMDhGNzAxMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGOTRCNjQ5MjIwOEZFM0IwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NEI2
NDMyMjA4RjcwMjAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5REFBMEYxRkQxQzY2
QTAwNzlDNUIyIC8qIERPTUdDT3V0cHV0Q29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5REFBMEUxRkQxQzY2NDAwNzlDNUIyIC8qIERP
TUdDT3V0cHV0Q29uc3RyYWludC5oICovOyB9OwogCQkwRkEyNEQ3QTE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQTI0RDc4MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVy
VXBkYXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGQjYyNTJGMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNjI1MkQxOERFMUIx
NTAwQTA3QzA1IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZCODg5MEExNjdEMkZBMTAwMTBDREE1IC8qIFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkI4ODkwODE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRkI4ODkwRjE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI4ODkw
RDE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZDNEU0MEQxODdGODJF
MTAwNDU4ODJDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM0RTQwNzE4N0Y4MkUxMDA0NTg4MkMgLyog
U2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MuaCAqLzsgfTsKIAkJMEZDNEU0MTAxODdGODJFMTAwNDU4
ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQzRFNDBBMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVl
SU9TLmggKi87IH07CkBAIC0yNzA1LDcgKzI3MDYsNiBAQAogCQk5M0MwOUE1MzBCMDY0REIzMDA1
QUJENEQgLyogRXZlbnRIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0MwOUE1MjBCMDY0REIzMDA1QUJENEQgLyogRXZlbnRIYW5kbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNDMDlD
ODYwQjA2NTdBQTAwNUFCRDREIC8qIFNjcm9sbFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0MwOUM4NTBCMDY1N0FBMDA1QUJENEQgLyogU2Ny
b2xsVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5M0MzOEJGRjE2NDQ3M0M3MDAwOTFFQjIgLyogU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzM4QkZE
MTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzQzM4QzAzMTY0NDczREQw
MDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0MzOEMwMTE2NDQ3M0REMDAwOTFFQjIgLyogU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzQzQ0MjAwMEY4MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNDQx
RkYwRjgxM0FFMTAwQzFBNjM0IC8qIENvbGxlY3Rpb25UeXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNDNEE0MTUxNjI5REY1QTAwQzNFQjZF
IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzRBNDEzMTYyOURGNUEwMEMzRUI2RSAv
KiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNDNEY2RUIxMTA4RjlBNTAwOTlEMERC
IC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzRGNkU5MTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmls
aXR5U2Nyb2xsYmFyLmggKi87IH07CkBAIC01NzkwLDYgKzU3OTAsMTAgQEAKIAkJMEY4QjQ1NzMx
REM0MURCQTAwNDQzQzNGIC8qIEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ludGVyc2VjdGlvbk9ic2VydmVy
Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhCNDU3NDFEQzQx
REJBMDA0NDNDM0YgLyogSlNJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk0QTM5NTFFRjFCMTA1MDBGQkFGRkIg
LyogSlNET01RdWFkQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRE9NUXVhZEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
OTRCNjQyMjIwOEY3MDEwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaDsgcGF0aCA9IHBhZ2Uvc2Nyb2xsaW5n
L2NvY29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OworCQkwRjk0QjY0MzIyMDhGNzAyMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaDsgcGF0aCA9IHBh
Z2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmg7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKKwkJMEY5NEI2NDQyMjA4RjcwMjAwMTU3MDE0IC8qIFNjcm9sbGlu
Z1RyZWVGaXhlZE5vZGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBTY3JvbGxpbmdUcmVlRml4
ZWROb2RlLm1tOyBwYXRoID0gcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVk
Tm9kZS5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkwRjk0QjY0NTIyMDhGNzAz
MDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbTsgcGF0aCA9IHBhZ2Uvc2Nyb2xsaW5nL2Nv
Y29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7
IH07CiAJCTBGOTdBNjU3MTU1REE4MUUwMEZBREQ0QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEaXNwbGF5UmVm
cmVzaE1vbml0b3JJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOURBQTBD
MUZEMUM2NjMwMDc5QzVCMiAvKiBET01HQ091dHB1dENvbnN0cmFpbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NR0NPdXRwdXRDb25zdHJhaW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5REFBMEUxRkQxQzY2NDAwNzlDNUIyIC8qIERP
TUdDT3V0cHV0Q29uc3RyYWludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01HQ091dHB1dENvbnN0cmFpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3
OTksOCArNTgwMyw2IEBACiAJCTBGQTg4RUJDMTZBOEQxQkQwMEY5OTk4NCAvKiBTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI2MjUyQzE4REUxQjE1MDBBMDdDMDUgLyogR2Vv
bWV0cnlVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R2VvbWV0cnlVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI2
MjUyRDE4REUxQjE1MDBBMDdDMDUgLyogR2VvbWV0cnlVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvbWV0cnlVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEZCODg5MDgxNjdEMkZBMTAwMTBDREE1IC8qIFNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQjg4OTA5MTY3
RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI4ODkwQzE2N0QzMDE2MDAxMENEQTUgLyog
U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQjg4OTBEMTY3RDMwMTYwMDEwQ0RBNSAvKiBTY3JvbGxpbmdTdGF0ZVN0
aWNreU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nU3Rh
dGVTdGlja3lOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA1MTY4MjE5
QjVFQkUwMDMxQzM5RSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNjQ3LDggKzEwNjQ5LDYg
QEAKIAkJOTNDMDlDODUwQjA2NTdBQTAwNUFCRDREIC8qIFNjcm9sbFR5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQzM4QkZDMTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZp
eGVkTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxp
bmdTdGF0ZUZpeGVkTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzM4
QkZEMTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5M0MzOEMwMTE2NDQ3M0REMDAwOTFFQjIgLyogU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
Y3JvbGxpbmdUcmVlRml4ZWROb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkz
QzM4QzAyMTY0NDczREQwMDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNDQxRkYwRjgxM0FFMTAwQzFB
NjM0IC8qIENvbGxlY3Rpb25UeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbGxlY3Rpb25UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzRBNDEz
MTYyOURGNUEwMEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNEE0MTQxNjI5
REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY5Nzks
OCArMTY5NzksNiBAQAogCQkJCTUxN0RFRUUzMURFOTRBREMwMEI5MTY0NCAvKiBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3JNYWMubW0gKi8sCiAJCQkJMEZBODhFQkMxNkE4RDFCRDAwRjk5OTg0
IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tICovLAogCQkJCTFBRjYy
RjIzMTREQUZFOTEwMDQxNTU2QyAvKiBTY3JvbGxpbmdUaHJlYWRNYWMubW0gKi8sCi0JCQkJOTND
MzhDMDExNjQ0NzNERDAwMDkxRUIyIC8qIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCAqLywKLQkJ
CQk5M0MzOEMwMjE2NDQ3M0REMDAwOTFFQjIgLyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbSAq
LywKIAkJCQk5M0M0QTQxMzE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYy5oICovLAogCQkJCTkzQzRBNDE0MTYyOURGNUEwMEMzRUI2RSAvKiBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tICovLAogCQkJCTBGRTU4MDYxMTkzMjdB
NjIwMERFMzJFQiAvKiBTY3JvbGxpbmdUcmVlTWFjLmNwcCAqLywKQEAgLTE2OTg5LDggKzE2OTg3
LDYgQEAKIAkJCQkwRkMwNTE2ODIxOUI1RUJFMDAzMUMzOUUgLyogU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZU1hYy5tbSAqLywKIAkJCQkwRjM3RjA4NDIyMDJBQ0I3MDBBODlDMEIg
LyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oICovLAogCQkJCTBGMzdG
MDgzMjIwMkFDOEYwMEE4OUMwQiAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjLm1tICovLAotCQkJCTBGQjg4OTA4MTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oICovLAotCQkJCTBGQjg4OTA5MTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZS5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIxODE3LDYgKzIxODEzLDEwIEBACiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTkzRUY3RDU0MTk1NEU5OEYwMERGQjcxRCAvKiBT
Y3JvbGxpbmdTdGF0ZU5vZGUubW0gKi8sCisJCQkJMEY5NEI2NDIyMjA4RjcwMTAwMTU3MDE0IC8q
IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCAqLywKKwkJCQkwRjk0QjY0NDIyMDhGNzAyMDAxNTcw
MTQgLyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbSAqLywKKwkJCQkwRjk0QjY0MzIyMDhGNzAy
MDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCAqLywKKwkJCQkwRjk0QjY0NTIy
MDhGNzAzMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0gKi8sCiAJCQkpOwog
CQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMwMDI1LDcg
KzMwMDI1LDYgQEAKIAkJCQkxQTg1QjFFNzBBMUIyNDA1MDBEOEM4N0MgLyogSlNIVE1MRGlyZWN0
b3J5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4NUIyQjcwQTFCMkFDNzAwRDhDODdD
IC8qIEpTSFRNTERpdkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBODVCMUU5MEExQjI0
MDUwMEQ4Qzg3QyAvKiBKU0hUTUxETGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTcx
RUFEQ0Q4MjIwODdFNzIwMDY1QTQ1RiAvKiBQb2ludGVySUQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNDk0RTM1MEExMjM1OEIwMEZEQUZDMSAvKiBKU0hUTUxEb2N1bWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE0OTRCRkIwQTEyMkY0NDAwRkRBRkMxIC8qIEpTSFRNTEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzOEU2NUYxMDlGMDk4NDAwMDhBNDhFQyAvKiBKU0hUTUxFbGVtZW50
V3JhcHBlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLApAQCAtMzEwNzMsNiArMzEwNzIsNyBAQAog
CQkJCTcxQjVBQjI2MjFGMUQ5RjQwMDM3NkU1QyAvKiBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxN0QzRkYzMjE1NTk5RjQwMDM0RTNCOSAvKiBQb2ludGVy
RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQjFGNzE3MEQwMENBQTgwMDRBRUE2NCAvKiBQ
b2ludGVyRXZlbnRzSGl0UnVsZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxRUFEQ0Q4MjIwODdF
NzIwMDY1QTQ1RiAvKiBQb2ludGVySUQuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGRjgxM0E3MURC
QTg2NDAwMDlCRjAwMSAvKiBQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg0NzMwRDkyMTI0OEYwQjMwMEQzQTlDOSAvKiBQb2ludExpZ2h0U291cmNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzA1OTk3QTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMTQ2NSw3ICszMTQ2NSw3IEBACiAJCQkJOTMxQ0JEMTExNjFB
NDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFGNjJGMjYxNERBRkVBMTAwNDE1NTZDIC8qIFNjcm9sbGluZ1RocmVhZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBQUREQTQxNERCNDA5RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWUuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTkzQzM4QzAzMTY0NDczREQwMDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVl
Rml4ZWROb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjk0QjY0NzIyMDhGRTM2MDAxNTcwMTQg
LyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZENDFFNjgy
MUY4MEMwRTAwMEMwMDZEIC8qIFNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVBM0U4ODE5MUIzQkQ3MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDNEU0MTExODdGODJFMTAw
NDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzE0NzcsNyArMzE0NzcsNyBAQAogCQkJCTkzOTFBOTlEMTYyOUQ3MDAwMDI5NzMz
MCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZE
NUE5OUQxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzdGMDg1MjIwMkJGOTgwMEE4OUMwQiAvKiBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmggaW4gSGVhZGVycyAqLywKLQkJCQkw
RkI4ODkwQTE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGOTRCNjQ5MjIwOEZFM0IwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDNTc5NUQxREE1QzMwMTAwNkY5Qzk3
IC8qIFNjcm9sbEludG9WaWV3T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FBRkU4RDAx
OUNCODY3MjAwMEY1NkQ4IC8qIFNjcm9sbExhdGNoaW5nU3RhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzQzU3OTVEMURBNUMzMDEwMDZGOUM4NiAvKiBTY3JvbGxMb2dpY2FsUG9zaXRpb24uaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RocmVhZC5jcHAKaW5kZXggMjQ2NjY2ZDI5OTljY2E4ZWFkZjUzNjYyYjMyZTc5N2UxNTVi
NzA5Yy4uMWU1NTYyZGZiNzRmZDUzZTdlZDQxMzc1N2RkYTI5MzQ2Nzk0NDliZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCkBAIC0x
MDQsNiArMTA0LDI3IEBAIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEZ1bmN0aW9uc0Zy
b21TY3JvbGxpbmdUaHJlYWQoKQogICAgICAgICBmdW5jdGlvbigpOwogfQogCisjaWYgIVBMQVRG
T1JNKE1BQykKK05PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpp
bml0aWFsaXplUnVuTG9vcCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3Zv
aWQgU2Nyb2xsaW5nVGhyZWFkOjp3YWtlVXBSdW5Mb29wKCkKK3sKK30KKworI2lmIFBMQVRGT1JN
KENPQ09BKQordm9pZCBTY3JvbGxpbmdUaHJlYWQ6OnRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFj
ayh2b2lkKikKK3sKK30KKwordm9pZCBTY3JvbGxpbmdUaHJlYWQ6OnRocmVhZFJ1bkxvb3BTb3Vy
Y2VDYWxsYmFjaygpCit7Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCisjZW5kaWYgLy8g
UExBVEZPUk0oTUFDKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0
MDcyOTY1MTkyMmY0YmE3NmJmYTQzZjAzNWJlNDg4N2RkNTNhNDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlRml4ZWRO
b2RlLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2luY2x1ZGUgIlNjcm9sbGluZ0NvbnN0cmFpbnRz
LmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CisKK09CSkNfQ0xBU1MgQ0FMYXllcjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKKworY2xhc3MgU2Nyb2xsaW5n
VHJlZUZpeGVkTm9kZSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlTm9kZSB7CitwdWJsaWM6CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTY3JvbGxpbmdUcmVlRml4ZWROb2RlPiBjcmVhdGUo
U2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisKKyAgICB2aXJ0dWFsIH5TY3JvbGxp
bmdUcmVlRml4ZWROb2RlKCk7CisKK3ByaXZhdGU6CisgICAgU2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZvaWQgY29tbWl0U3Rh
dGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJl
ZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBj
b25zdCBGbG9hdFNpemUmIGN1bXVsYXRpdmVEZWx0YSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGR1
bXBQcm9wZXJ0aWVzKFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJl
aGF2aW9yKSBjb25zdCBvdmVycmlkZTsKKworICAgIEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0
cmFpbnRzIG1fY29uc3RyYWludHM7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fbGF5ZXI7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfU0NS
T0xMSU5HX05PREUoU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSwgaXNGaXhlZE5vZGUoKSkKKworI2Vu
ZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kYzJjODkxNTY5NzY5ZDMxYmFiNDNiZjMwMjdlNmI4ZDJiNGUyYjQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5tbQpAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIgorCisjaWYg
RU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2ltcG9ydCAiTG9nZ2luZy5oIgorI2ltcG9ydCAi
U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWUuaCIKKyNp
bXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgorI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVh
bS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxTY3JvbGxpbmdUcmVlRml4ZWROb2Rl
PiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5n
VHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTY3JvbGxpbmdUcmVlRml4ZWROb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkpOworfQorCitT
Y3JvbGxpbmdUcmVlRml4ZWROb2RlOjpTY3JvbGxpbmdUcmVlRml4ZWROb2RlKFNjcm9sbGluZ1Ry
ZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCisgICAgOiBTY3JvbGxp
bmdUcmVlTm9kZShzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZTo6Rml4ZWQsIG5vZGVJ
RCkKK3sKKyAgICBzY3JvbGxpbmdUcmVlLmZpeGVkT3JTdGlja3lOb2RlQWRkZWQoKTsKK30KKwor
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6flNjcm9sbGluZ1RyZWVGaXhlZE5vZGUoKQoreworICAg
IHNjcm9sbGluZ1RyZWUoKS5maXhlZE9yU3RpY2t5Tm9kZVJlbW92ZWQoKTsKK30KKwordm9pZCBT
Y3JvbGxpbmdUcmVlRml4ZWROb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNj
cm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlKQoreworICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRl
Rml4ZWROb2RlJiBmaXhlZFN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRml4ZWRO
b2RlPihzdGF0ZU5vZGUpOworCisgICAgaWYgKGZpeGVkU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OkxheWVyKSkKKyAgICAgICAgbV9sYXllciA9IGZpeGVk
U3RhdGVOb2RlLmxheWVyKCk7CisKKyAgICBpZiAoc3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZTo6Vmlld3BvcnRDb25zdHJhaW50cykpCisgICAgICAg
IG1fY29uc3RyYWludHMgPSBmaXhlZFN0YXRlTm9kZS52aWV3cG9ydENvbnN0cmFpbnRzKCk7Cit9
CisKK25hbWVzcGFjZSBTY3JvbGxpbmdUcmVlRml4ZWROb2RlSW50ZXJuYWwgeworc3RhdGljIGlu
bGluZSBDR1BvaW50IG9wZXJhdG9yKihDR1BvaW50JiBhLCBjb25zdCBDR1NpemUmIGIpCit7Cisg
ICAgcmV0dXJuIENHUG9pbnRNYWtlKGEueCAqIGIud2lkdGgsIGEueSAqIGIuaGVpZ2h0KTsKK30K
K30KKwordm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2RlOjp1cGRhdGVMYXllcnNBZnRlckFuY2Vz
dG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxv
YXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVs
dGEpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGVJbnRlcm5h
bDsKKyAgICBGbG9hdFBvaW50IGxheWVyUG9zaXRpb24gPSBtX2NvbnN0cmFpbnRzLmxheWVyUG9z
aXRpb25Gb3JWaWV3cG9ydFJlY3QoZml4ZWRQb3NpdGlvblJlY3QpOworCisgICAgTE9HX1dJVEhf
U1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdUcmVlRml4ZWROb2RlICIgPDwg
c2Nyb2xsaW5nTm9kZUlEKCkgPDwgIiB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlOiBu
ZXcgdmlld3BvcnQgIiA8PCBmaXhlZFBvc2l0aW9uUmVjdCA8PCAiIHZpZXdwb3J0UmVjdEF0TGFz
dExheW91dCAiIDw8IG1fY29uc3RyYWludHMudmlld3BvcnRSZWN0QXRMYXN0TGF5b3V0KCkgPDwg
IiBsYXN0IGxheWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExh
eW91dCgpIDw8ICIgbmV3IG9mZnNldCBmcm9tIHRvcCAiIDw8IChmaXhlZFBvc2l0aW9uUmVjdC55
KCkgLSBsYXllclBvc2l0aW9uLnkoKSkpOworCisgICAgbGF5ZXJQb3NpdGlvbiAtPSBjdW11bGF0
aXZlRGVsdGE7CisKKyAgICBDR1JlY3QgbGF5ZXJCb3VuZHMgPSBbbV9sYXllciBib3VuZHNdOwor
ICAgIENHUG9pbnQgYW5jaG9yUG9pbnQgPSBbbV9sYXllciBhbmNob3JQb2ludF07CisgICAgQ0dQ
b2ludCBuZXdQb3NpdGlvbiA9IGxheWVyUG9zaXRpb24gLSBtX2NvbnN0cmFpbnRzLmFsaWdubWVu
dE9mZnNldCgpICsgYW5jaG9yUG9pbnQgKiBsYXllckJvdW5kcy5zaXplOworCisgICAgaWYgKGlz
bmFuKG5ld1Bvc2l0aW9uLngpIHx8IGlzbmFuKG5ld1Bvc2l0aW9uLnkpKSB7CisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiQXR0ZW1wdCB0byBjYWxsIFtDQUxheWVyIHNldFBvc2l0aW9uXSB3aXRoIE5h
TjogbmV3UG9zaXRpb249KCVmLCAlZikgbGF5ZXJQb3NpdGlvbj0oJWYsICVmKSBhbGlnbm1lbnRP
ZmZzZXQ9KCVmLCAlZikiLAorICAgICAgICAgICAgbmV3UG9zaXRpb24ueCwgbmV3UG9zaXRpb24u
eSwgbGF5ZXJQb3NpdGlvbi54KCksIGxheWVyUG9zaXRpb24ueSgpLAorICAgICAgICAgICAgbV9j
b25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKS53aWR0aCgpLCBtX2NvbnN0cmFpbnRzLmFsaWdu
bWVudE9mZnNldCgpLmhlaWdodCgpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbbV9sYXllciBzZXRQb3NpdGlvbjpuZXdQb3Np
dGlvbl07CisKKyAgICBpZiAoIW1fY2hpbGRyZW4pCisgICAgICAgIHJldHVybjsKKworICAgIEZs
b2F0U2l6ZSBuZXdEZWx0YSA9IGxheWVyUG9zaXRpb24gLSBtX2NvbnN0cmFpbnRzLmxheWVyUG9z
aXRpb25BdExhc3RMYXlvdXQoKSArIGN1bXVsYXRpdmVEZWx0YTsKKworICAgIGZvciAoYXV0byYg
Y2hpbGQgOiAqbV9jaGlsZHJlbikKKyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5j
ZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVkUG9zaXRpb25SZWN0LCBuZXdEZWx0YSk7Cit9
CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVh
bSYgdHMsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdAor
eworICAgIHRzIDw8ICJmaXhlZCBub2RlIjsKKyAgICBTY3JvbGxpbmdUcmVlTm9kZTo6ZHVtcFBy
b3BlcnRpZXModHMsIGJlaGF2aW9yKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImZpeGVkIGNvbnN0
cmFpbnRzIiwgbV9jb25zdHJhaW50cyk7CisgICAgCisgICAgaWYgKGJlaGF2aW9yICYgU2Nyb2xs
aW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNsdWRlTGF5ZXJQb3NpdGlvbnMpIHsKKyAgICAg
ICAgRmxvYXRSZWN0IGxheWVyQm91bmRzID0gW21fbGF5ZXIgYm91bmRzXTsKKyAgICAgICAgRmxv
YXRQb2ludCBhbmNob3JQb2ludCA9IFttX2xheWVyIGFuY2hvclBvaW50XTsKKyAgICAgICAgRmxv
YXRQb2ludCBwb3NpdGlvbiA9IFttX2xheWVyIHBvc2l0aW9uXTsKKyAgICAgICAgRmxvYXRQb2lu
dCBsYXllclRvcExlZnQgPSBwb3NpdGlvbiAtIHRvRmxvYXRTaXplKGFuY2hvclBvaW50KSAqIGxh
eWVyQm91bmRzLnNpemUoKSArIG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCk7CisgICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgibGF5ZXIgdG9wIGxlZnQiLCBsYXllclRvcExlZnQpOworICAg
IH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nv
Y29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkZWY1ZDJl
N2MyMDU3MDAzMWUwMzgxNmRhOGE2MDBkNzgzZmE2ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5o
CkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbmNsdWRlICJTY3JvbGxpbmdDb25zdHJhaW50cy5oIgor
I2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCitPQkpDX0NMQVNTIENBTGF5ZXI7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOworCitjbGFzcyBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlTm9kZSB7CitwdWJsaWM6CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4gY3JlYXRlKFNj
cm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworCisgICAgdmlydHVhbCB+U2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUoKTsKKworcHJpdmF0ZToKKyAgICBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZvaWQgY29tbWl0U3Rh
dGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJl
ZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBj
b25zdCBGbG9hdFNpemUmIGN1bXVsYXRpdmVEZWx0YSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGR1
bXBQcm9wZXJ0aWVzKFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJl
aGF2aW9yKSBjb25zdCBvdmVycmlkZTsKKworICAgIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25z
dHJhaW50cyBtX2NvbnN0cmFpbnRzOworICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2xheWVyOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1ND
Uk9MTElOR19OT0RFKFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLCBpc1N0aWNreU5vZGUoKSkKKwor
I2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkzNzQ4NGFjMzA4Y2RiZjYzYjQyZjE5YWRkMDIzZDczYjcyMDE1ZDgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQpAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCIK
KworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNp
bXBvcnQgIlNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIgorI2ltcG9ydCAiU2Nyb2xsaW5nVHJl
ZS5oIgorI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgorI2ltcG9y
dCAiU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oIgorI2ltcG9ydCA8UXVhcnR6
Q29yZS9DQUxheWVyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUmVmPFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlPiBTY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZTo6Y3JlYXRlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9s
bGluZ05vZGVJRCBub2RlSUQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKSk7Cit9CisKK1Njcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZShTY3JvbGxpbmdUcmVlJiBzY3Jv
bGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQorICAgIDogU2Nyb2xsaW5nVHJlZU5v
ZGUoc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGU6OlN0aWNreSwgbm9kZUlEKQorewor
ICAgIHNjcm9sbGluZ1RyZWUuZml4ZWRPclN0aWNreU5vZGVBZGRlZCgpOworfQorCitTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZTo6flNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKCkKK3sKKyAgICBzY3Jv
bGxpbmdUcmVlKCkuZml4ZWRPclN0aWNreU5vZGVSZW1vdmVkKCk7Cit9CisKK3ZvaWQgU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xs
aW5nU3RhdGVOb2RlJiBzdGF0ZU5vZGUpCit7CisgICAgY29uc3QgU2Nyb2xsaW5nU3RhdGVTdGlj
a3lOb2RlJiBzdGlja3lTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZVN0aWNreU5v
ZGU+KHN0YXRlTm9kZSk7CisKKyAgICBpZiAoc3RpY2t5U3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OkxheWVyKSkKKyAgICAgICAgbV9sYXllciA9IHN0aWNr
eVN0YXRlTm9kZS5sYXllcigpOworCisgICAgaWYgKHN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVy
dHkoU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlOjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKKyAgICAg
ICAgbV9jb25zdHJhaW50cyA9IHN0aWNreVN0YXRlTm9kZS52aWV3cG9ydENvbnN0cmFpbnRzKCk7
Cit9CisKK25hbWVzcGFjZSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUludGVybmFsIHsKK3N0YXRp
YyBpbmxpbmUgQ0dQb2ludCBvcGVyYXRvciooQ0dQb2ludCYgYSwgY29uc3QgQ0dTaXplJiBiKQor
eworICAgIHJldHVybiBDR1BvaW50TWFrZShhLnggKiBiLndpZHRoLCBhLnkgKiBiLmhlaWdodCk7
Cit9Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxheWVyc0FmdGVy
QW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25z
dCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUmIGN1bXVsYXRp
dmVEZWx0YSkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVJ
bnRlcm5hbDsKKyAgICBib29sIGFkanVzdFN0aWNreUxheWVyID0gZmFsc2U7CisgICAgRmxvYXRS
ZWN0IGNvbnN0cmFpbmluZ1JlY3Q7CisKKyAgICBpZiAoaXM8U2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZT4oKnBhcmVudCgpKSkgeworICAgICAgICBjb25zdHJhaW5pbmdSZWN0ID0g
RmxvYXRSZWN0KGRvd25jYXN0PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KCpw
YXJlbnQoKSkuc2Nyb2xsUG9zaXRpb24oKSwgbV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0
QXRMYXN0TGF5b3V0KCkuc2l6ZSgpKTsKKyAgICAgICAgYWRqdXN0U3RpY2t5TGF5ZXIgPSB0cnVl
OworICAgIH0gZWxzZSBpZiAoaXM8U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZT4oKnBh
cmVudCgpKSkgeworICAgICAgICBjb25zdHJhaW5pbmdSZWN0ID0gZml4ZWRQb3NpdGlvblJlY3Q7
CisgICAgICAgIGFkanVzdFN0aWNreUxheWVyID0gdHJ1ZTsKKyAgICB9CisKKyAgICBMT0dfV0lU
SF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlICIg
PDwgc2Nyb2xsaW5nTm9kZUlEKCkgPDwgIiB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdl
OiBuZXcgdmlld3BvcnQgIiA8PCBmaXhlZFBvc2l0aW9uUmVjdCA8PCAiIGNvbnN0cmFpbmluZ1Jl
Y3RBdExhc3RMYXlvdXQgIiA8PCBtX2NvbnN0cmFpbnRzLmNvbnN0cmFpbmluZ1JlY3RBdExhc3RM
YXlvdXQoKSA8PCAiIGxhc3QgbGF5ZXIgcG9zICIgPDwgbV9jb25zdHJhaW50cy5sYXllclBvc2l0
aW9uQXRMYXN0TGF5b3V0KCkgPDwgIiBhZGp1c3RTdGlja3lMYXllciAiIDw8IGFkanVzdFN0aWNr
eUxheWVyKTsKKworICAgIEZsb2F0U2l6ZSBkZWx0YUZvckRlc2NlbmRhbnRzID0gY3VtdWxhdGl2
ZURlbHRhOworCisgICAgaWYgKGFkanVzdFN0aWNreUxheWVyKSB7CisgICAgICAgIEZsb2F0UG9p
bnQgbGF5ZXJQb3NpdGlvbiA9IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkZvckNvbnN0cmFp
bmluZ1JlY3QoY29uc3RyYWluaW5nUmVjdCk7CisKKyAgICAgICAgQ0dSZWN0IGxheWVyQm91bmRz
ID0gW21fbGF5ZXIgYm91bmRzXTsKKyAgICAgICAgQ0dQb2ludCBhbmNob3JQb2ludCA9IFttX2xh
eWVyIGFuY2hvclBvaW50XTsKKyAgICAgICAgQ0dQb2ludCBuZXdQb3NpdGlvbiA9IGxheWVyUG9z
aXRpb24gLSBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpICsgYW5jaG9yUG9pbnQgKiBs
YXllckJvdW5kcy5zaXplOworICAgICAgICBbbV9sYXllciBzZXRQb3NpdGlvbjpuZXdQb3NpdGlv
bl07CisKKyAgICAgICAgZGVsdGFGb3JEZXNjZW5kYW50cyA9IGxheWVyUG9zaXRpb24gLSBtX2Nv
bnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSArIGN1bXVsYXRpdmVEZWx0YTsK
KyAgICB9CisKKyAgICBpZiAoIW1fY2hpbGRyZW4pCisgICAgICAgIHJldHVybjsKKworICAgIGZv
ciAoYXV0byYgY2hpbGQgOiAqbV9jaGlsZHJlbikKKyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVy
c0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVkUG9zaXRpb25SZWN0LCBkZWx0
YUZvckRlc2NlbmRhbnRzKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6ZHVt
cFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2
aW9yIGJlaGF2aW9yKSBjb25zdAoreworICAgIHRzIDw8ICJzdGlja3kgbm9kZSI7CisKKyAgICBT
Y3JvbGxpbmdUcmVlTm9kZTo6ZHVtcFByb3BlcnRpZXModHMsIGJlaGF2aW9yKTsKKyAgICB0cy5k
dW1wUHJvcGVydHkoInN0aWNreSBjb25zdHJhaW50cyIsIG1fY29uc3RyYWludHMpOworCisgICAg
aWYgKGJlaGF2aW9yICYgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3JJbmNsdWRlTGF5
ZXJQb3NpdGlvbnMpIHsKKyAgICAgICAgRmxvYXRSZWN0IGxheWVyQm91bmRzID0gW21fbGF5ZXIg
Ym91bmRzXTsKKyAgICAgICAgRmxvYXRQb2ludCBhbmNob3JQb2ludCA9IFttX2xheWVyIGFuY2hv
clBvaW50XTsKKyAgICAgICAgRmxvYXRQb2ludCBwb3NpdGlvbiA9IFttX2xheWVyIHBvc2l0aW9u
XTsKKyAgICAgICAgRmxvYXRQb2ludCBsYXllclRvcExlZnQgPSBwb3NpdGlvbiAtIHRvRmxvYXRT
aXplKGFuY2hvclBvaW50KSAqIGxheWVyQm91bmRzLnNpemUoKSArIG1fY29uc3RyYWludHMuYWxp
Z25tZW50T2Zmc2V0KCk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgibGF5ZXIgdG9wIGxlZnQi
LCBsYXllclRvcExlZnQpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUaHJlYWRNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVGhyZWFkTWFjLm1tCmluZGV4IDU2YjFj
ZGI4YjE2MWQwOTBhZmE4OTg1MzJhYTIwYjYxZWE5Zjk1YjAuLjZkMmNkYTA5NDEwNWY1NjQ0ZDhj
NDk1MzE0YmZjNDcxNjU1YjFiNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUaHJlYWRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RocmVhZE1hYy5tbQpAQCAtMjYsNyArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RocmVhZC5oIgogCi0jaWYg
RU5BQkxFKEFTWU5DX1NDUk9MTElORykKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQ
TEFURk9STShNQUMpCiAKICNpbmNsdWRlIDxtdXRleD4KIApAQCAtNzIsNCArNzIsNCBAQCB2b2lk
IFNjcm9sbGluZ1RocmVhZDo6dGhyZWFkUnVuTG9vcFNvdXJjZUNhbGxiYWNrKCkKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKyNl
bmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVk
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVG
aXhlZE5vZGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQwNzI5NjUxOTIyZjRi
YTc2YmZhNDNmMDM1YmU0ODg3ZGQ1M2E0MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLQotI2lu
Y2x1ZGUgIlNjcm9sbGluZ0NvbnN0cmFpbnRzLmgiCi0jaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5v
ZGUuaCIKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLU9CSkNfQ0xBU1MgQ0FMYXllcjsK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25z
dHJhaW50czsKLQotY2xhc3MgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSA6IHB1YmxpYyBTY3JvbGxp
bmdUcmVlTm9kZSB7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxTY3Jv
bGxpbmdUcmVlRml4ZWROb2RlPiBjcmVhdGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJ
RCk7Ci0KLSAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlRml4ZWROb2RlKCk7Ci0KLXByaXZhdGU6
Ci0gICAgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9k
ZUlEKTsKLQotICAgIHZvaWQgY29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxp
bmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0
b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9h
dFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUmIGN1bXVsYXRpdmVEZWx0
YSkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGR1bXBQcm9wZXJ0aWVzKFdURjo6VGV4dFN0cmVhbSYs
IFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yKSBjb25zdCBvdmVycmlkZTsKLQotICAg
IEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzIG1fY29uc3RyYWludHM7Ci0gICAgUmV0
YWluUHRyPENBTGF5ZXI+IG1fbGF5ZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfU0NST0xMSU5HX05PREUoU2Nyb2xsaW5nVHJlZUZpeGVk
Tm9kZSwgaXNGaXhlZE5vZGUoKSkKLQotI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
VHJlZUZpeGVkTm9kZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlRml4ZWROb2RlLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzJj
ODkxNTY5NzY5ZDMxYmFiNDNiZjMwMjdlNmI4ZDJiNGUyYjQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlNjcm9sbGlu
Z1RyZWVGaXhlZE5vZGUuaCIKLQotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0KLSNpbXBv
cnQgIkxvZ2dpbmcuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmgiCi0jaW1w
b3J0ICJTY3JvbGxpbmdUcmVlLmgiCi0jaW1wb3J0IDxRdWFydHpDb3JlL0NBTGF5ZXIuaD4KLSNp
bXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1S
ZWY8U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZT4gU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y3JlYXRl
KFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZShzY3JvbGxp
bmdUcmVlLCBub2RlSUQpKTsKLX0KLQotU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6U2Nyb2xsaW5n
VHJlZUZpeGVkTm9kZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2Rl
SUQgbm9kZUlEKQotICAgIDogU2Nyb2xsaW5nVHJlZU5vZGUoc2Nyb2xsaW5nVHJlZSwgU2Nyb2xs
aW5nTm9kZVR5cGU6OkZpeGVkLCBub2RlSUQpCi17Ci0gICAgc2Nyb2xsaW5nVHJlZS5maXhlZE9y
U3RpY2t5Tm9kZUFkZGVkKCk7Ci19Ci0KLVNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6On5TY3JvbGxp
bmdUcmVlRml4ZWROb2RlKCkKLXsKLSAgICBzY3JvbGxpbmdUcmVlKCkuZml4ZWRPclN0aWNreU5v
ZGVSZW1vdmVkKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y29tbWl0U3Rh
dGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKLXsK
LSAgICBjb25zdCBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZSYgZml4ZWRTdGF0ZU5vZGUgPSBkb3du
Y2FzdDxTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZT4oc3RhdGVOb2RlKTsKLQotICAgIGlmIChmaXhl
ZFN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikp
Ci0gICAgICAgIG1fbGF5ZXIgPSBmaXhlZFN0YXRlTm9kZS5sYXllcigpOwotCi0gICAgaWYgKHN0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU6OlZpZXdw
b3J0Q29uc3RyYWludHMpKQotICAgICAgICBtX2NvbnN0cmFpbnRzID0gZml4ZWRTdGF0ZU5vZGUu
dmlld3BvcnRDb25zdHJhaW50cygpOwotfQotCi1uYW1lc3BhY2UgU2Nyb2xsaW5nVHJlZUZpeGVk
Tm9kZUludGVybmFsIHsKLXN0YXRpYyBpbmxpbmUgQ0dQb2ludCBvcGVyYXRvciooQ0dQb2ludCYg
YSwgY29uc3QgQ0dTaXplJiBiKQotewotICAgIHJldHVybiBDR1BvaW50TWFrZShhLnggKiBiLndp
ZHRoLCBhLnkgKiBiLmhlaWdodCk7Ci19Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9k
ZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0
IEZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRhKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBTY3Jv
bGxpbmdUcmVlRml4ZWROb2RlSW50ZXJuYWw7Ci0gICAgRmxvYXRQb2ludCBsYXllclBvc2l0aW9u
ID0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uRm9yVmlld3BvcnRSZWN0KGZpeGVkUG9zaXRp
b25SZWN0KTsKLQotICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCgpIDw8ICIgdXBkYXRlTGF5
ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZTogbmV3IHZpZXdwb3J0ICIgPDwgZml4ZWRQb3NpdGlvblJl
Y3QgPDwgIiB2aWV3cG9ydFJlY3RBdExhc3RMYXlvdXQgIiA8PCBtX2NvbnN0cmFpbnRzLnZpZXdw
b3J0UmVjdEF0TGFzdExheW91dCgpIDw8ICIgbGFzdCBsYXllciBwb3MgIiA8PCBtX2NvbnN0cmFp
bnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSA8PCAiIG5ldyBvZmZzZXQgZnJvbSB0b3Ag
IiA8PCAoZml4ZWRQb3NpdGlvblJlY3QueSgpIC0gbGF5ZXJQb3NpdGlvbi55KCkpKTsKLQotICAg
IGxheWVyUG9zaXRpb24gLT0gY3VtdWxhdGl2ZURlbHRhOwotCi0gICAgQ0dSZWN0IGxheWVyQm91
bmRzID0gW21fbGF5ZXIgYm91bmRzXTsKLSAgICBDR1BvaW50IGFuY2hvclBvaW50ID0gW21fbGF5
ZXIgYW5jaG9yUG9pbnRdOwotICAgIENHUG9pbnQgbmV3UG9zaXRpb24gPSBsYXllclBvc2l0aW9u
IC0gbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKSArIGFuY2hvclBvaW50ICogbGF5ZXJC
b3VuZHMuc2l6ZTsKLQotICAgIGlmIChpc25hbihuZXdQb3NpdGlvbi54KSB8fCBpc25hbihuZXdQ
b3NpdGlvbi55KSkgewotICAgICAgICBXVEZMb2dBbHdheXMoIkF0dGVtcHQgdG8gY2FsbCBbQ0FM
YXllciBzZXRQb3NpdGlvbl0gd2l0aCBOYU46IG5ld1Bvc2l0aW9uPSglZiwgJWYpIGxheWVyUG9z
aXRpb249KCVmLCAlZikgYWxpZ25tZW50T2Zmc2V0PSglZiwgJWYpIiwKLSAgICAgICAgICAgIG5l
d1Bvc2l0aW9uLngsIG5ld1Bvc2l0aW9uLnksIGxheWVyUG9zaXRpb24ueCgpLCBsYXllclBvc2l0
aW9uLnkoKSwKLSAgICAgICAgICAgIG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCkud2lk
dGgoKSwgbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKS5oZWlnaHQoKSk7Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgW21f
bGF5ZXIgc2V0UG9zaXRpb246bmV3UG9zaXRpb25dOwotCi0gICAgaWYgKCFtX2NoaWxkcmVuKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBGbG9hdFNpemUgbmV3RGVsdGEgPSBsYXllclBvc2l0aW9u
IC0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkgKyBjdW11bGF0aXZl
RGVsdGE7Ci0KLSAgICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNo
aWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBv
c2l0aW9uUmVjdCwgbmV3RGVsdGEpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6
OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRC
ZWhhdmlvciBiZWhhdmlvcikgY29uc3QKLXsKLSAgICB0cyA8PCAiZml4ZWQgbm9kZSI7Ci0gICAg
U2Nyb2xsaW5nVHJlZU5vZGU6OmR1bXBQcm9wZXJ0aWVzKHRzLCBiZWhhdmlvcik7Ci0gICAgdHMu
ZHVtcFByb3BlcnR5KCJmaXhlZCBjb25zdHJhaW50cyIsIG1fY29uc3RyYWludHMpOwotICAgIAot
ICAgIGlmIChiZWhhdmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9ySW5jbHVk
ZUxheWVyUG9zaXRpb25zKSB7Ci0gICAgICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9IFttX2xh
eWVyIGJvdW5kc107Ci0gICAgICAgIEZsb2F0UG9pbnQgYW5jaG9yUG9pbnQgPSBbbV9sYXllciBh
bmNob3JQb2ludF07Ci0gICAgICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSBbbV9sYXllciBwb3Np
dGlvbl07Ci0gICAgICAgIEZsb2F0UG9pbnQgbGF5ZXJUb3BMZWZ0ID0gcG9zaXRpb24gLSB0b0Zs
b2F0U2l6ZShhbmNob3JQb2ludCkgKiBsYXllckJvdW5kcy5zaXplKCkgKyBtX2NvbnN0cmFpbnRz
LmFsaWdubWVudE9mZnNldCgpOwotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImxheWVyIHRvcCBs
ZWZ0IiwgbGF5ZXJUb3BMZWZ0KTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
LQotI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAppbmRleCBkMTQ0MmNkMGM3MzQ0MWRjOTJmM2I4
NGFkYzg4NGIxNTJiODFjMzg0Li5jNGQ4M2ZiZDM5YmZkYTFlMTg3OWM0MzgxNTFhMTJmZWEwZTRm
MGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgK
QEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGUuaCIKIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElO
RykKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShNQUMpCiAKICNpbmNs
dWRlICJTY3JvbGxDb250cm9sbGVyLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVNYWMubW0KaW5kZXggNjgyMzEzMWVhMTJhZTBkNWI5MjkyNzBjZGEwYmI1
NWY2ZjYzM2RmNy4uZmQ2NjZmZDdmYTQ4ZDRmZmI4Y2JhOTQyZTJjZTM5ZDU4MDdkMWJkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW0KQEAgLTI2
LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oIgogCi0jaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
QVNZTkNfU0NST0xMSU5HKQorI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFBMQVRGT1JN
KE1BQykKIAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRlZjVk
MmU3YzIwNTcwMDMxZTAzODE2ZGE4YTYwMGQ3ODNmYTZlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpCi0KLSNpbmNsdWRlICJTY3JvbGxpbmdDb25zdHJhaW50cy5oIgotI2luY2x1ZGUgIlNjcm9s
bGluZ1RyZWVOb2RlLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NMQVNT
IENBTGF5ZXI7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU3RpY2t5UG9zaXRpb25W
aWV3cG9ydENvbnN0cmFpbnRzOwotCi1jbGFzcyBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSA6IHB1
YmxpYyBTY3JvbGxpbmdUcmVlTm9kZSB7Ci1wdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4gY3JlYXRlKFNjcm9sbGluZ1RyZWUmLCBT
Y3JvbGxpbmdOb2RlSUQpOwotCi0gICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUo
KTsKLQotcHJpdmF0ZToKLSAgICBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZShTY3JvbGxpbmdUcmVl
JiwgU2Nyb2xsaW5nTm9kZUlEKTsKLQotICAgIHZvaWQgY29tbWl0U3RhdGVCZWZvcmVDaGlsZHJl
bihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKLSAgICB2b2lkIHVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUm
IGN1bXVsYXRpdmVEZWx0YSkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGR1bXBQcm9wZXJ0aWVzKFdU
Rjo6VGV4dFN0cmVhbSYsIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yKSBjb25zdCBv
dmVycmlkZTsKLQotICAgIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBtX2NvbnN0
cmFpbnRzOwotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2xheWVyOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1NDUk9MTElOR19OT0RFKFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLCBpc1N0aWNreU5vZGUoKSkKLQotI2VuZGlmIC8vIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0KZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDkzNzQ4NGFjMzA4Y2RiZjYzYjQyZjE5YWRkMDIzZDczYjcyMDE1ZDgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsMTI5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgiCi0KLSNpZiBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKQotCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdT
dGF0ZVN0aWNreU5vZGUuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ1RyZWUuaCIKLSNpbXBvcnQgIlNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKLSNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgot
I2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVJlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZT4gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNy
ZWF0ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlE
KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKHNj
cm9sbGluZ1RyZWUsIG5vZGVJRCkpOwotfQotCi1TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6U2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xs
aW5nTm9kZUlEIG5vZGVJRCkKLSAgICA6IFNjcm9sbGluZ1RyZWVOb2RlKHNjcm9sbGluZ1RyZWUs
IFNjcm9sbGluZ05vZGVUeXBlOjpTdGlja3ksIG5vZGVJRCkKLXsKLSAgICBzY3JvbGxpbmdUcmVl
LmZpeGVkT3JTdGlja3lOb2RlQWRkZWQoKTsKLX0KLQotU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6
On5TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSgpCi17Ci0gICAgc2Nyb2xsaW5nVHJlZSgpLmZpeGVk
T3JTdGlja3lOb2RlUmVtb3ZlZCgpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Ojpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3Rh
dGVOb2RlKQotewotICAgIGNvbnN0IFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZSYgc3RpY2t5U3Rh
dGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPihzdGF0ZU5vZGUpOwot
Ci0gICAgaWYgKHN0aWNreVN0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVOb2RlOjpMYXllcikpCi0gICAgICAgIG1fbGF5ZXIgPSBzdGlja3lTdGF0ZU5vZGUubGF5ZXIo
KTsKLQotICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
U3RpY2t5Tm9kZTo6Vmlld3BvcnRDb25zdHJhaW50cykpCi0gICAgICAgIG1fY29uc3RyYWludHMg
PSBzdGlja3lTdGF0ZU5vZGUudmlld3BvcnRDb25zdHJhaW50cygpOwotfQotCi1uYW1lc3BhY2Ug
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVJbnRlcm5hbCB7Ci1zdGF0aWMgaW5saW5lIENHUG9pbnQg
b3BlcmF0b3IqKENHUG9pbnQmIGEsIGNvbnN0IENHU2l6ZSYgYikKLXsKLSAgICByZXR1cm4gQ0dQ
b2ludE1ha2UoYS54ICogYi53aWR0aCwgYS55ICogYi5oZWlnaHQpOwotfQotfQotCi12b2lkIFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNv
bnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhl
ZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCi17Ci0gICAg
dXNpbmcgbmFtZXNwYWNlIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlSW50ZXJuYWw7Ci0gICAgYm9v
bCBhZGp1c3RTdGlja3lMYXllciA9IGZhbHNlOwotICAgIEZsb2F0UmVjdCBjb25zdHJhaW5pbmdS
ZWN0OwotCi0gICAgaWYgKGlzPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KCpw
YXJlbnQoKSkpIHsKLSAgICAgICAgY29uc3RyYWluaW5nUmVjdCA9IEZsb2F0UmVjdChkb3duY2Fz
dDxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPigqcGFyZW50KCkpLnNjcm9sbFBv
c2l0aW9uKCksIG1fY29uc3RyYWludHMuY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91dCgpLnNp
emUoKSk7Ci0gICAgICAgIGFkanVzdFN0aWNreUxheWVyID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYg
KGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU+KCpwYXJlbnQoKSkpIHsKLSAgICAg
ICAgY29uc3RyYWluaW5nUmVjdCA9IGZpeGVkUG9zaXRpb25SZWN0OwotICAgICAgICBhZGp1c3RT
dGlja3lMYXllciA9IHRydWU7Ci0gICAgfQotCi0gICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGlu
Zywgc3RyZWFtIDw8ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJ
RCgpIDw8ICIgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZTogbmV3IHZpZXdwb3J0ICIg
PDwgZml4ZWRQb3NpdGlvblJlY3QgPDwgIiBjb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0ICIg
PDwgbV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBsYXN0
IGxheWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgp
IDw8ICIgYWRqdXN0U3RpY2t5TGF5ZXIgIiA8PCBhZGp1c3RTdGlja3lMYXllcik7Ci0KLSAgICBG
bG9hdFNpemUgZGVsdGFGb3JEZXNjZW5kYW50cyA9IGN1bXVsYXRpdmVEZWx0YTsKLQotICAgIGlm
IChhZGp1c3RTdGlja3lMYXllcikgewotICAgICAgICBGbG9hdFBvaW50IGxheWVyUG9zaXRpb24g
PSBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25Gb3JDb25zdHJhaW5pbmdSZWN0KGNvbnN0cmFp
bmluZ1JlY3QpOwotCi0gICAgICAgIENHUmVjdCBsYXllckJvdW5kcyA9IFttX2xheWVyIGJvdW5k
c107Ci0gICAgICAgIENHUG9pbnQgYW5jaG9yUG9pbnQgPSBbbV9sYXllciBhbmNob3JQb2ludF07
Ci0gICAgICAgIENHUG9pbnQgbmV3UG9zaXRpb24gPSBsYXllclBvc2l0aW9uIC0gbV9jb25zdHJh
aW50cy5hbGlnbm1lbnRPZmZzZXQoKSArIGFuY2hvclBvaW50ICogbGF5ZXJCb3VuZHMuc2l6ZTsK
LSAgICAgICAgW21fbGF5ZXIgc2V0UG9zaXRpb246bmV3UG9zaXRpb25dOwotCi0gICAgICAgIGRl
bHRhRm9yRGVzY2VuZGFudHMgPSBsYXllclBvc2l0aW9uIC0gbV9jb25zdHJhaW50cy5sYXllclBv
c2l0aW9uQXRMYXN0TGF5b3V0KCkgKyBjdW11bGF0aXZlRGVsdGE7Ci0gICAgfQotCi0gICAgaWYg
KCFtX2NoaWxkcmVuKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKGF1dG8mIGNoaWxkIDog
Km1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hh
bmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwgZGVsdGFGb3JEZXNjZW5kYW50cyk7
Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRT
dHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvciBiZWhhdmlvcikgY29u
c3QKLXsKLSAgICB0cyA8PCAic3RpY2t5IG5vZGUiOwotCi0gICAgU2Nyb2xsaW5nVHJlZU5vZGU6
OmR1bXBQcm9wZXJ0aWVzKHRzLCBiZWhhdmlvcik7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJzdGlj
a3kgY29uc3RyYWludHMiLCBtX2NvbnN0cmFpbnRzKTsKLQotICAgIGlmIChiZWhhdmlvciAmIFNj
cm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9ySW5jbHVkZUxheWVyUG9zaXRpb25zKSB7Ci0g
ICAgICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9IFttX2xheWVyIGJvdW5kc107Ci0gICAgICAg
IEZsb2F0UG9pbnQgYW5jaG9yUG9pbnQgPSBbbV9sYXllciBhbmNob3JQb2ludF07Ci0gICAgICAg
IEZsb2F0UG9pbnQgcG9zaXRpb24gPSBbbV9sYXllciBwb3NpdGlvbl07Ci0gICAgICAgIEZsb2F0
UG9pbnQgbGF5ZXJUb3BMZWZ0ID0gcG9zaXRpb24gLSB0b0Zsb2F0U2l6ZShhbmNob3JQb2ludCkg
KiBsYXllckJvdW5kcy5zaXplKCkgKyBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpOwot
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoImxheWVyIHRvcCBsZWZ0IiwgbGF5ZXJUb3BMZWZ0KTsK
LSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmlu
ZGV4IDk0MTFlZDI2MjEyYWUxODUwZTIyNzc0ZjMxOTM2YjA3M2VkN2Y5NWEuLjc0NjYxZmQzZGUy
M2IyYzA2NWYxZjIwN2MwMmI5NDBlY2MxMjcwZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRp
b25EcmF3aW5nQXJlYS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCisjaWYgUExBVEZPUk0oTUFDKQogCiAjaW5jbHVkZSAiQ2Fs
bGJhY2tJRC5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhLmgiCkBAIC0xODYsNSArMTg2LDQgQEAg
cHJpdmF0ZToKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19EUkFXSU5HX0FSRUEoVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEsIERyYXdpbmdBcmVhVHlwZVRpbGVkQ29yZUFuaW1hdGlvbikK
IAotI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQotCisjZW5kaWYgLy8gUExBVEZPUk0o
TUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IGI1OTE2
MDc0Y2UyMjIxMzM0ZDYzYTliODUwMDY1NTE4ZDI4MzYzZWUuLjMyNGQwNjMxNjIzMzJiOGQ0ZjY2
NjIxNjc5YjA1MjcxMTI5NDc4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWEubW0KQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaCIKIAotI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQorI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiQ29sb3JTcGFjZURhdGEuaCIKICNp
bXBvcnQgIkRyYXdpbmdBcmVhUHJveHlNZXNzYWdlcy5oIgpAQCAtOTk5LDQgKzk5OSw0IEBAIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmxheWVyRmx1c2hUaHJvdHRsaW5nVGlt
ZXJGaXJlZCgpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0jZW5kaWYgLy8gIVBMQVRGT1JN
KElPU19GQU1JTFkpCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361123</attachid>
            <date>2019-02-04 16:25:42 -0800</date>
            <delta_ts>2019-02-04 16:44:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194245-20190204162541.patch</filename>
            <type>text/plain</type>
            <size>55740</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk4MmM4MDY5YzM5ODc3
ZGQ4ZWQyZmUxNzU3ZmRjM2Q1OTFjMjg3OC4uNjhmZWM3YjA0MTJhMThiYjM3ODExODZjOTUyZmVi
OTEyNWRmZWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE5LTAyLTA0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgc29tZSBt
YWNPUy9pT1Mgc2Nyb2xsaW5nIGNvZGUgaW50byB0aGUgc2Nyb2xsaW5nL2NvY29hIGRpcmVjdG9y
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MjQ1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZSBhbmQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUgYXJlIHVzZWQgb24g
aU9TIGFuZCBtYWNPUywgc28gbW92ZSB0aGVtIHRvIHRoZSBjb2NvYQorICAgICAgICBkaXJlY3Rv
cnkuCisKKyAgICAgICAgU3RhbmRhcmRpemUgb24gdGhlIG9yZGVyaW5nIG9mIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKE1BQykuCisKKyAgICAgICAgU3RvcCBidWlsZGluZyBT
Y3JvbGxpbmdUaHJlYWQgZm9yIGlPUyAoaXQncyBuZXZlciB1c2VkKSwgYW5kIHN0dWIgb3V0IHNv
bWUgZnVuY3Rpb25zIHNvIHRoaW5ncyBidWlsZC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUaHJlYWQ6OmluaXRpYWxpemVSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RocmVhZDo6d2FrZVVwUnVuTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUaHJlYWQ6OnRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFjayk6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUu
aC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlRml4ZWROb2Rl
Lm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUubW0uCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oLgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Lm1tLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUaHJlYWRNYWMubW06
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbToKKwogMjAxOS0wMi0wNCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBc3luYyBvdmVyZmxvdyBzY3Jv
bGwgd2l0aCBib3JkZXItcmFkaXVzIHJlbmRlcnMgaW5jb3JyZWN0bHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTJk
MjE4YTBkNmMwNTE1ZTI3YmQ3YTExMmQ3ZjExZDdmNGU3OGFmZS4uOTUzMTRiMjAzYjBlN2I5ZTQ4
Y2ZkYzA1ZmUxOTBmZTY0MTQ3YzBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0w
Mi0wNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIHNvbWUgbWFjT1MvaU9TIHNjcm9sbGluZyBjb2RlIGludG8gdGhlIHNjcm9sbGluZy9jb2Nv
YSBkaXJlY3RvcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NDI0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBQTEFURk9STShNQUMpLCBub3QgIVBMQVRGT1JNKElPU19GQU1JTFkpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW06CisKIDIwMTktMDItMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgUGFnZU92ZXJsYXlDb250cm9sbGVyJ3MgbGF5ZXJzIHNo
b3VsZCBiZSBjcmVhdGVkIGxhemlseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNWEwMGQx
MmE1ODAwM2FkNTVhODNkZjEzZmZjODVkODY4MGE2N2JkYy4uMDcyMjI4OGRhMWM4OTM1YTc4Zjdl
MTkyMDk2YTdhZDg1NzJlODA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xNDYsNiAr
MTQ2LDggQEAgcGFnZS9tYWMvV2hlZWxFdmVudERlbHRhRmlsdGVyTWFjLm1tCiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCiAKIHBhZ2Uvc2Nyb2xsaW5nL2Nv
Y29hL1Njcm9sbGluZ1N0YXRlTm9kZS5tbQorcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5n
VHJlZUZpeGVkTm9kZS5tbQorcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUubW0KIAogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1t
CiBwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5t
bQpAQCAtMTU1LDEyICsxNTcsMTAgQEAgcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGVNYWMubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUaHJlYWRNYWMubW0KLXBh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tCiBwYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KIHBhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCiBwYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5jcHAKLXBhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQogCiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24u
Y3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA2ZDQ1Mzc0MTVlNjg2YTg4ODViY2E5OWQ3NTY4ZjBiMjQyMDQ4Mzg1Li44NTU5
MGY2ZGIyNzg4MGU4OTJlZDVkMGEzMTFhMTI3MTc4NGE2Mzk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNTksMTAgKzM1OSwx
MSBAQAogCQkwRjg3MTY3MDFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODcxNjZFMUM4NjlEODMw
MDRGRjBERSAvKiBMZW5ndGhQb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGOEI0NTcyMURDM0ZCQTMwMDQ0M0MzRiAvKiBJbnRlcnNlY3Rp
b25PYnNlcnZlckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjhCNDU3MTFEQzNGQkEzMDA0NDNDM0YgLyogSW50ZXJzZWN0aW9uT2JzZXJ2
ZXJDYWxsYmFjay5oICovOyB9OwogCQkwRjhCNDU3NjFEQzQxREJBMDA0NDNDM0YgLyogSlNJbnRl
cnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjhCNDU3NDFEQzQxREJBMDA0NDNDM0YgLyogSlNJbnRlcnNlY3Rp
b25PYnNlcnZlckNhbGxiYWNrLmggKi87IH07CisJCTBGOTRCNjQ3MjIwOEZFMzYwMDE1NzAxNCAv
KiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjk0QjY0MjIyMDhGNzAxMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGOTRCNjQ5MjIwOEZFM0IwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NEI2
NDMyMjA4RjcwMjAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5REFBMEYxRkQxQzY2
QTAwNzlDNUIyIC8qIERPTUdDT3V0cHV0Q29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5REFBMEUxRkQxQzY2NDAwNzlDNUIyIC8qIERP
TUdDT3V0cHV0Q29uc3RyYWludC5oICovOyB9OwogCQkwRkEyNEQ3QTE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQTI0RDc4MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVy
VXBkYXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGQjYyNTJGMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNjI1MkQxOERFMUIx
NTAwQTA3QzA1IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZCODg5MEExNjdEMkZBMTAwMTBDREE1IC8qIFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkI4ODkwODE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRkI4ODkwRjE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI4ODkw
RDE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZDNEU0MEQxODdGODJF
MTAwNDU4ODJDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM0RTQwNzE4N0Y4MkUxMDA0NTg4MkMgLyog
U2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MuaCAqLzsgfTsKIAkJMEZDNEU0MTAxODdGODJFMTAwNDU4
ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQzRFNDBBMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVl
SU9TLmggKi87IH07CkBAIC0yNzA1LDcgKzI3MDYsNiBAQAogCQk5M0MwOUE1MzBCMDY0REIzMDA1
QUJENEQgLyogRXZlbnRIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0MwOUE1MjBCMDY0REIzMDA1QUJENEQgLyogRXZlbnRIYW5kbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNDMDlD
ODYwQjA2NTdBQTAwNUFCRDREIC8qIFNjcm9sbFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0MwOUM4NTBCMDY1N0FBMDA1QUJENEQgLyogU2Ny
b2xsVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5M0MzOEJGRjE2NDQ3M0M3MDAwOTFFQjIgLyogU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzM4QkZE
MTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzQzM4QzAzMTY0NDczREQw
MDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0MzOEMwMTE2NDQ3M0REMDAwOTFFQjIgLyogU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzQzQ0MjAwMEY4MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNDQx
RkYwRjgxM0FFMTAwQzFBNjM0IC8qIENvbGxlY3Rpb25UeXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNDNEE0MTUxNjI5REY1QTAwQzNFQjZF
IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzRBNDEzMTYyOURGNUEwMEMzRUI2RSAv
KiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNDNEY2RUIxMTA4RjlBNTAwOTlEMERC
IC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzRGNkU5MTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmls
aXR5U2Nyb2xsYmFyLmggKi87IH07CkBAIC01NzkwLDYgKzU3OTAsMTAgQEAKIAkJMEY4QjQ1NzMx
REM0MURCQTAwNDQzQzNGIC8qIEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ludGVyc2VjdGlvbk9ic2VydmVy
Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhCNDU3NDFEQzQx
REJBMDA0NDNDM0YgLyogSlNJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk0QTM5NTFFRjFCMTA1MDBGQkFGRkIg
LyogSlNET01RdWFkQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRE9NUXVhZEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
OTRCNjQyMjIwOEY3MDEwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaDsgcGF0aCA9IHBhZ2Uvc2Nyb2xsaW5n
L2NvY29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OworCQkwRjk0QjY0MzIyMDhGNzAyMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaDsgcGF0aCA9IHBh
Z2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmg7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKKwkJMEY5NEI2NDQyMjA4RjcwMjAwMTU3MDE0IC8qIFNjcm9sbGlu
Z1RyZWVGaXhlZE5vZGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBTY3JvbGxpbmdUcmVlRml4
ZWROb2RlLm1tOyBwYXRoID0gcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVk
Tm9kZS5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkwRjk0QjY0NTIyMDhGNzAz
MDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbTsgcGF0aCA9IHBhZ2Uvc2Nyb2xsaW5nL2Nv
Y29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7
IH07CiAJCTBGOTdBNjU3MTU1REE4MUUwMEZBREQ0QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEaXNwbGF5UmVm
cmVzaE1vbml0b3JJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOURBQTBD
MUZEMUM2NjMwMDc5QzVCMiAvKiBET01HQ091dHB1dENvbnN0cmFpbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NR0NPdXRwdXRDb25zdHJhaW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5REFBMEUxRkQxQzY2NDAwNzlDNUIyIC8qIERP
TUdDT3V0cHV0Q29uc3RyYWludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01HQ091dHB1dENvbnN0cmFpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3
OTksOCArNTgwMyw2IEBACiAJCTBGQTg4RUJDMTZBOEQxQkQwMEY5OTk4NCAvKiBTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI2MjUyQzE4REUxQjE1MDBBMDdDMDUgLyogR2Vv
bWV0cnlVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R2VvbWV0cnlVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI2
MjUyRDE4REUxQjE1MDBBMDdDMDUgLyogR2VvbWV0cnlVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvbWV0cnlVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEZCODg5MDgxNjdEMkZBMTAwMTBDREE1IC8qIFNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQjg4OTA5MTY3
RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI4ODkwQzE2N0QzMDE2MDAxMENEQTUgLyog
U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQjg4OTBEMTY3RDMwMTYwMDEwQ0RBNSAvKiBTY3JvbGxpbmdTdGF0ZVN0
aWNreU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nU3Rh
dGVTdGlja3lOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA1MTY4MjE5
QjVFQkUwMDMxQzM5RSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNjQ3LDggKzEwNjQ5LDYg
QEAKIAkJOTNDMDlDODUwQjA2NTdBQTAwNUFCRDREIC8qIFNjcm9sbFR5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQzM4QkZDMTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZp
eGVkTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxp
bmdTdGF0ZUZpeGVkTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzM4
QkZEMTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5M0MzOEMwMTE2NDQ3M0REMDAwOTFFQjIgLyogU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
Y3JvbGxpbmdUcmVlRml4ZWROb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkz
QzM4QzAyMTY0NDczREQwMDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNDQxRkYwRjgxM0FFMTAwQzFB
NjM0IC8qIENvbGxlY3Rpb25UeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbGxlY3Rpb25UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzRBNDEz
MTYyOURGNUEwMEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNEE0MTQxNjI5
REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY5Nzks
OCArMTY5NzksNiBAQAogCQkJCTUxN0RFRUUzMURFOTRBREMwMEI5MTY0NCAvKiBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3JNYWMubW0gKi8sCiAJCQkJMEZBODhFQkMxNkE4RDFCRDAwRjk5OTg0
IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tICovLAogCQkJCTFBRjYy
RjIzMTREQUZFOTEwMDQxNTU2QyAvKiBTY3JvbGxpbmdUaHJlYWRNYWMubW0gKi8sCi0JCQkJOTND
MzhDMDExNjQ0NzNERDAwMDkxRUIyIC8qIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCAqLywKLQkJ
CQk5M0MzOEMwMjE2NDQ3M0REMDAwOTFFQjIgLyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbSAq
LywKIAkJCQk5M0M0QTQxMzE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYy5oICovLAogCQkJCTkzQzRBNDE0MTYyOURGNUEwMEMzRUI2RSAvKiBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tICovLAogCQkJCTBGRTU4MDYxMTkzMjdB
NjIwMERFMzJFQiAvKiBTY3JvbGxpbmdUcmVlTWFjLmNwcCAqLywKQEAgLTE2OTg5LDggKzE2OTg3
LDYgQEAKIAkJCQkwRkMwNTE2ODIxOUI1RUJFMDAzMUMzOUUgLyogU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZU1hYy5tbSAqLywKIAkJCQkwRjM3RjA4NDIyMDJBQ0I3MDBBODlDMEIg
LyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oICovLAogCQkJCTBGMzdG
MDgzMjIwMkFDOEYwMEE4OUMwQiAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjLm1tICovLAotCQkJCTBGQjg4OTA4MTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oICovLAotCQkJCTBGQjg4OTA5MTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZS5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIxODE3LDYgKzIxODEzLDEwIEBACiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTkzRUY3RDU0MTk1NEU5OEYwMERGQjcxRCAvKiBT
Y3JvbGxpbmdTdGF0ZU5vZGUubW0gKi8sCisJCQkJMEY5NEI2NDIyMjA4RjcwMTAwMTU3MDE0IC8q
IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCAqLywKKwkJCQkwRjk0QjY0NDIyMDhGNzAyMDAxNTcw
MTQgLyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbSAqLywKKwkJCQkwRjk0QjY0MzIyMDhGNzAy
MDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCAqLywKKwkJCQkwRjk0QjY0NTIy
MDhGNzAzMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0gKi8sCiAJCQkpOwog
CQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMwMDI1LDcg
KzMwMDI1LDYgQEAKIAkJCQkxQTg1QjFFNzBBMUIyNDA1MDBEOEM4N0MgLyogSlNIVE1MRGlyZWN0
b3J5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4NUIyQjcwQTFCMkFDNzAwRDhDODdD
IC8qIEpTSFRNTERpdkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBODVCMUU5MEExQjI0
MDUwMEQ4Qzg3QyAvKiBKU0hUTUxETGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTcx
RUFEQ0Q4MjIwODdFNzIwMDY1QTQ1RiAvKiBQb2ludGVySUQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNDk0RTM1MEExMjM1OEIwMEZEQUZDMSAvKiBKU0hUTUxEb2N1bWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE0OTRCRkIwQTEyMkY0NDAwRkRBRkMxIC8qIEpTSFRNTEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzOEU2NUYxMDlGMDk4NDAwMDhBNDhFQyAvKiBKU0hUTUxFbGVtZW50
V3JhcHBlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLApAQCAtMzEwNzMsNiArMzEwNzIsNyBAQAog
CQkJCTcxQjVBQjI2MjFGMUQ5RjQwMDM3NkU1QyAvKiBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxN0QzRkYzMjE1NTk5RjQwMDM0RTNCOSAvKiBQb2ludGVy
RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQjFGNzE3MEQwMENBQTgwMDRBRUE2NCAvKiBQ
b2ludGVyRXZlbnRzSGl0UnVsZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxRUFEQ0Q4MjIwODdF
NzIwMDY1QTQ1RiAvKiBQb2ludGVySUQuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGRjgxM0E3MURC
QTg2NDAwMDlCRjAwMSAvKiBQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg0NzMwRDkyMTI0OEYwQjMwMEQzQTlDOSAvKiBQb2ludExpZ2h0U291cmNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzA1OTk3QTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMTQ2NSw3ICszMTQ2NSw3IEBACiAJCQkJOTMxQ0JEMTExNjFB
NDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFGNjJGMjYxNERBRkVBMTAwNDE1NTZDIC8qIFNjcm9sbGluZ1RocmVhZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBQUREQTQxNERCNDA5RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWUuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTkzQzM4QzAzMTY0NDczREQwMDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVl
Rml4ZWROb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjk0QjY0NzIyMDhGRTM2MDAxNTcwMTQg
LyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZENDFFNjgy
MUY4MEMwRTAwMEMwMDZEIC8qIFNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVBM0U4ODE5MUIzQkQ3MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDNEU0MTExODdGODJFMTAw
NDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzE0NzcsNyArMzE0NzcsNyBAQAogCQkJCTkzOTFBOTlEMTYyOUQ3MDAwMDI5NzMz
MCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZE
NUE5OUQxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzdGMDg1MjIwMkJGOTgwMEE4OUMwQiAvKiBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmggaW4gSGVhZGVycyAqLywKLQkJCQkw
RkI4ODkwQTE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGOTRCNjQ5MjIwOEZFM0IwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDNTc5NUQxREE1QzMwMTAwNkY5Qzk3
IC8qIFNjcm9sbEludG9WaWV3T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FBRkU4RDAx
OUNCODY3MjAwMEY1NkQ4IC8qIFNjcm9sbExhdGNoaW5nU3RhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzQzU3OTVEMURBNUMzMDEwMDZGOUM4NiAvKiBTY3JvbGxMb2dpY2FsUG9zaXRpb24uaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RocmVhZC5jcHAKaW5kZXggMjQ2NjY2ZDI5OTljY2E4ZWFkZjUzNjYyYjMyZTc5N2UxNTVi
NzA5Yy4uM2IzNjc1NzJiMGE1NDkwNGZhMmMxNjliYzA4MDJkOTFiMTIzY2I2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCkBAIC0x
MDQsNiArMTA0LDI3IEBAIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEZ1bmN0aW9uc0Zy
b21TY3JvbGxpbmdUaHJlYWQoKQogICAgICAgICBmdW5jdGlvbigpOwogfQogCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKK05PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgU2Nyb2xsaW5nVGhy
ZWFkOjppbml0aWFsaXplUnVuTG9vcCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK3ZvaWQgU2Nyb2xsaW5nVGhyZWFkOjp3YWtlVXBSdW5Mb29wKCkKK3sKK30KKyNlbmRpZiAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaWYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFNjcm9s
bGluZ1RocmVhZDo6dGhyZWFkUnVuTG9vcFNvdXJjZUNhbGxiYWNrKHZvaWQqKQoreworfQorCit2
b2lkIFNjcm9sbGluZ1RocmVhZDo6dGhyZWFkUnVuTG9vcFNvdXJjZUNhbGxiYWNrKCkKK3sKK30K
KyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45NDA3Mjk2NTE5MjJmNGJhNzZiZmE0M2YwMzViZTQ4ODdkZDUzYTQwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbmNsdWRlICJTY3JvbGxp
bmdDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIENBTGF5ZXI7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CisKK2Ns
YXNzIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZU5vZGUgewor
cHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZUZpeGVk
Tm9kZT4gY3JlYXRlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOworCisgICAgdmly
dHVhbCB+U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSgpOworCitwcml2YXRlOgorICAgIFNjcm9sbGlu
Z1RyZWVGaXhlZE5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisKKyAgICB2
b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikg
b3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0
IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBv
c2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOwor
CisgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0
ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBGaXhlZFBvc2l0aW9u
Vmlld3BvcnRDb25zdHJhaW50cyBtX2NvbnN0cmFpbnRzOworICAgIFJldGFpblB0cjxDQUxheWVy
PiBtX2xheWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX1NDUk9MTElOR19OT0RFKFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUsIGlzRml4ZWRO
b2RlKCkpCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVG
aXhlZE5vZGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMyYzg5MTU2OTc2OWQzMWJhYjQzYmYzMDI3ZTZiOGQy
YjRlMmI0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L2NvY29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0KQEAgLTAsMCArMSwxMjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWVGaXhlZE5v
ZGUuaCIKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbXBvcnQgIkxvZ2dpbmcu
aCIKKyNpbXBvcnQgIlNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmgiCisjaW1wb3J0ICJTY3JvbGxp
bmdUcmVlLmgiCisjaW1wb3J0IDxRdWFydHpDb3JlL0NBTGF5ZXIuaD4KKyNpbXBvcnQgPHd0Zi90
ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8U2Nyb2xsaW5n
VHJlZUZpeGVkTm9kZT4gU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y3JlYXRlKFNjcm9sbGluZ1Ry
ZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZShzY3JvbGxpbmdUcmVlLCBub2Rl
SUQpKTsKK30KKworU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6U2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQor
ICAgIDogU2Nyb2xsaW5nVHJlZU5vZGUoc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZVR5cGU6
OkZpeGVkLCBub2RlSUQpCit7CisgICAgc2Nyb2xsaW5nVHJlZS5maXhlZE9yU3RpY2t5Tm9kZUFk
ZGVkKCk7Cit9CisKK1Njcm9sbGluZ1RyZWVGaXhlZE5vZGU6On5TY3JvbGxpbmdUcmVlRml4ZWRO
b2RlKCkKK3sKKyAgICBzY3JvbGxpbmdUcmVlKCkuZml4ZWRPclN0aWNreU5vZGVSZW1vdmVkKCk7
Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGls
ZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKK3sKKyAgICBjb25zdCBT
Y3JvbGxpbmdTdGF0ZUZpeGVkTm9kZSYgZml4ZWRTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxp
bmdTdGF0ZUZpeGVkTm9kZT4oc3RhdGVOb2RlKTsKKworICAgIGlmIChmaXhlZFN0YXRlTm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpCisgICAgICAgIG1f
bGF5ZXIgPSBmaXhlZFN0YXRlTm9kZS5sYXllcigpOworCisgICAgaWYgKHN0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU6OlZpZXdwb3J0Q29uc3RyYWlu
dHMpKQorICAgICAgICBtX2NvbnN0cmFpbnRzID0gZml4ZWRTdGF0ZU5vZGUudmlld3BvcnRDb25z
dHJhaW50cygpOworfQorCituYW1lc3BhY2UgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZUludGVybmFs
IHsKK3N0YXRpYyBpbmxpbmUgQ0dQb2ludCBvcGVyYXRvciooQ0dQb2ludCYgYSwgY29uc3QgQ0dT
aXplJiBiKQoreworICAgIHJldHVybiBDR1BvaW50TWFrZShhLnggKiBiLndpZHRoLCBhLnkgKiBi
LmhlaWdodCk7Cit9Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6dXBkYXRlTGF5
ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5v
ZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYg
Y3VtdWxhdGl2ZURlbHRhKQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBTY3JvbGxpbmdUcmVlRml4
ZWROb2RlSW50ZXJuYWw7CisgICAgRmxvYXRQb2ludCBsYXllclBvc2l0aW9uID0gbV9jb25zdHJh
aW50cy5sYXllclBvc2l0aW9uRm9yVmlld3BvcnRSZWN0KGZpeGVkUG9zaXRpb25SZWN0KTsKKwor
ICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCgpIDw8ICIgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNl
c3RvckNoYW5nZTogbmV3IHZpZXdwb3J0ICIgPDwgZml4ZWRQb3NpdGlvblJlY3QgPDwgIiB2aWV3
cG9ydFJlY3RBdExhc3RMYXlvdXQgIiA8PCBtX2NvbnN0cmFpbnRzLnZpZXdwb3J0UmVjdEF0TGFz
dExheW91dCgpIDw8ICIgbGFzdCBsYXllciBwb3MgIiA8PCBtX2NvbnN0cmFpbnRzLmxheWVyUG9z
aXRpb25BdExhc3RMYXlvdXQoKSA8PCAiIG5ldyBvZmZzZXQgZnJvbSB0b3AgIiA8PCAoZml4ZWRQ
b3NpdGlvblJlY3QueSgpIC0gbGF5ZXJQb3NpdGlvbi55KCkpKTsKKworICAgIGxheWVyUG9zaXRp
b24gLT0gY3VtdWxhdGl2ZURlbHRhOworCisgICAgQ0dSZWN0IGxheWVyQm91bmRzID0gW21fbGF5
ZXIgYm91bmRzXTsKKyAgICBDR1BvaW50IGFuY2hvclBvaW50ID0gW21fbGF5ZXIgYW5jaG9yUG9p
bnRdOworICAgIENHUG9pbnQgbmV3UG9zaXRpb24gPSBsYXllclBvc2l0aW9uIC0gbV9jb25zdHJh
aW50cy5hbGlnbm1lbnRPZmZzZXQoKSArIGFuY2hvclBvaW50ICogbGF5ZXJCb3VuZHMuc2l6ZTsK
KworICAgIGlmIChpc25hbihuZXdQb3NpdGlvbi54KSB8fCBpc25hbihuZXdQb3NpdGlvbi55KSkg
eworICAgICAgICBXVEZMb2dBbHdheXMoIkF0dGVtcHQgdG8gY2FsbCBbQ0FMYXllciBzZXRQb3Np
dGlvbl0gd2l0aCBOYU46IG5ld1Bvc2l0aW9uPSglZiwgJWYpIGxheWVyUG9zaXRpb249KCVmLCAl
ZikgYWxpZ25tZW50T2Zmc2V0PSglZiwgJWYpIiwKKyAgICAgICAgICAgIG5ld1Bvc2l0aW9uLngs
IG5ld1Bvc2l0aW9uLnksIGxheWVyUG9zaXRpb24ueCgpLCBsYXllclBvc2l0aW9uLnkoKSwKKyAg
ICAgICAgICAgIG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCkud2lkdGgoKSwgbV9jb25z
dHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKS5oZWlnaHQoKSk7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW21fbGF5ZXIgc2V0UG9z
aXRpb246bmV3UG9zaXRpb25dOworCisgICAgaWYgKCFtX2NoaWxkcmVuKQorICAgICAgICByZXR1
cm47CisKKyAgICBGbG9hdFNpemUgbmV3RGVsdGEgPSBsYXllclBvc2l0aW9uIC0gbV9jb25zdHJh
aW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkgKyBjdW11bGF0aXZlRGVsdGE7CisKKyAg
ICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCisgICAgICAgIGNoaWxkLT51cGRhdGVM
YXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwg
bmV3RGVsdGEpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmR1bXBQcm9wZXJ0
aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvciBiZWhh
dmlvcikgY29uc3QKK3sKKyAgICB0cyA8PCAiZml4ZWQgbm9kZSI7CisgICAgU2Nyb2xsaW5nVHJl
ZU5vZGU6OmR1bXBQcm9wZXJ0aWVzKHRzLCBiZWhhdmlvcik7CisgICAgdHMuZHVtcFByb3BlcnR5
KCJmaXhlZCBjb25zdHJhaW50cyIsIG1fY29uc3RyYWludHMpOworICAgIAorICAgIGlmIChiZWhh
dmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9ySW5jbHVkZUxheWVyUG9zaXRp
b25zKSB7CisgICAgICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9IFttX2xheWVyIGJvdW5kc107
CisgICAgICAgIEZsb2F0UG9pbnQgYW5jaG9yUG9pbnQgPSBbbV9sYXllciBhbmNob3JQb2ludF07
CisgICAgICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSBbbV9sYXllciBwb3NpdGlvbl07CisgICAg
ICAgIEZsb2F0UG9pbnQgbGF5ZXJUb3BMZWZ0ID0gcG9zaXRpb24gLSB0b0Zsb2F0U2l6ZShhbmNo
b3JQb2ludCkgKiBsYXllckJvdW5kcy5zaXplKCkgKyBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9m
ZnNldCgpOworICAgICAgICB0cy5kdW1wUHJvcGVydHkoImxheWVyIHRvcCBsZWZ0IiwgbGF5ZXJU
b3BMZWZ0KTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZGVmNWQyZTdjMjA1NzAwMzFlMDM4MTZkYThhNjAwZDc4M2ZhNmUwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGUuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29u
c3RyYWludHMuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlTm9kZS5oIgorI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBDQUxheWVyOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKKworY2xhc3Mg
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZU5vZGUgeworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGU+IGNyZWF0ZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKworICAgIHZpcnR1
YWwgflNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKCk7CisKK3ByaXZhdGU6CisgICAgU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CisKKyAgICB2
b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikg
b3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0
IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBv
c2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOwor
CisgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0
ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBTdGlja3lQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHMgbV9jb25zdHJhaW50czsKKyAgICBSZXRhaW5QdHI8Q0FMYXll
cj4gbV9sYXllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSwgaXNTdGlj
a3lOb2RlKCkpCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Mzc0ODRhYzMwOGNkYmY2M2I0MmYxOWFkZDAy
M2Q3M2I3MjAxNWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0KQEAgLTAsMCArMSwxMjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlLmgiCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisjaW1wb3J0ICJM
b2dnaW5nLmgiCisjaW1wb3J0ICJTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuaCIKKyNpbXBvcnQg
IlNjcm9sbGluZ1RyZWUuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGUuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCIKKyNp
bXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgorI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVh
bS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZT4gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNyZWF0ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxp
bmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkpOworfQor
CitTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoU2Nyb2xs
aW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKKyAgICA6IFNj
cm9sbGluZ1RyZWVOb2RlKHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVUeXBlOjpTdGlja3ks
IG5vZGVJRCkKK3sKKyAgICBzY3JvbGxpbmdUcmVlLmZpeGVkT3JTdGlja3lOb2RlQWRkZWQoKTsK
K30KKworU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6On5TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSgp
Cit7CisgICAgc2Nyb2xsaW5nVHJlZSgpLmZpeGVkT3JTdGlja3lOb2RlUmVtb3ZlZCgpOworfQor
Cit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVu
KGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlKQoreworICAgIGNvbnN0IFNjcm9s
bGluZ1N0YXRlU3RpY2t5Tm9kZSYgc3RpY2t5U3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5n
U3RhdGVTdGlja3lOb2RlPihzdGF0ZU5vZGUpOworCisgICAgaWYgKHN0aWNreVN0YXRlTm9kZS5o
YXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpCisgICAgICAgIG1f
bGF5ZXIgPSBzdGlja3lTdGF0ZU5vZGUubGF5ZXIoKTsKKworICAgIGlmIChzdGF0ZU5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZTo6Vmlld3BvcnRDb25zdHJh
aW50cykpCisgICAgICAgIG1fY29uc3RyYWludHMgPSBzdGlja3lTdGF0ZU5vZGUudmlld3BvcnRD
b25zdHJhaW50cygpOworfQorCituYW1lc3BhY2UgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGVJbnRl
cm5hbCB7CitzdGF0aWMgaW5saW5lIENHUG9pbnQgb3BlcmF0b3IqKENHUG9pbnQmIGEsIGNvbnN0
IENHU2l6ZSYgYikKK3sKKyAgICByZXR1cm4gQ0dQb2ludE1ha2UoYS54ICogYi53aWR0aCwgYS55
ICogYi5oZWlnaHQpOworfQorfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjp1cGRh
dGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFu
Z2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRT
aXplJiBjdW11bGF0aXZlRGVsdGEpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlSW50ZXJuYWw7CisgICAgYm9vbCBhZGp1c3RTdGlja3lMYXllciA9IGZhbHNl
OworICAgIEZsb2F0UmVjdCBjb25zdHJhaW5pbmdSZWN0OworCisgICAgaWYgKGlzPFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KCpwYXJlbnQoKSkpIHsKKyAgICAgICAgY29uc3Ry
YWluaW5nUmVjdCA9IEZsb2F0UmVjdChkb3duY2FzdDxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlPigqcGFyZW50KCkpLnNjcm9sbFBvc2l0aW9uKCksIG1fY29uc3RyYWludHMuY29u
c3RyYWluaW5nUmVjdEF0TGFzdExheW91dCgpLnNpemUoKSk7CisgICAgICAgIGFkanVzdFN0aWNr
eUxheWVyID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGlzPFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGU+KCpwYXJlbnQoKSkpIHsKKyAgICAgICAgY29uc3RyYWluaW5nUmVjdCA9IGZpeGVk
UG9zaXRpb25SZWN0OworICAgICAgICBhZGp1c3RTdGlja3lMYXllciA9IHRydWU7CisgICAgfQor
CisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCgpIDw8ICIgdXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZTogbmV3IHZpZXdwb3J0ICIgPDwgZml4ZWRQb3NpdGlvblJlY3QgPDwgIiBj
b25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0ICIgPDwgbV9jb25zdHJhaW50cy5jb25zdHJhaW5p
bmdSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBsYXN0IGxheWVyIHBvcyAiIDw8IG1fY29uc3RyYWlu
dHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpIDw8ICIgYWRqdXN0U3RpY2t5TGF5ZXIgIiA8
PCBhZGp1c3RTdGlja3lMYXllcik7CisKKyAgICBGbG9hdFNpemUgZGVsdGFGb3JEZXNjZW5kYW50
cyA9IGN1bXVsYXRpdmVEZWx0YTsKKworICAgIGlmIChhZGp1c3RTdGlja3lMYXllcikgeworICAg
ICAgICBGbG9hdFBvaW50IGxheWVyUG9zaXRpb24gPSBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRp
b25Gb3JDb25zdHJhaW5pbmdSZWN0KGNvbnN0cmFpbmluZ1JlY3QpOworCisgICAgICAgIENHUmVj
dCBsYXllckJvdW5kcyA9IFttX2xheWVyIGJvdW5kc107CisgICAgICAgIENHUG9pbnQgYW5jaG9y
UG9pbnQgPSBbbV9sYXllciBhbmNob3JQb2ludF07CisgICAgICAgIENHUG9pbnQgbmV3UG9zaXRp
b24gPSBsYXllclBvc2l0aW9uIC0gbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKSArIGFu
Y2hvclBvaW50ICogbGF5ZXJCb3VuZHMuc2l6ZTsKKyAgICAgICAgW21fbGF5ZXIgc2V0UG9zaXRp
b246bmV3UG9zaXRpb25dOworCisgICAgICAgIGRlbHRhRm9yRGVzY2VuZGFudHMgPSBsYXllclBv
c2l0aW9uIC0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkgKyBjdW11
bGF0aXZlRGVsdGE7CisgICAgfQorCisgICAgaWYgKCFtX2NoaWxkcmVuKQorICAgICAgICByZXR1
cm47CisKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCisgICAgICAgIGNoaWxk
LT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0
aW9uUmVjdCwgZGVsdGFGb3JEZXNjZW5kYW50cyk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRy
ZWVBc1RleHRCZWhhdmlvciBiZWhhdmlvcikgY29uc3QKK3sKKyAgICB0cyA8PCAic3RpY2t5IG5v
ZGUiOworCisgICAgU2Nyb2xsaW5nVHJlZU5vZGU6OmR1bXBQcm9wZXJ0aWVzKHRzLCBiZWhhdmlv
cik7CisgICAgdHMuZHVtcFByb3BlcnR5KCJzdGlja3kgY29uc3RyYWludHMiLCBtX2NvbnN0cmFp
bnRzKTsKKworICAgIGlmIChiZWhhdmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2
aW9ySW5jbHVkZUxheWVyUG9zaXRpb25zKSB7CisgICAgICAgIEZsb2F0UmVjdCBsYXllckJvdW5k
cyA9IFttX2xheWVyIGJvdW5kc107CisgICAgICAgIEZsb2F0UG9pbnQgYW5jaG9yUG9pbnQgPSBb
bV9sYXllciBhbmNob3JQb2ludF07CisgICAgICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSBbbV9s
YXllciBwb3NpdGlvbl07CisgICAgICAgIEZsb2F0UG9pbnQgbGF5ZXJUb3BMZWZ0ID0gcG9zaXRp
b24gLSB0b0Zsb2F0U2l6ZShhbmNob3JQb2ludCkgKiBsYXllckJvdW5kcy5zaXplKCkgKyBtX2Nv
bnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpOworICAgICAgICB0cy5kdW1wUHJvcGVydHkoImxh
eWVyIHRvcCBsZWZ0IiwgbGF5ZXJUb3BMZWZ0KTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVGhyZWFkTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RocmVhZE1hYy5t
bQppbmRleCA1NmIxY2RiOGIxNjFkMDkwYWZhODk4NTMyYWEyMGI2MWVhOWY5NWIwLi42ZDJjZGEw
OTQxMDVmNTY0NGQ4YzQ5NTMxNGJmYzQ3MTY1NWIxYjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVGhyZWFkTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUaHJlYWRNYWMubW0KQEAgLTI2
LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxpbmdUaHJl
YWQuaCIKIAotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisjaWYgRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykgJiYgUExBVEZPUk0oTUFDKQogCiAjaW5jbHVkZSA8bXV0ZXg+CiAKQEAgLTcyLDQg
KzcyLDQgQEAgdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OnRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFj
aygpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0o
TUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlRml4ZWROb2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0
MDcyOTY1MTkyMmY0YmE3NmJmYTQzZjAzNWJlNDg4N2RkNTNhNDAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShBU1lOQ19TQ1JP
TExJTkcpCi0KLSNpbmNsdWRlICJTY3JvbGxpbmdDb25zdHJhaW50cy5oIgotI2luY2x1ZGUgIlNj
cm9sbGluZ1RyZWVOb2RlLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1PQkpDX0NM
QVNTIENBTGF5ZXI7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRml4ZWRQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHM7Ci0KLWNsYXNzIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUgOiBw
dWJsaWMgU2Nyb2xsaW5nVHJlZU5vZGUgewotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZT4gY3JlYXRlKFNjcm9sbGluZ1RyZWUmLCBT
Y3JvbGxpbmdOb2RlSUQpOwotCi0gICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSgp
OwotCi1wcml2YXRlOgotICAgIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUoU2Nyb2xsaW5nVHJlZSYs
IFNjcm9sbGluZ05vZGVJRCk7Ci0KLSAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4o
Y29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVMYXll
cnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9k
ZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBj
dW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6
OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3Zl
cnJpZGU7Ci0KLSAgICBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBtX2NvbnN0cmFp
bnRzOwotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2xheWVyOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1NDUk9MTElOR19OT0RFKFNjcm9s
bGluZ1RyZWVGaXhlZE5vZGUsIGlzRml4ZWROb2RlKCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZGMyYzg5MTU2OTc2OWQzMWJhYjQzYmYzMDI3ZTZiOGQyYjRlMmI0OC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQorKysgL2Rldi9udWxs
CkBAIC0xLDEyMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1w
b3J0ICJTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgiCi0KLSNpZiBFTkFCTEUoQVNZTkNfU0NST0xM
SU5HKQotCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdTdGF0ZUZpeGVk
Tm9kZS5oIgotI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZS5oIgotI2ltcG9ydCA8UXVhcnR6Q29yZS9D
QUxheWVyLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotUmVmPFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU+IFNjcm9sbGluZ1RyZWVGaXhl
ZE5vZGU6OmNyZWF0ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2Rl
SUQgbm9kZUlEKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGluZ1RyZWVGaXhl
ZE5vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKSk7Ci19Ci0KLVNjcm9sbGluZ1RyZWVGaXhlZE5v
ZGU6OlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwg
U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKLSAgICA6IFNjcm9sbGluZ1RyZWVOb2RlKHNjcm9sbGlu
Z1RyZWUsIFNjcm9sbGluZ05vZGVUeXBlOjpGaXhlZCwgbm9kZUlEKQotewotICAgIHNjcm9sbGlu
Z1RyZWUuZml4ZWRPclN0aWNreU5vZGVBZGRlZCgpOwotfQotCi1TY3JvbGxpbmdUcmVlRml4ZWRO
b2RlOjp+U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSgpCi17Ci0gICAgc2Nyb2xsaW5nVHJlZSgpLmZp
eGVkT3JTdGlja3lOb2RlUmVtb3ZlZCgpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5v
ZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBz
dGF0ZU5vZGUpCi17Ci0gICAgY29uc3QgU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUmIGZpeGVkU3Rh
dGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU+KHN0YXRlTm9kZSk7Ci0K
LSAgICBpZiAoZml4ZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRl
Tm9kZTo6TGF5ZXIpKQotICAgICAgICBtX2xheWVyID0gZml4ZWRTdGF0ZU5vZGUubGF5ZXIoKTsK
LQotICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRml4
ZWROb2RlOjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKLSAgICAgICAgbV9jb25zdHJhaW50cyA9IGZp
eGVkU3RhdGVOb2RlLnZpZXdwb3J0Q29uc3RyYWludHMoKTsKLX0KLQotbmFtZXNwYWNlIFNjcm9s
bGluZ1RyZWVGaXhlZE5vZGVJbnRlcm5hbCB7Ci1zdGF0aWMgaW5saW5lIENHUG9pbnQgb3BlcmF0
b3IqKENHUG9pbnQmIGEsIGNvbnN0IENHU2l6ZSYgYikKLXsKLSAgICByZXR1cm4gQ0dQb2ludE1h
a2UoYS54ICogYi53aWR0aCwgYS55ICogYi5oZWlnaHQpOwotfQotfQotCi12b2lkIFNjcm9sbGlu
Z1RyZWVGaXhlZE5vZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Ny
b2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRp
b25SZWN0LCBjb25zdCBGbG9hdFNpemUmIGN1bXVsYXRpdmVEZWx0YSkKLXsKLSAgICB1c2luZyBu
YW1lc3BhY2UgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZUludGVybmFsOwotICAgIEZsb2F0UG9pbnQg
bGF5ZXJQb3NpdGlvbiA9IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVj
dChmaXhlZFBvc2l0aW9uUmVjdCk7Ci0KLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBz
dHJlYW0gPDwgIlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUgIiA8PCBzY3JvbGxpbmdOb2RlSUQoKSA8
PCAiIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2U6IG5ldyB2aWV3cG9ydCAiIDw8IGZp
eGVkUG9zaXRpb25SZWN0IDw8ICIgdmlld3BvcnRSZWN0QXRMYXN0TGF5b3V0ICIgPDwgbV9jb25z
dHJhaW50cy52aWV3cG9ydFJlY3RBdExhc3RMYXlvdXQoKSA8PCAiIGxhc3QgbGF5ZXIgcG9zICIg
PDwgbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkgPDwgIiBuZXcgb2Zm
c2V0IGZyb20gdG9wICIgPDwgKGZpeGVkUG9zaXRpb25SZWN0LnkoKSAtIGxheWVyUG9zaXRpb24u
eSgpKSk7Ci0KLSAgICBsYXllclBvc2l0aW9uIC09IGN1bXVsYXRpdmVEZWx0YTsKLQotICAgIENH
UmVjdCBsYXllckJvdW5kcyA9IFttX2xheWVyIGJvdW5kc107Ci0gICAgQ0dQb2ludCBhbmNob3JQ
b2ludCA9IFttX2xheWVyIGFuY2hvclBvaW50XTsKLSAgICBDR1BvaW50IG5ld1Bvc2l0aW9uID0g
bGF5ZXJQb3NpdGlvbiAtIG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCkgKyBhbmNob3JQ
b2ludCAqIGxheWVyQm91bmRzLnNpemU7Ci0KLSAgICBpZiAoaXNuYW4obmV3UG9zaXRpb24ueCkg
fHwgaXNuYW4obmV3UG9zaXRpb24ueSkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJBdHRlbXB0
IHRvIGNhbGwgW0NBTGF5ZXIgc2V0UG9zaXRpb25dIHdpdGggTmFOOiBuZXdQb3NpdGlvbj0oJWYs
ICVmKSBsYXllclBvc2l0aW9uPSglZiwgJWYpIGFsaWdubWVudE9mZnNldD0oJWYsICVmKSIsCi0g
ICAgICAgICAgICBuZXdQb3NpdGlvbi54LCBuZXdQb3NpdGlvbi55LCBsYXllclBvc2l0aW9uLngo
KSwgbGF5ZXJQb3NpdGlvbi55KCksCi0gICAgICAgICAgICBtX2NvbnN0cmFpbnRzLmFsaWdubWVu
dE9mZnNldCgpLndpZHRoKCksIG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCkuaGVpZ2h0
KCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIFttX2xheWVyIHNldFBvc2l0aW9uOm5ld1Bvc2l0aW9uXTsKLQotICAgIGlmICgh
bV9jaGlsZHJlbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRmxvYXRTaXplIG5ld0RlbHRhID0g
bGF5ZXJQb3NpdGlvbiAtIG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgp
ICsgY3VtdWxhdGl2ZURlbHRhOwotCi0gICAgZm9yIChhdXRvJiBjaGlsZCA6ICptX2NoaWxkcmVu
KQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjaGFuZ2Vk
Tm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIG5ld0RlbHRhKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdU
cmVlRml4ZWROb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3Rh
dGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0Ci17Ci0gICAgdHMgPDwgImZpeGVk
IG5vZGUiOwotICAgIFNjcm9sbGluZ1RyZWVOb2RlOjpkdW1wUHJvcGVydGllcyh0cywgYmVoYXZp
b3IpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZml4ZWQgY29uc3RyYWludHMiLCBtX2NvbnN0cmFp
bnRzKTsKLSAgICAKLSAgICBpZiAoYmVoYXZpb3IgJiBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRC
ZWhhdmlvckluY2x1ZGVMYXllclBvc2l0aW9ucykgewotICAgICAgICBGbG9hdFJlY3QgbGF5ZXJC
b3VuZHMgPSBbbV9sYXllciBib3VuZHNdOwotICAgICAgICBGbG9hdFBvaW50IGFuY2hvclBvaW50
ID0gW21fbGF5ZXIgYW5jaG9yUG9pbnRdOwotICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0g
W21fbGF5ZXIgcG9zaXRpb25dOwotICAgICAgICBGbG9hdFBvaW50IGxheWVyVG9wTGVmdCA9IHBv
c2l0aW9uIC0gdG9GbG9hdFNpemUoYW5jaG9yUG9pbnQpICogbGF5ZXJCb3VuZHMuc2l6ZSgpICsg
bV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKTsKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJsYXllciB0b3AgbGVmdCIsIGxheWVyVG9wTGVmdCk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKaW5kZXggZDE0NDJjZDBj
NzM0NDFkYzkyZjNiODRhZGM4ODRiMTUyYjgxYzM4NC4uYzRkODNmYmQzOWJmZGExZTE4NzljNDM4
MTUxYTEyZmVhMGU0ZjBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYy5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlLmgiCiAKLSNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0o
TUFDKQogCiAjaW5jbHVkZSAiU2Nyb2xsQ29udHJvbGxlci5oIgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IDY4MjMxMzFlYTEyYWUwZDVi
OTI5MjcwY2RhMGJiNTVmNmY2MzNkZjcuLmZkNjY2ZmQ3ZmE0OGQ0ZmZiOGNiYTk0MmUyY2UzOWQ1
ODA3ZDFiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjLm1tCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaCIKIAotI2lmIFBMQVRGT1JNKE1B
QykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KSAmJiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlNjcm9s
bGluZ1RyZWUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJkZWY1ZDJlN2MyMDU3MDAzMWUwMzgxNmRhOGE2MDBkNzgzZmE2ZTAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUo
QVNZTkNfU0NST0xMSU5HKQotCi0jaW5jbHVkZSAiU2Nyb2xsaW5nQ29uc3RyYWludHMuaCIKLSNp
bmNsdWRlICJTY3JvbGxpbmdUcmVlTm9kZS5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
LQotT0JKQ19DTEFTUyBDQUxheWVyOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFN0
aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKLQotY2xhc3MgU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZU5vZGUgewotcHVibGljOgotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+IGNyZWF0ZShTY3Jv
bGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKLQotICAgIHZpcnR1YWwgflNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlKCk7Ci0KLXByaXZhdGU6Ci0gICAgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUo
U2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7Ci0KLSAgICB2b2lkIGNvbW1pdFN0YXRl
QmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVO
b2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29u
c3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkdW1w
UHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhh
dmlvcikgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3Ry
YWludHMgbV9jb25zdHJhaW50czsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9sYXllcjsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19TQ1JP
TExJTkdfTk9ERShTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSwgaXNTdGlja3lOb2RlKCkpCi0KLSNl
bmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Mzc0ODRhYzMwOGNkYmY2M2I0MmYxOWFkZDAy
M2Q3M2I3MjAxNWQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEyOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIgotCi0j
aWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLQotI2ltcG9ydCAiTG9nZ2luZy5oIgotI2ltcG9y
dCAiU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVlLmgi
Ci0jaW1wb3J0ICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCi0jaW1wb3J0ICJT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgiCi0jaW1wb3J0IDxRdWFydHpDb3Jl
L0NBTGF5ZXIuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1SZWY8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+IFNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5n
Tm9kZUlEIG5vZGVJRCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpKTsKLX0KLQotU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKFNjcm9sbGluZ1RyZWUmIHNjcm9sbGlu
Z1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCi0gICAgOiBTY3JvbGxpbmdUcmVlTm9kZShz
Y3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZTo6U3RpY2t5LCBub2RlSUQpCi17Ci0gICAg
c2Nyb2xsaW5nVHJlZS5maXhlZE9yU3RpY2t5Tm9kZUFkZGVkKCk7Ci19Ci0KLVNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlOjp+U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoKQotewotICAgIHNjcm9sbGlu
Z1RyZWUoKS5maXhlZE9yU3RpY2t5Tm9kZVJlbW92ZWQoKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdT
dGF0ZU5vZGUmIHN0YXRlTm9kZSkKLXsKLSAgICBjb25zdCBTY3JvbGxpbmdTdGF0ZVN0aWNreU5v
ZGUmIHN0aWNreVN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZT4o
c3RhdGVOb2RlKTsKLQotICAgIGlmIChzdGlja3lTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQotICAgICAgICBtX2xheWVyID0gc3RpY2t5U3Rh
dGVOb2RlLmxheWVyKCk7Ci0KLSAgICBpZiAoc3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShT
Y3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU6OlZpZXdwb3J0Q29uc3RyYWludHMpKQotICAgICAgICBt
X2NvbnN0cmFpbnRzID0gc3RpY2t5U3RhdGVOb2RlLnZpZXdwb3J0Q29uc3RyYWludHMoKTsKLX0K
LQotbmFtZXNwYWNlIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlSW50ZXJuYWwgewotc3RhdGljIGlu
bGluZSBDR1BvaW50IG9wZXJhdG9yKihDR1BvaW50JiBhLCBjb25zdCBDR1NpemUmIGIpCi17Ci0g
ICAgcmV0dXJuIENHUG9pbnRNYWtlKGEueCAqIGIud2lkdGgsIGEueSAqIGIuaGVpZ2h0KTsKLX0K
LX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNl
c3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZs
b2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURl
bHRhKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUludGVy
bmFsOwotICAgIGJvb2wgYWRqdXN0U3RpY2t5TGF5ZXIgPSBmYWxzZTsKLSAgICBGbG9hdFJlY3Qg
Y29uc3RyYWluaW5nUmVjdDsKLQotICAgIGlmIChpczxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlPigqcGFyZW50KCkpKSB7Ci0gICAgICAgIGNvbnN0cmFpbmluZ1JlY3QgPSBGbG9h
dFJlY3QoZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4oKnBhcmVu
dCgpKS5zY3JvbGxQb3NpdGlvbigpLCBtX2NvbnN0cmFpbnRzLmNvbnN0cmFpbmluZ1JlY3RBdExh
c3RMYXlvdXQoKS5zaXplKCkpOwotICAgICAgICBhZGp1c3RTdGlja3lMYXllciA9IHRydWU7Ci0g
ICAgfSBlbHNlIGlmIChpczxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPigqcGFyZW50
KCkpKSB7Ci0gICAgICAgIGNvbnN0cmFpbmluZ1JlY3QgPSBmaXhlZFBvc2l0aW9uUmVjdDsKLSAg
ICAgICAgYWRqdXN0U3RpY2t5TGF5ZXIgPSB0cnVlOwotICAgIH0KLQotICAgIExPR19XSVRIX1NU
UkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUgIiA8PCBz
Y3JvbGxpbmdOb2RlSUQoKSA8PCAiIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2U6IG5l
dyB2aWV3cG9ydCAiIDw8IGZpeGVkUG9zaXRpb25SZWN0IDw8ICIgY29uc3RyYWluaW5nUmVjdEF0
TGFzdExheW91dCAiIDw8IG1fY29uc3RyYWludHMuY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91
dCgpIDw8ICIgbGFzdCBsYXllciBwb3MgIiA8PCBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25B
dExhc3RMYXlvdXQoKSA8PCAiIGFkanVzdFN0aWNreUxheWVyICIgPDwgYWRqdXN0U3RpY2t5TGF5
ZXIpOwotCi0gICAgRmxvYXRTaXplIGRlbHRhRm9yRGVzY2VuZGFudHMgPSBjdW11bGF0aXZlRGVs
dGE7Ci0KLSAgICBpZiAoYWRqdXN0U3RpY2t5TGF5ZXIpIHsKLSAgICAgICAgRmxvYXRQb2ludCBs
YXllclBvc2l0aW9uID0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uRm9yQ29uc3RyYWluaW5n
UmVjdChjb25zdHJhaW5pbmdSZWN0KTsKLQotICAgICAgICBDR1JlY3QgbGF5ZXJCb3VuZHMgPSBb
bV9sYXllciBib3VuZHNdOwotICAgICAgICBDR1BvaW50IGFuY2hvclBvaW50ID0gW21fbGF5ZXIg
YW5jaG9yUG9pbnRdOwotICAgICAgICBDR1BvaW50IG5ld1Bvc2l0aW9uID0gbGF5ZXJQb3NpdGlv
biAtIG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCkgKyBhbmNob3JQb2ludCAqIGxheWVy
Qm91bmRzLnNpemU7Ci0gICAgICAgIFttX2xheWVyIHNldFBvc2l0aW9uOm5ld1Bvc2l0aW9uXTsK
LQotICAgICAgICBkZWx0YUZvckRlc2NlbmRhbnRzID0gbGF5ZXJQb3NpdGlvbiAtIG1fY29uc3Ry
YWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpICsgY3VtdWxhdGl2ZURlbHRhOwotICAg
IH0KLQotICAgIGlmICghbV9jaGlsZHJlbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChh
dXRvJiBjaGlsZCA6ICptX2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0
ZXJBbmNlc3RvckNoYW5nZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIGRlbHRhRm9y
RGVzY2VuZGFudHMpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpkdW1wUHJv
cGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3Ig
YmVoYXZpb3IpIGNvbnN0Ci17Ci0gICAgdHMgPDwgInN0aWNreSBub2RlIjsKLQotICAgIFNjcm9s
bGluZ1RyZWVOb2RlOjpkdW1wUHJvcGVydGllcyh0cywgYmVoYXZpb3IpOwotICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic3RpY2t5IGNvbnN0cmFpbnRzIiwgbV9jb25zdHJhaW50cyk7Ci0KLSAgICBpZiAo
YmVoYXZpb3IgJiBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvckluY2x1ZGVMYXllclBv
c2l0aW9ucykgewotICAgICAgICBGbG9hdFJlY3QgbGF5ZXJCb3VuZHMgPSBbbV9sYXllciBib3Vu
ZHNdOwotICAgICAgICBGbG9hdFBvaW50IGFuY2hvclBvaW50ID0gW21fbGF5ZXIgYW5jaG9yUG9p
bnRdOwotICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gW21fbGF5ZXIgcG9zaXRpb25dOwot
ICAgICAgICBGbG9hdFBvaW50IGxheWVyVG9wTGVmdCA9IHBvc2l0aW9uIC0gdG9GbG9hdFNpemUo
YW5jaG9yUG9pbnQpICogbGF5ZXJCb3VuZHMuc2l6ZSgpICsgbV9jb25zdHJhaW50cy5hbGlnbm1l
bnRPZmZzZXQoKTsKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJsYXllciB0b3AgbGVmdCIsIGxh
eWVyVG9wTGVmdCk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEuaAppbmRleCA5NDExZWQyNjIxMmFlMTg1MGUyMjc3NGYzMTkzNmIwNzNlZDdmOTVh
Li43NDY2MWZkM2RlMjNiMmMwNjVmMWYyMDdjMDJiOTQwZWNjMTI3MGQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIFBMQVRGT1JNKE1BQykKIAog
I2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5oIgpAQCAtMTg2
LDUgKzE4Niw0IEBAIHByaXZhdGU6CiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRFJBV0lOR19B
UkVBKFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLCBEcmF3aW5nQXJlYVR5cGVUaWxlZENv
cmVBbmltYXRpb24pCiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLQorI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5t
bQppbmRleCBiNTkxNjA3NGNlMjIyMTMzNGQ2M2E5Yjg1MDA2NTUxOGQyODM2M2VlLi4zMjRkMDYz
MTYyMzMyYjhkNGY2NjYyMTY3OWIwNTI3MTEyOTQ3OGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgiCiAKLSNpZiAhUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQgIkNvbG9yU3Bh
Y2VEYXRhLmgiCiAjaW1wb3J0ICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIKQEAgLTk5OSw0
ICs5OTksNCBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpsYXllckZsdXNo
VGhyb3R0bGluZ1RpbWVyRmlyZWQoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI2VuZGlm
IC8vICFQTEFURk9STShJT1NfRkFNSUxZKQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361128</attachid>
            <date>2019-02-04 16:44:49 -0800</date>
            <delta_ts>2019-02-04 20:35:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194245-20190204164448.patch</filename>
            <type>text/plain</type>
            <size>55692</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk4MmM4MDY5YzM5ODc3
ZGQ4ZWQyZmUxNzU3ZmRjM2Q1OTFjMjg3OC4uNjhmZWM3YjA0MTJhMThiYjM3ODExODZjOTUyZmVi
OTEyNWRmZWIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE5LTAyLTA0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgc29tZSBt
YWNPUy9pT1Mgc2Nyb2xsaW5nIGNvZGUgaW50byB0aGUgc2Nyb2xsaW5nL2NvY29hIGRpcmVjdG9y
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0MjQ1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZSBhbmQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUgYXJlIHVzZWQgb24g
aU9TIGFuZCBtYWNPUywgc28gbW92ZSB0aGVtIHRvIHRoZSBjb2NvYQorICAgICAgICBkaXJlY3Rv
cnkuCisKKyAgICAgICAgU3RhbmRhcmRpemUgb24gdGhlIG9yZGVyaW5nIG9mIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpICYmIFBMQVRGT1JNKE1BQykuCisKKyAgICAgICAgU3RvcCBidWlsZGluZyBT
Y3JvbGxpbmdUaHJlYWQgZm9yIGlPUyAoaXQncyBuZXZlciB1c2VkKSwgYW5kIHN0dWIgb3V0IHNv
bWUgZnVuY3Rpb25zIHNvIHRoaW5ncyBidWlsZC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUaHJlYWQ6OmluaXRpYWxpemVSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1RocmVhZDo6d2FrZVVwUnVuTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUaHJlYWQ6OnRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFjayk6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUu
aC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlRml4ZWROb2Rl
Lm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUubW0uCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oLgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Lm1tLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUaHJlYWRNYWMubW06
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5tbToKKwogMjAxOS0wMi0wNCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBc3luYyBvdmVyZmxvdyBzY3Jv
bGwgd2l0aCBib3JkZXItcmFkaXVzIHJlbmRlcnMgaW5jb3JyZWN0bHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTJk
MjE4YTBkNmMwNTE1ZTI3YmQ3YTExMmQ3ZjExZDdmNGU3OGFmZS4uOTUzMTRiMjAzYjBlN2I5ZTQ4
Y2ZkYzA1ZmUxOTBmZTY0MTQ3YzBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0w
Mi0wNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIHNvbWUgbWFjT1MvaU9TIHNjcm9sbGluZyBjb2RlIGludG8gdGhlIHNjcm9sbGluZy9jb2Nv
YSBkaXJlY3RvcnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NDI0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBQTEFURk9STShNQUMpLCBub3QgIVBMQVRGT1JNKElPU19GQU1JTFkpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW06CisKIDIwMTktMDItMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgUGFnZU92ZXJsYXlDb250cm9sbGVyJ3MgbGF5ZXJzIHNo
b3VsZCBiZSBjcmVhdGVkIGxhemlseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNWEwMGQx
MmE1ODAwM2FkNTVhODNkZjEzZmZjODVkODY4MGE2N2JkYy4uMDcyMjI4OGRhMWM4OTM1YTc4Zjdl
MTkyMDk2YTdhZDg1NzJlODA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xNDYsNiAr
MTQ2LDggQEAgcGFnZS9tYWMvV2hlZWxFdmVudERlbHRhRmlsdGVyTWFjLm1tCiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCiAKIHBhZ2Uvc2Nyb2xsaW5nL2Nv
Y29hL1Njcm9sbGluZ1N0YXRlTm9kZS5tbQorcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5n
VHJlZUZpeGVkTm9kZS5tbQorcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUubW0KIAogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLm1t
CiBwYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5t
bQpAQCAtMTU1LDEyICsxNTcsMTAgQEAgcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLm1tCiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGlu
Z05vZGVNYWMubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUaHJlYWRNYWMubW0KLXBh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tCiBwYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KIHBhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCiBwYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5jcHAKLXBhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQogCiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24u
Y3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA2ZDQ1Mzc0MTVlNjg2YTg4ODViY2E5OWQ3NTY4ZjBiMjQyMDQ4Mzg1Li44NTU5
MGY2ZGIyNzg4MGU4OTJlZDVkMGEzMTFhMTI3MTc4NGE2Mzk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNTksMTAgKzM1OSwx
MSBAQAogCQkwRjg3MTY3MDFDODY5RDgzMDA0RkYwREUgLyogTGVuZ3RoUG9pbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODcxNjZFMUM4NjlEODMw
MDRGRjBERSAvKiBMZW5ndGhQb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGOEI0NTcyMURDM0ZCQTMwMDQ0M0MzRiAvKiBJbnRlcnNlY3Rp
b25PYnNlcnZlckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjhCNDU3MTFEQzNGQkEzMDA0NDNDM0YgLyogSW50ZXJzZWN0aW9uT2JzZXJ2
ZXJDYWxsYmFjay5oICovOyB9OwogCQkwRjhCNDU3NjFEQzQxREJBMDA0NDNDM0YgLyogSlNJbnRl
cnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjhCNDU3NDFEQzQxREJBMDA0NDNDM0YgLyogSlNJbnRlcnNlY3Rp
b25PYnNlcnZlckNhbGxiYWNrLmggKi87IH07CisJCTBGOTRCNjQ3MjIwOEZFMzYwMDE1NzAxNCAv
KiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjk0QjY0MjIyMDhGNzAxMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGOTRCNjQ5MjIwOEZFM0IwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NEI2
NDMyMjA4RjcwMjAwMTU3MDE0IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5REFBMEYxRkQxQzY2
QTAwNzlDNUIyIC8qIERPTUdDT3V0cHV0Q29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5REFBMEUxRkQxQzY2NDAwNzlDNUIyIC8qIERP
TUdDT3V0cHV0Q29uc3RyYWludC5oICovOyB9OwogCQkwRkEyNEQ3QTE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQTI0RDc4MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVy
VXBkYXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGQjYyNTJGMThERTFCMTUwMEEwN0MwNSAvKiBHZW9tZXRyeVV0aWxpdGllcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNjI1MkQxOERFMUIx
NTAwQTA3QzA1IC8qIEdlb21ldHJ5VXRpbGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZCODg5MEExNjdEMkZBMTAwMTBDREE1IC8qIFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkI4ODkwODE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRkI4ODkwRjE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI4ODkw
RDE2N0QzMDE2MDAxMENEQTUgLyogU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZDNEU0MEQxODdGODJF
MTAwNDU4ODJDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM0RTQwNzE4N0Y4MkUxMDA0NTg4MkMgLyog
U2Nyb2xsaW5nQ29vcmRpbmF0b3JJT1MuaCAqLzsgfTsKIAkJMEZDNEU0MTAxODdGODJFMTAwNDU4
ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQzRFNDBBMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVl
SU9TLmggKi87IH07CkBAIC0yNzA1LDcgKzI3MDYsNiBAQAogCQk5M0MwOUE1MzBCMDY0REIzMDA1
QUJENEQgLyogRXZlbnRIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0MwOUE1MjBCMDY0REIzMDA1QUJENEQgLyogRXZlbnRIYW5kbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNDMDlD
ODYwQjA2NTdBQTAwNUFCRDREIC8qIFNjcm9sbFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0MwOUM4NTBCMDY1N0FBMDA1QUJENEQgLyogU2Ny
b2xsVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5M0MzOEJGRjE2NDQ3M0M3MDAwOTFFQjIgLyogU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzM4QkZE
MTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzQzM4QzAzMTY0NDczREQw
MDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0MzOEMwMTE2NDQ3M0REMDAwOTFFQjIgLyogU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzQzQ0MjAwMEY4MTNBRTEwMEMxQTYzNCAvKiBDb2xsZWN0aW9uVHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNDNDQx
RkYwRjgxM0FFMTAwQzFBNjM0IC8qIENvbGxlY3Rpb25UeXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNDNEE0MTUxNjI5REY1QTAwQzNFQjZF
IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzRBNDEzMTYyOURGNUEwMEMzRUI2RSAv
KiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNDNEY2RUIxMTA4RjlBNTAwOTlEMERC
IC8qIEFjY2Vzc2liaWxpdHlTY3JvbGxiYXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzQzRGNkU5MTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmls
aXR5U2Nyb2xsYmFyLmggKi87IH07CkBAIC01NzkwLDYgKzU3OTAsMTAgQEAKIAkJMEY4QjQ1NzMx
REM0MURCQTAwNDQzQzNGIC8qIEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ludGVyc2VjdGlvbk9ic2VydmVy
Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhCNDU3NDFEQzQx
REJBMDA0NDNDM0YgLyogSlNJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk0QTM5NTFFRjFCMTA1MDBGQkFGRkIg
LyogSlNET01RdWFkQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTRE9NUXVhZEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
OTRCNjQyMjIwOEY3MDEwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaDsgcGF0aCA9IHBhZ2Uvc2Nyb2xsaW5n
L2NvY29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OworCQkwRjk0QjY0MzIyMDhGNzAyMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaDsgcGF0aCA9IHBh
Z2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmg7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKKwkJMEY5NEI2NDQyMjA4RjcwMjAwMTU3MDE0IC8qIFNjcm9sbGlu
Z1RyZWVGaXhlZE5vZGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBTY3JvbGxpbmdUcmVlRml4
ZWROb2RlLm1tOyBwYXRoID0gcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVk
Tm9kZS5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkwRjk0QjY0NTIyMDhGNzAz
MDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbTsgcGF0aCA9IHBhZ2Uvc2Nyb2xsaW5nL2Nv
Y29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7
IH07CiAJCTBGOTdBNjU3MTU1REE4MUUwMEZBREQ0QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJ
T1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEaXNwbGF5UmVm
cmVzaE1vbml0b3JJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOURBQTBD
MUZEMUM2NjMwMDc5QzVCMiAvKiBET01HQ091dHB1dENvbnN0cmFpbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NR0NPdXRwdXRDb25zdHJhaW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5REFBMEUxRkQxQzY2NDAwNzlDNUIyIC8qIERP
TUdDT3V0cHV0Q29uc3RyYWludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01HQ091dHB1dENvbnN0cmFpbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3
OTksOCArNTgwMyw2IEBACiAJCTBGQTg4RUJDMTZBOEQxQkQwMEY5OTk4NCAvKiBTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI2MjUyQzE4REUxQjE1MDBBMDdDMDUgLyogR2Vv
bWV0cnlVdGlsaXRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R2VvbWV0cnlVdGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI2
MjUyRDE4REUxQjE1MDBBMDdDMDUgLyogR2VvbWV0cnlVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvbWV0cnlVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEZCODg5MDgxNjdEMkZBMTAwMTBDREE1IC8qIFNjcm9sbGluZ1RyZWVT
dGlja3lOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGQjg4OTA5MTY3
RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI4ODkwQzE2N0QzMDE2MDAxMENEQTUgLyog
U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQjg4OTBEMTY3RDMwMTYwMDEwQ0RBNSAvKiBTY3JvbGxpbmdTdGF0ZVN0
aWNreU5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nU3Rh
dGVTdGlja3lOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA1MTY4MjE5
QjVFQkUwMDMxQzM5RSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwNjQ3LDggKzEwNjQ5LDYg
QEAKIAkJOTNDMDlDODUwQjA2NTdBQTAwNUFCRDREIC8qIFNjcm9sbFR5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzQzM4QkZDMTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZp
eGVkTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxp
bmdTdGF0ZUZpeGVkTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzM4
QkZEMTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5M0MzOEMwMTE2NDQ3M0REMDAwOTFFQjIgLyogU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
Y3JvbGxpbmdUcmVlRml4ZWROb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkz
QzM4QzAyMTY0NDczREQwMDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNDQxRkYwRjgxM0FFMTAwQzFB
NjM0IC8qIENvbGxlY3Rpb25UeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbGxlY3Rpb25UeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzQzRBNDEz
MTYyOURGNUEwMEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNDNEE0MTQxNjI5
REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY5Nzks
OCArMTY5NzksNiBAQAogCQkJCTUxN0RFRUUzMURFOTRBREMwMEI5MTY0NCAvKiBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3JNYWMubW0gKi8sCiAJCQkJMEZBODhFQkMxNkE4RDFCRDAwRjk5OTg0
IC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tICovLAogCQkJCTFBRjYy
RjIzMTREQUZFOTEwMDQxNTU2QyAvKiBTY3JvbGxpbmdUaHJlYWRNYWMubW0gKi8sCi0JCQkJOTND
MzhDMDExNjQ0NzNERDAwMDkxRUIyIC8qIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCAqLywKLQkJ
CQk5M0MzOEMwMjE2NDQ3M0REMDAwOTFFQjIgLyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbSAq
LywKIAkJCQk5M0M0QTQxMzE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYy5oICovLAogCQkJCTkzQzRBNDE0MTYyOURGNUEwMEMzRUI2RSAvKiBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tICovLAogCQkJCTBGRTU4MDYxMTkzMjdB
NjIwMERFMzJFQiAvKiBTY3JvbGxpbmdUcmVlTWFjLmNwcCAqLywKQEAgLTE2OTg5LDggKzE2OTg3
LDYgQEAKIAkJCQkwRkMwNTE2ODIxOUI1RUJFMDAzMUMzOUUgLyogU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZU1hYy5tbSAqLywKIAkJCQkwRjM3RjA4NDIyMDJBQ0I3MDBBODlDMEIg
LyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1hYy5oICovLAogCQkJCTBGMzdG
MDgzMjIwMkFDOEYwMEE4OUMwQiAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
TWFjLm1tICovLAotCQkJCTBGQjg4OTA4MTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oICovLAotCQkJCTBGQjg4OTA5MTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZS5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIxODE3LDYgKzIxODEzLDEwIEBACiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTkzRUY3RDU0MTk1NEU5OEYwMERGQjcxRCAvKiBT
Y3JvbGxpbmdTdGF0ZU5vZGUubW0gKi8sCisJCQkJMEY5NEI2NDIyMjA4RjcwMTAwMTU3MDE0IC8q
IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCAqLywKKwkJCQkwRjk0QjY0NDIyMDhGNzAyMDAxNTcw
MTQgLyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbSAqLywKKwkJCQkwRjk0QjY0MzIyMDhGNzAy
MDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCAqLywKKwkJCQkwRjk0QjY0NTIy
MDhGNzAzMDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0gKi8sCiAJCQkpOwog
CQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMwMDI1LDcg
KzMwMDI1LDYgQEAKIAkJCQkxQTg1QjFFNzBBMUIyNDA1MDBEOEM4N0MgLyogSlNIVE1MRGlyZWN0
b3J5RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4NUIyQjcwQTFCMkFDNzAwRDhDODdD
IC8qIEpTSFRNTERpdkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBODVCMUU5MEExQjI0
MDUwMEQ4Qzg3QyAvKiBKU0hUTUxETGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTcx
RUFEQ0Q4MjIwODdFNzIwMDY1QTQ1RiAvKiBQb2ludGVySUQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBNDk0RTM1MEExMjM1OEIwMEZEQUZDMSAvKiBKU0hUTUxEb2N1bWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE0OTRCRkIwQTEyMkY0NDAwRkRBRkMxIC8qIEpTSFRNTEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzOEU2NUYxMDlGMDk4NDAwMDhBNDhFQyAvKiBKU0hUTUxFbGVtZW50
V3JhcHBlckZhY3RvcnkuaCBpbiBIZWFkZXJzICovLApAQCAtMzEwNzMsNiArMzEwNzIsNyBAQAog
CQkJCTcxQjVBQjI2MjFGMUQ5RjQwMDM3NkU1QyAvKiBQb2ludGVyQ2FwdHVyZUNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxN0QzRkYzMjE1NTk5RjQwMDM0RTNCOSAvKiBQb2ludGVy
RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQjFGNzE3MEQwMENBQTgwMDRBRUE2NCAvKiBQ
b2ludGVyRXZlbnRzSGl0UnVsZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxRUFEQ0Q4MjIwODdF
NzIwMDY1QTQ1RiAvKiBQb2ludGVySUQuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGRjgxM0E3MURC
QTg2NDAwMDlCRjAwMSAvKiBQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg0NzMwRDkyMTI0OEYwQjMwMEQzQTlDOSAvKiBQb2ludExpZ2h0U291cmNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzA1OTk3QTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMTQ2NSw3ICszMTQ2NSw3IEBACiAJCQkJOTMxQ0JEMTExNjFB
NDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFGNjJGMjYxNERBRkVBMTAwNDE1NTZDIC8qIFNjcm9sbGluZ1RocmVhZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBQUREQTQxNERCNDA5RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWUuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTkzQzM4QzAzMTY0NDczREQwMDA5MUVCMiAvKiBTY3JvbGxpbmdUcmVl
Rml4ZWROb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjk0QjY0NzIyMDhGRTM2MDAxNTcwMTQg
LyogU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZENDFFNjgy
MUY4MEMwRTAwMEMwMDZEIC8qIFNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVBM0U4ODE5MUIzQkQ3MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDNEU0MTExODdGODJFMTAw
NDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzE0NzcsNyArMzE0NzcsNyBAQAogCQkJCTkzOTFBOTlEMTYyOUQ3MDAwMDI5NzMz
MCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTZE
NUE5OUQxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzdGMDg1MjIwMkJGOTgwMEE4OUMwQiAvKiBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmggaW4gSGVhZGVycyAqLywKLQkJCQkw
RkI4ODkwQTE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGOTRCNjQ5MjIwOEZFM0IwMDE1NzAxNCAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDNTc5NUQxREE1QzMwMTAwNkY5Qzk3
IC8qIFNjcm9sbEludG9WaWV3T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FBRkU4RDAx
OUNCODY3MjAwMEY1NkQ4IC8qIFNjcm9sbExhdGNoaW5nU3RhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzQzU3OTVEMURBNUMzMDEwMDZGOUM4NiAvKiBTY3JvbGxMb2dpY2FsUG9zaXRpb24uaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RocmVhZC5jcHAKaW5kZXggMjQ2NjY2ZDI5OTljY2E4ZWFkZjUzNjYyYjMyZTc5N2UxNTVi
NzA5Yy4uYjE0N2VjZmMwZDQ0YzdkNTZmNjcyZmExM2I0MTEyZmI5M2MzMTRiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCkBAIC0x
MDQsNiArMTA0LDI1IEBAIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaEZ1bmN0aW9uc0Zy
b21TY3JvbGxpbmdUaHJlYWQoKQogICAgICAgICBmdW5jdGlvbigpOwogfQogCisjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKK05PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgU2Nyb2xsaW5nVGhy
ZWFkOjppbml0aWFsaXplUnVuTG9vcCgpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKK3ZvaWQgU2Nyb2xsaW5nVGhyZWFkOjp3YWtlVXBSdW5Mb29wKCkKK3sKK30KKwordm9pZCBT
Y3JvbGxpbmdUaHJlYWQ6OnRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFjayh2b2lkKikKK3sKK30K
Kwordm9pZCBTY3JvbGxpbmdUaHJlYWQ6OnRocmVhZFJ1bkxvb3BTb3VyY2VDYWxsYmFjaygpCit7
Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVGaXhl
ZE5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NDA3Mjk2NTE5MjJmNGJhNzZiZmE0M2YwMzViZTQ4ODdkZDUz
YTQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29j
b2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbmNsdWRl
ICJTY3JvbGxpbmdDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgi
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIENBTGF5ZXI7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWlu
dHM7CisKK2NsYXNzIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUgOiBwdWJsaWMgU2Nyb2xsaW5nVHJl
ZU5vZGUgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2Nyb2xsaW5n
VHJlZUZpeGVkTm9kZT4gY3JlYXRlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOwor
CisgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSgpOworCitwcml2YXRlOgorICAg
IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7
CisKKyAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hh
bmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0
JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92
ZXJyaWRlOworCisgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3Jv
bGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBGaXhl
ZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBtX2NvbnN0cmFpbnRzOworICAgIFJldGFpblB0
cjxDQUxheWVyPiBtX2xheWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX1NDUk9MTElOR19OT0RFKFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUs
IGlzRml4ZWROb2RlKCkpCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMyYzg5MTU2OTc2OWQzMWJhYjQzYmYz
MDI3ZTZiOGQyYjRlMmI0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0KQEAgLTAsMCArMSwxMjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1Ry
ZWVGaXhlZE5vZGUuaCIKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbXBvcnQg
IkxvZ2dpbmcuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmgiCisjaW1wb3J0
ICJTY3JvbGxpbmdUcmVlLmgiCisjaW1wb3J0IDxRdWFydHpDb3JlL0NBTGF5ZXIuaD4KKyNpbXBv
cnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZT4gU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y3JlYXRlKFNj
cm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZShzY3JvbGxpbmdU
cmVlLCBub2RlSUQpKTsKK30KKworU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6U2Nyb2xsaW5nVHJl
ZUZpeGVkTm9kZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQg
bm9kZUlEKQorICAgIDogU2Nyb2xsaW5nVHJlZU5vZGUoc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5n
Tm9kZVR5cGU6OkZpeGVkLCBub2RlSUQpCit7CisgICAgc2Nyb2xsaW5nVHJlZS5maXhlZE9yU3Rp
Y2t5Tm9kZUFkZGVkKCk7Cit9CisKK1Njcm9sbGluZ1RyZWVGaXhlZE5vZGU6On5TY3JvbGxpbmdU
cmVlRml4ZWROb2RlKCkKK3sKKyAgICBzY3JvbGxpbmdUcmVlKCkuZml4ZWRPclN0aWNreU5vZGVS
ZW1vdmVkKCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6Y29tbWl0U3RhdGVC
ZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKK3sKKyAg
ICBjb25zdCBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZSYgZml4ZWRTdGF0ZU5vZGUgPSBkb3duY2Fz
dDxTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZT4oc3RhdGVOb2RlKTsKKworICAgIGlmIChmaXhlZFN0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpCisg
ICAgICAgIG1fbGF5ZXIgPSBmaXhlZFN0YXRlTm9kZS5sYXllcigpOworCisgICAgaWYgKHN0YXRl
Tm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU6OlZpZXdwb3J0
Q29uc3RyYWludHMpKQorICAgICAgICBtX2NvbnN0cmFpbnRzID0gZml4ZWRTdGF0ZU5vZGUudmll
d3BvcnRDb25zdHJhaW50cygpOworfQorCituYW1lc3BhY2UgU2Nyb2xsaW5nVHJlZUZpeGVkTm9k
ZUludGVybmFsIHsKK3N0YXRpYyBpbmxpbmUgQ0dQb2ludCBvcGVyYXRvciooQ0dQb2ludCYgYSwg
Y29uc3QgQ0dTaXplJiBiKQoreworICAgIHJldHVybiBDR1BvaW50TWFrZShhLnggKiBiLndpZHRo
LCBhLnkgKiBiLmhlaWdodCk7Cit9Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6
dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYg
Y2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZs
b2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRhKQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBTY3JvbGxp
bmdUcmVlRml4ZWROb2RlSW50ZXJuYWw7CisgICAgRmxvYXRQb2ludCBsYXllclBvc2l0aW9uID0g
bV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uRm9yVmlld3BvcnRSZWN0KGZpeGVkUG9zaXRpb25S
ZWN0KTsKKworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCgpIDw8ICIgdXBkYXRlTGF5ZXJz
QWZ0ZXJBbmNlc3RvckNoYW5nZTogbmV3IHZpZXdwb3J0ICIgPDwgZml4ZWRQb3NpdGlvblJlY3Qg
PDwgIiB2aWV3cG9ydFJlY3RBdExhc3RMYXlvdXQgIiA8PCBtX2NvbnN0cmFpbnRzLnZpZXdwb3J0
UmVjdEF0TGFzdExheW91dCgpIDw8ICIgbGFzdCBsYXllciBwb3MgIiA8PCBtX2NvbnN0cmFpbnRz
LmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSA8PCAiIG5ldyBvZmZzZXQgZnJvbSB0b3AgIiA8
PCAoZml4ZWRQb3NpdGlvblJlY3QueSgpIC0gbGF5ZXJQb3NpdGlvbi55KCkpKTsKKworICAgIGxh
eWVyUG9zaXRpb24gLT0gY3VtdWxhdGl2ZURlbHRhOworCisgICAgQ0dSZWN0IGxheWVyQm91bmRz
ID0gW21fbGF5ZXIgYm91bmRzXTsKKyAgICBDR1BvaW50IGFuY2hvclBvaW50ID0gW21fbGF5ZXIg
YW5jaG9yUG9pbnRdOworICAgIENHUG9pbnQgbmV3UG9zaXRpb24gPSBsYXllclBvc2l0aW9uIC0g
bV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKSArIGFuY2hvclBvaW50ICogbGF5ZXJCb3Vu
ZHMuc2l6ZTsKKworICAgIGlmIChpc25hbihuZXdQb3NpdGlvbi54KSB8fCBpc25hbihuZXdQb3Np
dGlvbi55KSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkF0dGVtcHQgdG8gY2FsbCBbQ0FMYXll
ciBzZXRQb3NpdGlvbl0gd2l0aCBOYU46IG5ld1Bvc2l0aW9uPSglZiwgJWYpIGxheWVyUG9zaXRp
b249KCVmLCAlZikgYWxpZ25tZW50T2Zmc2V0PSglZiwgJWYpIiwKKyAgICAgICAgICAgIG5ld1Bv
c2l0aW9uLngsIG5ld1Bvc2l0aW9uLnksIGxheWVyUG9zaXRpb24ueCgpLCBsYXllclBvc2l0aW9u
LnkoKSwKKyAgICAgICAgICAgIG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCkud2lkdGgo
KSwgbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKS5oZWlnaHQoKSk7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW21fbGF5
ZXIgc2V0UG9zaXRpb246bmV3UG9zaXRpb25dOworCisgICAgaWYgKCFtX2NoaWxkcmVuKQorICAg
ICAgICByZXR1cm47CisKKyAgICBGbG9hdFNpemUgbmV3RGVsdGEgPSBsYXllclBvc2l0aW9uIC0g
bV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkgKyBjdW11bGF0aXZlRGVs
dGE7CisKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCisgICAgICAgIGNoaWxk
LT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0
aW9uUmVjdCwgbmV3RGVsdGEpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmR1
bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhh
dmlvciBiZWhhdmlvcikgY29uc3QKK3sKKyAgICB0cyA8PCAiZml4ZWQgbm9kZSI7CisgICAgU2Ny
b2xsaW5nVHJlZU5vZGU6OmR1bXBQcm9wZXJ0aWVzKHRzLCBiZWhhdmlvcik7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJmaXhlZCBjb25zdHJhaW50cyIsIG1fY29uc3RyYWludHMpOworICAgIAorICAg
IGlmIChiZWhhdmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9ySW5jbHVkZUxh
eWVyUG9zaXRpb25zKSB7CisgICAgICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9IFttX2xheWVy
IGJvdW5kc107CisgICAgICAgIEZsb2F0UG9pbnQgYW5jaG9yUG9pbnQgPSBbbV9sYXllciBhbmNo
b3JQb2ludF07CisgICAgICAgIEZsb2F0UG9pbnQgcG9zaXRpb24gPSBbbV9sYXllciBwb3NpdGlv
bl07CisgICAgICAgIEZsb2F0UG9pbnQgbGF5ZXJUb3BMZWZ0ID0gcG9zaXRpb24gLSB0b0Zsb2F0
U2l6ZShhbmNob3JQb2ludCkgKiBsYXllckJvdW5kcy5zaXplKCkgKyBtX2NvbnN0cmFpbnRzLmFs
aWdubWVudE9mZnNldCgpOworICAgICAgICB0cy5kdW1wUHJvcGVydHkoImxheWVyIHRvcCBsZWZ0
IiwgbGF5ZXJUb3BMZWZ0KTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZGVmNWQyZTdjMjA1NzAwMzFlMDM4MTZkYThhNjAwZDc4M2ZhNmUwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisjaW5jbHVkZSAiU2Ny
b2xsaW5nQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlTm9kZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBDQUxheWVyOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsK
KworY2xhc3MgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZU5v
ZGUgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJl
ZVN0aWNreU5vZGU+IGNyZWF0ZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKKwor
ICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKCk7CisKK3ByaXZhdGU6CisgICAg
U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7
CisKKyAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hh
bmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0
JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92
ZXJyaWRlOworCisgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3Jv
bGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBTdGlj
a3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgbV9jb25zdHJhaW50czsKKyAgICBSZXRhaW5Q
dHI8Q0FMYXllcj4gbV9sYXllcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZSwgaXNTdGlja3lOb2RlKCkpCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Mzc0ODRhYzMwOGNkYmY2M2I0
MmYxOWFkZDAyM2Q3M2I3MjAxNWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0KQEAgLTAsMCAr
MSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNjcm9s
bGluZ1RyZWVTdGlja3lOb2RlLmgiCisKKyNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisj
aW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuaCIK
KyNpbXBvcnQgIlNjcm9sbGluZ1RyZWUuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGUuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGUuaCIKKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0FMYXllci5oPgorI2ltcG9ydCA8d3RmL3RleHQv
VGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZT4gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNyZWF0ZShTY3JvbGxpbmdUcmVl
JiBzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJ
RCkpOworfQorCitTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkK
KyAgICA6IFNjcm9sbGluZ1RyZWVOb2RlKHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVUeXBl
OjpTdGlja3ksIG5vZGVJRCkKK3sKKyAgICBzY3JvbGxpbmdUcmVlLmZpeGVkT3JTdGlja3lOb2Rl
QWRkZWQoKTsKK30KKworU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6On5TY3JvbGxpbmdUcmVlU3Rp
Y2t5Tm9kZSgpCit7CisgICAgc2Nyb2xsaW5nVHJlZSgpLmZpeGVkT3JTdGlja3lOb2RlUmVtb3Zl
ZCgpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlOjpjb21taXRTdGF0ZUJlZm9y
ZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgc3RhdGVOb2RlKQoreworICAgIGNv
bnN0IFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZSYgc3RpY2t5U3RhdGVOb2RlID0gZG93bmNhc3Q8
U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlPihzdGF0ZU5vZGUpOworCisgICAgaWYgKHN0aWNreVN0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpMYXllcikpCisg
ICAgICAgIG1fbGF5ZXIgPSBzdGlja3lTdGF0ZU5vZGUubGF5ZXIoKTsKKworICAgIGlmIChzdGF0
ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZTo6Vmlld3Bv
cnRDb25zdHJhaW50cykpCisgICAgICAgIG1fY29uc3RyYWludHMgPSBzdGlja3lTdGF0ZU5vZGUu
dmlld3BvcnRDb25zdHJhaW50cygpOworfQorCituYW1lc3BhY2UgU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGVJbnRlcm5hbCB7CitzdGF0aWMgaW5saW5lIENHUG9pbnQgb3BlcmF0b3IqKENHUG9pbnQm
IGEsIGNvbnN0IENHU2l6ZSYgYikKK3sKKyAgICByZXR1cm4gQ0dQb2ludE1ha2UoYS54ICogYi53
aWR0aCwgYS55ICogYi5oZWlnaHQpOworfQorfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lO
b2RlOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVO
b2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29u
c3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlSW50ZXJuYWw7CisgICAgYm9vbCBhZGp1c3RTdGlja3lMYXll
ciA9IGZhbHNlOworICAgIEZsb2F0UmVjdCBjb25zdHJhaW5pbmdSZWN0OworCisgICAgaWYgKGlz
PFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KCpwYXJlbnQoKSkpIHsKKyAgICAg
ICAgY29uc3RyYWluaW5nUmVjdCA9IEZsb2F0UmVjdChkb3duY2FzdDxTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlPigqcGFyZW50KCkpLnNjcm9sbFBvc2l0aW9uKCksIG1fY29uc3Ry
YWludHMuY29uc3RyYWluaW5nUmVjdEF0TGFzdExheW91dCgpLnNpemUoKSk7CisgICAgICAgIGFk
anVzdFN0aWNreUxheWVyID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGlzPFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGU+KCpwYXJlbnQoKSkpIHsKKyAgICAgICAgY29uc3RyYWluaW5nUmVj
dCA9IGZpeGVkUG9zaXRpb25SZWN0OworICAgICAgICBhZGp1c3RTdGlja3lMYXllciA9IHRydWU7
CisgICAgfQorCisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCgpIDw8ICIgdXBkYXRlTGF5
ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZTogbmV3IHZpZXdwb3J0ICIgPDwgZml4ZWRQb3NpdGlvblJl
Y3QgPDwgIiBjb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0ICIgPDwgbV9jb25zdHJhaW50cy5j
b25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBsYXN0IGxheWVyIHBvcyAiIDw8IG1f
Y29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpIDw8ICIgYWRqdXN0U3RpY2t5
TGF5ZXIgIiA8PCBhZGp1c3RTdGlja3lMYXllcik7CisKKyAgICBGbG9hdFNpemUgZGVsdGFGb3JE
ZXNjZW5kYW50cyA9IGN1bXVsYXRpdmVEZWx0YTsKKworICAgIGlmIChhZGp1c3RTdGlja3lMYXll
cikgeworICAgICAgICBGbG9hdFBvaW50IGxheWVyUG9zaXRpb24gPSBtX2NvbnN0cmFpbnRzLmxh
eWVyUG9zaXRpb25Gb3JDb25zdHJhaW5pbmdSZWN0KGNvbnN0cmFpbmluZ1JlY3QpOworCisgICAg
ICAgIENHUmVjdCBsYXllckJvdW5kcyA9IFttX2xheWVyIGJvdW5kc107CisgICAgICAgIENHUG9p
bnQgYW5jaG9yUG9pbnQgPSBbbV9sYXllciBhbmNob3JQb2ludF07CisgICAgICAgIENHUG9pbnQg
bmV3UG9zaXRpb24gPSBsYXllclBvc2l0aW9uIC0gbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZz
ZXQoKSArIGFuY2hvclBvaW50ICogbGF5ZXJCb3VuZHMuc2l6ZTsKKyAgICAgICAgW21fbGF5ZXIg
c2V0UG9zaXRpb246bmV3UG9zaXRpb25dOworCisgICAgICAgIGRlbHRhRm9yRGVzY2VuZGFudHMg
PSBsYXllclBvc2l0aW9uIC0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0
KCkgKyBjdW11bGF0aXZlRGVsdGE7CisgICAgfQorCisgICAgaWYgKCFtX2NoaWxkcmVuKQorICAg
ICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCisgICAg
ICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBm
aXhlZFBvc2l0aW9uUmVjdCwgZGVsdGFGb3JEZXNjZW5kYW50cyk7Cit9CisKK3ZvaWQgU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBTY3JvbGxp
bmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvciBiZWhhdmlvcikgY29uc3QKK3sKKyAgICB0cyA8PCAi
c3RpY2t5IG5vZGUiOworCisgICAgU2Nyb2xsaW5nVHJlZU5vZGU6OmR1bXBQcm9wZXJ0aWVzKHRz
LCBiZWhhdmlvcik7CisgICAgdHMuZHVtcFByb3BlcnR5KCJzdGlja3kgY29uc3RyYWludHMiLCBt
X2NvbnN0cmFpbnRzKTsKKworICAgIGlmIChiZWhhdmlvciAmIFNjcm9sbGluZ1N0YXRlVHJlZUFz
VGV4dEJlaGF2aW9ySW5jbHVkZUxheWVyUG9zaXRpb25zKSB7CisgICAgICAgIEZsb2F0UmVjdCBs
YXllckJvdW5kcyA9IFttX2xheWVyIGJvdW5kc107CisgICAgICAgIEZsb2F0UG9pbnQgYW5jaG9y
UG9pbnQgPSBbbV9sYXllciBhbmNob3JQb2ludF07CisgICAgICAgIEZsb2F0UG9pbnQgcG9zaXRp
b24gPSBbbV9sYXllciBwb3NpdGlvbl07CisgICAgICAgIEZsb2F0UG9pbnQgbGF5ZXJUb3BMZWZ0
ID0gcG9zaXRpb24gLSB0b0Zsb2F0U2l6ZShhbmNob3JQb2ludCkgKiBsYXllckJvdW5kcy5zaXpl
KCkgKyBtX2NvbnN0cmFpbnRzLmFsaWdubWVudE9mZnNldCgpOworICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImxheWVyIHRvcCBsZWZ0IiwgbGF5ZXJUb3BMZWZ0KTsKKyAgICB9Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVGhy
ZWFkTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ro
cmVhZE1hYy5tbQppbmRleCA1NmIxY2RiOGIxNjFkMDkwYWZhODk4NTMyYWEyMGI2MWVhOWY5NWIw
Li42ZDJjZGEwOTQxMDVmNTY0NGQ4YzQ5NTMxNGJmYzQ3MTY1NWIxYjQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVGhyZWFkTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUaHJlYWRNYWMu
bW0KQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3Jv
bGxpbmdUaHJlYWQuaCIKIAotI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisjaWYgRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgJiYgUExBVEZPUk0oTUFDKQogCiAjaW5jbHVkZSA8bXV0ZXg+CiAK
QEAgLTcyLDQgKzcyLDQgQEAgdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OnRocmVhZFJ1bkxvb3BTb3Vy
Y2VDYWxsYmFjaygpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYg
UExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDk0MDcyOTY1MTkyMmY0YmE3NmJmYTQzZjAzNWJlNDg4N2RkNTNhNDAuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaAorKysgL2Rldi9udWxsCkBA
IC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpCi0KLSNpbmNsdWRlICJTY3JvbGxpbmdDb25zdHJhaW50cy5oIgotI2lu
Y2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgot
Ci1PQkpDX0NMQVNTIENBTGF5ZXI7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRml4
ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7Ci0KLWNsYXNzIFNjcm9sbGluZ1RyZWVGaXhl
ZE5vZGUgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZU5vZGUgewotcHVibGljOgotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZT4gY3JlYXRlKFNjcm9sbGlu
Z1RyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOwotCi0gICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZUZp
eGVkTm9kZSgpOwotCi1wcml2YXRlOgotICAgIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUoU2Nyb2xs
aW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7Ci0KLSAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3Jl
Q2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1
cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBj
aGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxv
YXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkdW1wUHJvcGVy
dGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikg
Y29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBt
X2NvbnN0cmFpbnRzOwotICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2xheWVyOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX1NDUk9MTElOR19O
T0RFKFNjcm9sbGluZ1RyZWVGaXhlZE5vZGUsIGlzRml4ZWROb2RlKCkpCi0KLSNlbmRpZiAvLyBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZGMyYzg5MTU2OTc2OWQzMWJhYjQzYmYzMDI3ZTZiOGQyYjRlMmI0
OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgiCi0KLSNpZiBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKQotCi0jaW1wb3J0ICJMb2dnaW5nLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdT
dGF0ZUZpeGVkTm9kZS5oIgotI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZS5oIgotI2ltcG9ydCA8UXVh
cnR6Q29yZS9DQUxheWVyLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotUmVmPFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU+IFNjcm9sbGlu
Z1RyZWVGaXhlZE5vZGU6OmNyZWF0ZShTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBTY3Jv
bGxpbmdOb2RlSUQgbm9kZUlEKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNjcm9sbGlu
Z1RyZWVGaXhlZE5vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKSk7Ci19Ci0KLVNjcm9sbGluZ1Ry
ZWVGaXhlZE5vZGU6OlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xs
aW5nVHJlZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKLSAgICA6IFNjcm9sbGluZ1RyZWVOb2Rl
KHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVUeXBlOjpGaXhlZCwgbm9kZUlEKQotewotICAg
IHNjcm9sbGluZ1RyZWUuZml4ZWRPclN0aWNreU5vZGVBZGRlZCgpOwotfQotCi1TY3JvbGxpbmdU
cmVlRml4ZWROb2RlOjp+U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSgpCi17Ci0gICAgc2Nyb2xsaW5n
VHJlZSgpLmZpeGVkT3JTdGlja3lOb2RlUmVtb3ZlZCgpOwotfQotCi12b2lkIFNjcm9sbGluZ1Ry
ZWVGaXhlZE5vZGU6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJiBzdGF0ZU5vZGUpCi17Ci0gICAgY29uc3QgU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUm
IGZpeGVkU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU+KHN0YXRl
Tm9kZSk7Ci0KLSAgICBpZiAoZml4ZWRTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQotICAgICAgICBtX2xheWVyID0gZml4ZWRTdGF0ZU5vZGUu
bGF5ZXIoKTsKLQotICAgIGlmIChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlRml4ZWROb2RlOjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKLSAgICAgICAgbV9jb25zdHJh
aW50cyA9IGZpeGVkU3RhdGVOb2RlLnZpZXdwb3J0Q29uc3RyYWludHMoKTsKLX0KLQotbmFtZXNw
YWNlIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGVJbnRlcm5hbCB7Ci1zdGF0aWMgaW5saW5lIENHUG9p
bnQgb3BlcmF0b3IqKENHUG9pbnQmIGEsIGNvbnN0IENHU2l6ZSYgYikKLXsKLSAgICByZXR1cm4g
Q0dQb2ludE1ha2UoYS54ICogYi53aWR0aCwgYS55ICogYi5oZWlnaHQpOwotfQotfQotCi12b2lk
IFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2Uo
Y29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZp
eGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUmIGN1bXVsYXRpdmVEZWx0YSkKLXsKLSAg
ICB1c2luZyBuYW1lc3BhY2UgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZUludGVybmFsOwotICAgIEZs
b2F0UG9pbnQgbGF5ZXJQb3NpdGlvbiA9IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkZvclZp
ZXdwb3J0UmVjdChmaXhlZFBvc2l0aW9uUmVjdCk7Ci0KLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Ny
b2xsaW5nLCBzdHJlYW0gPDwgIlNjcm9sbGluZ1RyZWVGaXhlZE5vZGUgIiA8PCBzY3JvbGxpbmdO
b2RlSUQoKSA8PCAiIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2U6IG5ldyB2aWV3cG9y
dCAiIDw8IGZpeGVkUG9zaXRpb25SZWN0IDw8ICIgdmlld3BvcnRSZWN0QXRMYXN0TGF5b3V0ICIg
PDwgbV9jb25zdHJhaW50cy52aWV3cG9ydFJlY3RBdExhc3RMYXlvdXQoKSA8PCAiIGxhc3QgbGF5
ZXIgcG9zICIgPDwgbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkgPDwg
IiBuZXcgb2Zmc2V0IGZyb20gdG9wICIgPDwgKGZpeGVkUG9zaXRpb25SZWN0LnkoKSAtIGxheWVy
UG9zaXRpb24ueSgpKSk7Ci0KLSAgICBsYXllclBvc2l0aW9uIC09IGN1bXVsYXRpdmVEZWx0YTsK
LQotICAgIENHUmVjdCBsYXllckJvdW5kcyA9IFttX2xheWVyIGJvdW5kc107Ci0gICAgQ0dQb2lu
dCBhbmNob3JQb2ludCA9IFttX2xheWVyIGFuY2hvclBvaW50XTsKLSAgICBDR1BvaW50IG5ld1Bv
c2l0aW9uID0gbGF5ZXJQb3NpdGlvbiAtIG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCkg
KyBhbmNob3JQb2ludCAqIGxheWVyQm91bmRzLnNpemU7Ci0KLSAgICBpZiAoaXNuYW4obmV3UG9z
aXRpb24ueCkgfHwgaXNuYW4obmV3UG9zaXRpb24ueSkpIHsKLSAgICAgICAgV1RGTG9nQWx3YXlz
KCJBdHRlbXB0IHRvIGNhbGwgW0NBTGF5ZXIgc2V0UG9zaXRpb25dIHdpdGggTmFOOiBuZXdQb3Np
dGlvbj0oJWYsICVmKSBsYXllclBvc2l0aW9uPSglZiwgJWYpIGFsaWdubWVudE9mZnNldD0oJWYs
ICVmKSIsCi0gICAgICAgICAgICBuZXdQb3NpdGlvbi54LCBuZXdQb3NpdGlvbi55LCBsYXllclBv
c2l0aW9uLngoKSwgbGF5ZXJQb3NpdGlvbi55KCksCi0gICAgICAgICAgICBtX2NvbnN0cmFpbnRz
LmFsaWdubWVudE9mZnNldCgpLndpZHRoKCksIG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0
KCkuaGVpZ2h0KCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIFttX2xheWVyIHNldFBvc2l0aW9uOm5ld1Bvc2l0aW9uXTsKLQot
ICAgIGlmICghbV9jaGlsZHJlbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRmxvYXRTaXplIG5l
d0RlbHRhID0gbGF5ZXJQb3NpdGlvbiAtIG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFz
dExheW91dCgpICsgY3VtdWxhdGl2ZURlbHRhOwotCi0gICAgZm9yIChhdXRvJiBjaGlsZCA6ICpt
X2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIG5ld0RlbHRhKTsKLX0KLQotdm9pZCBT
Y3JvbGxpbmdUcmVlRml4ZWROb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Ny
b2xsaW5nU3RhdGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0Ci17Ci0gICAgdHMg
PDwgImZpeGVkIG5vZGUiOwotICAgIFNjcm9sbGluZ1RyZWVOb2RlOjpkdW1wUHJvcGVydGllcyh0
cywgYmVoYXZpb3IpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiZml4ZWQgY29uc3RyYWludHMiLCBt
X2NvbnN0cmFpbnRzKTsKLSAgICAKLSAgICBpZiAoYmVoYXZpb3IgJiBTY3JvbGxpbmdTdGF0ZVRy
ZWVBc1RleHRCZWhhdmlvckluY2x1ZGVMYXllclBvc2l0aW9ucykgewotICAgICAgICBGbG9hdFJl
Y3QgbGF5ZXJCb3VuZHMgPSBbbV9sYXllciBib3VuZHNdOwotICAgICAgICBGbG9hdFBvaW50IGFu
Y2hvclBvaW50ID0gW21fbGF5ZXIgYW5jaG9yUG9pbnRdOwotICAgICAgICBGbG9hdFBvaW50IHBv
c2l0aW9uID0gW21fbGF5ZXIgcG9zaXRpb25dOwotICAgICAgICBGbG9hdFBvaW50IGxheWVyVG9w
TGVmdCA9IHBvc2l0aW9uIC0gdG9GbG9hdFNpemUoYW5jaG9yUG9pbnQpICogbGF5ZXJCb3VuZHMu
c2l6ZSgpICsgbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKTsKLSAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJsYXllciB0b3AgbGVmdCIsIGxheWVyVG9wTGVmdCk7Ci0gICAgfQotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKaW5kZXgg
ZDE0NDJjZDBjNzM0NDFkYzkyZjNiODRhZGM4ODRiMTUyYjgxYzM4NC4uYzRkODNmYmQzOWJmZGEx
ZTE4NzljNDM4MTUxYTEyZmVhMGU0ZjBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYy5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmgiCiAKLSNpZiBQTEFURk9STShNQUMpICYm
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykgJiYg
UExBVEZPUk0oTUFDKQogCiAjaW5jbHVkZSAiU2Nyb2xsQ29udHJvbGxlci5oIgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IDY4MjMxMzFl
YTEyYWUwZDViOTI5MjcwY2RhMGJiNTVmNmY2MzNkZjcuLmZkNjY2ZmQ3ZmE0OGQ0ZmZiOGNiYTk0
MmUyY2UzOWQ1ODA3ZDFiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTWFjLm1tCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaCIKIAotI2lmIFBM
QVRGT1JNKE1BQykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKyNpZiBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKSAmJiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBv
cnQgIlNjcm9sbGluZ1RyZWUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDJkZWY1ZDJlN2MyMDU3MDAzMWUwMzgxNmRhOGE2MDBkNzgzZmE2ZTAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotCi0jaW5jbHVkZSAiU2Nyb2xsaW5nQ29uc3RyYWlu
dHMuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdUcmVlTm9kZS5oIgotI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KLQotT0JKQ19DTEFTUyBDQUxheWVyOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKLQotY2xhc3MgU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGUgOiBwdWJsaWMgU2Nyb2xsaW5nVHJlZU5vZGUgewotcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+IGNy
ZWF0ZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKLQotICAgIHZpcnR1YWwgflNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlKCk7Ci0KLXByaXZhdGU6Ci0gICAgU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7Ci0KLSAgICB2b2lkIGNv
bW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9s
bGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9u
UmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOwotCi0gICAg
dm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVB
c1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBTdGlja3lQb3NpdGlvblZpZXdw
b3J0Q29uc3RyYWludHMgbV9jb25zdHJhaW50czsKLSAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9s
YXllcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19TQ1JPTExJTkdfTk9ERShTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSwgaXNTdGlja3lOb2Rl
KCkpCi0KLSNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1t
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lO
b2RlLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Mzc0ODRhYzMwOGNkYmY2M2I0
MmYxOWFkZDAyM2Q3M2I3MjAxNWQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEyOSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5oIgotCi0jaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLQotI2ltcG9ydCAiTG9nZ2luZy5o
IgotI2ltcG9ydCAiU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmgiCi0jaW1wb3J0ICJTY3JvbGxp
bmdUcmVlLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgiCi0j
aW1wb3J0ICJTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgiCi0jaW1wb3J0IDxR
dWFydHpDb3JlL0NBTGF5ZXIuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZWY8U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU+IFNjcm9s
bGluZ1RyZWVTdGlja3lOb2RlOjpjcmVhdGUoU2Nyb2xsaW5nVHJlZSYgc2Nyb2xsaW5nVHJlZSwg
U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTY3Jv
bGxpbmdUcmVlU3RpY2t5Tm9kZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpKTsKLX0KLQotU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGU6OlNjcm9sbGluZ1RyZWVTdGlja3lOb2RlKFNjcm9sbGluZ1RyZWUm
IHNjcm9sbGluZ1RyZWUsIFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCi0gICAgOiBTY3JvbGxpbmdU
cmVlTm9kZShzY3JvbGxpbmdUcmVlLCBTY3JvbGxpbmdOb2RlVHlwZTo6U3RpY2t5LCBub2RlSUQp
Ci17Ci0gICAgc2Nyb2xsaW5nVHJlZS5maXhlZE9yU3RpY2t5Tm9kZUFkZGVkKCk7Ci19Ci0KLVNj
cm9sbGluZ1RyZWVTdGlja3lOb2RlOjp+U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoKQotewotICAg
IHNjcm9sbGluZ1RyZWUoKS5maXhlZE9yU3RpY2t5Tm9kZVJlbW92ZWQoKTsKLX0KLQotdm9pZCBT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBT
Y3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKLXsKLSAgICBjb25zdCBTY3JvbGxpbmdTdGF0
ZVN0aWNreU5vZGUmIHN0aWNreVN0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU3Rp
Y2t5Tm9kZT4oc3RhdGVOb2RlKTsKLQotICAgIGlmIChzdGlja3lTdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlTm9kZTo6TGF5ZXIpKQotICAgICAgICBtX2xheWVyID0g
c3RpY2t5U3RhdGVOb2RlLmxheWVyKCk7Ci0KLSAgICBpZiAoc3RhdGVOb2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGU6OlZpZXdwb3J0Q29uc3RyYWludHMpKQot
ICAgICAgICBtX2NvbnN0cmFpbnRzID0gc3RpY2t5U3RhdGVOb2RlLnZpZXdwb3J0Q29uc3RyYWlu
dHMoKTsKLX0KLQotbmFtZXNwYWNlIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlSW50ZXJuYWwgewot
c3RhdGljIGlubGluZSBDR1BvaW50IG9wZXJhdG9yKihDR1BvaW50JiBhLCBjb25zdCBDR1NpemUm
IGIpCi17Ci0gICAgcmV0dXJuIENHUG9pbnRNYWtlKGEueCAqIGIud2lkdGgsIGEueSAqIGIuaGVp
Z2h0KTsKLX0KLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6dXBkYXRlTGF5ZXJz
QWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUs
IGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgY3Vt
dWxhdGl2ZURlbHRhKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZUludGVybmFsOwotICAgIGJvb2wgYWRqdXN0U3RpY2t5TGF5ZXIgPSBmYWxzZTsKLSAgICBG
bG9hdFJlY3QgY29uc3RyYWluaW5nUmVjdDsKLQotICAgIGlmIChpczxTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlPigqcGFyZW50KCkpKSB7Ci0gICAgICAgIGNvbnN0cmFpbmluZ1Jl
Y3QgPSBGbG9hdFJlY3QoZG93bmNhc3Q8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZT4oKnBhcmVudCgpKS5zY3JvbGxQb3NpdGlvbigpLCBtX2NvbnN0cmFpbnRzLmNvbnN0cmFpbmlu
Z1JlY3RBdExhc3RMYXlvdXQoKS5zaXplKCkpOwotICAgICAgICBhZGp1c3RTdGlja3lMYXllciA9
IHRydWU7Ci0gICAgfSBlbHNlIGlmIChpczxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
PigqcGFyZW50KCkpKSB7Ci0gICAgICAgIGNvbnN0cmFpbmluZ1JlY3QgPSBmaXhlZFBvc2l0aW9u
UmVjdDsKLSAgICAgICAgYWRqdXN0U3RpY2t5TGF5ZXIgPSB0cnVlOwotICAgIH0KLQotICAgIExP
R19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUgIiA8PCBzY3JvbGxpbmdOb2RlSUQoKSA8PCAiIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JD
aGFuZ2U6IG5ldyB2aWV3cG9ydCAiIDw8IGZpeGVkUG9zaXRpb25SZWN0IDw8ICIgY29uc3RyYWlu
aW5nUmVjdEF0TGFzdExheW91dCAiIDw8IG1fY29uc3RyYWludHMuY29uc3RyYWluaW5nUmVjdEF0
TGFzdExheW91dCgpIDw8ICIgbGFzdCBsYXllciBwb3MgIiA8PCBtX2NvbnN0cmFpbnRzLmxheWVy
UG9zaXRpb25BdExhc3RMYXlvdXQoKSA8PCAiIGFkanVzdFN0aWNreUxheWVyICIgPDwgYWRqdXN0
U3RpY2t5TGF5ZXIpOwotCi0gICAgRmxvYXRTaXplIGRlbHRhRm9yRGVzY2VuZGFudHMgPSBjdW11
bGF0aXZlRGVsdGE7Ci0KLSAgICBpZiAoYWRqdXN0U3RpY2t5TGF5ZXIpIHsKLSAgICAgICAgRmxv
YXRQb2ludCBsYXllclBvc2l0aW9uID0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uRm9yQ29u
c3RyYWluaW5nUmVjdChjb25zdHJhaW5pbmdSZWN0KTsKLQotICAgICAgICBDR1JlY3QgbGF5ZXJC
b3VuZHMgPSBbbV9sYXllciBib3VuZHNdOwotICAgICAgICBDR1BvaW50IGFuY2hvclBvaW50ID0g
W21fbGF5ZXIgYW5jaG9yUG9pbnRdOwotICAgICAgICBDR1BvaW50IG5ld1Bvc2l0aW9uID0gbGF5
ZXJQb3NpdGlvbiAtIG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCkgKyBhbmNob3JQb2lu
dCAqIGxheWVyQm91bmRzLnNpemU7Ci0gICAgICAgIFttX2xheWVyIHNldFBvc2l0aW9uOm5ld1Bv
c2l0aW9uXTsKLQotICAgICAgICBkZWx0YUZvckRlc2NlbmRhbnRzID0gbGF5ZXJQb3NpdGlvbiAt
IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpICsgY3VtdWxhdGl2ZURl
bHRhOwotICAgIH0KLQotICAgIGlmICghbV9jaGlsZHJlbikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgZm9yIChhdXRvJiBjaGlsZCA6ICptX2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRl
TGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3Qs
IGRlbHRhRm9yRGVzY2VuZGFudHMpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
OjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0
QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0Ci17Ci0gICAgdHMgPDwgInN0aWNreSBub2RlIjsKLQot
ICAgIFNjcm9sbGluZ1RyZWVOb2RlOjpkdW1wUHJvcGVydGllcyh0cywgYmVoYXZpb3IpOwotICAg
IHRzLmR1bXBQcm9wZXJ0eSgic3RpY2t5IGNvbnN0cmFpbnRzIiwgbV9jb25zdHJhaW50cyk7Ci0K
LSAgICBpZiAoYmVoYXZpb3IgJiBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvckluY2x1
ZGVMYXllclBvc2l0aW9ucykgewotICAgICAgICBGbG9hdFJlY3QgbGF5ZXJCb3VuZHMgPSBbbV9s
YXllciBib3VuZHNdOwotICAgICAgICBGbG9hdFBvaW50IGFuY2hvclBvaW50ID0gW21fbGF5ZXIg
YW5jaG9yUG9pbnRdOwotICAgICAgICBGbG9hdFBvaW50IHBvc2l0aW9uID0gW21fbGF5ZXIgcG9z
aXRpb25dOwotICAgICAgICBGbG9hdFBvaW50IGxheWVyVG9wTGVmdCA9IHBvc2l0aW9uIC0gdG9G
bG9hdFNpemUoYW5jaG9yUG9pbnQpICogbGF5ZXJCb3VuZHMuc2l6ZSgpICsgbV9jb25zdHJhaW50
cy5hbGlnbm1lbnRPZmZzZXQoKTsKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJsYXllciB0b3Ag
bGVmdCIsIGxheWVyVG9wTGVmdCk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEuaAppbmRleCA5NDExZWQyNjIxMmFlMTg1MGUyMjc3NGYzMTkzNmIw
NzNlZDdmOTVhLi43NDY2MWZkM2RlMjNiMmMwNjVmMWYyMDdjMDJiOTQwZWNjMTI3MGQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaApAQCAtMjUsNyArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAotI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorI2lmIFBMQVRGT1JN
KE1BQykKIAogI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYS5o
IgpAQCAtMTg2LDUgKzE4Niw0IEBAIHByaXZhdGU6CiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RFJBV0lOR19BUkVBKFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLCBEcmF3aW5nQXJlYVR5
cGVUaWxlZENvcmVBbmltYXRpb24pCiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbQppbmRleCBiNTkxNjA3NGNlMjIyMTMzNGQ2M2E5Yjg1MDA2NTUxOGQyODM2M2Vl
Li4zMjRkMDYzMTYyMzMyYjhkNGY2NjYyMTY3OWIwNTI3MTEyOTQ3OGMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmgiCiAK
LSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpZiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQg
IkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIK
QEAgLTk5OSw0ICs5OTksNCBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjps
YXllckZsdXNoVGhyb3R0bGluZ1RpbWVyRmlyZWQoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAotI2VuZGlmIC8vICFQTEFURk9STShJT1NfRkFNSUxZKQorI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykK
</data>

          </attachment>
      

    </bug>

</bugzilla>