<?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>234693</bug_id>
          
          <creation_ts>2021-12-26 11:00:10 -0800</creation_ts>
          <short_desc>Replace WebKit/CocoaColor.h with WebCore/ColorCocoa.h, not confusing at all</short_desc>
          <delta_ts>2021-12-30 18:35:31 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234757</see_also>
          <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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>kkinnunen</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1826884</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-26 11:00:10 -0800</bug_when>
    <thetext>Replace WebKit/CocoaColor.h with WebCore/ColorCocoa.h, not confusing at all</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826885</commentid>
    <comment_count>1</comment_count>
      <attachid>447979</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-26 11:01:19 -0800</bug_when>
    <thetext>Created attachment 447979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826886</commentid>
    <comment_count>2</comment_count>
      <attachid>447980</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-26 11:02:43 -0800</bug_when>
    <thetext>Created attachment 447980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826888</commentid>
    <comment_count>3</comment_count>
      <attachid>447982</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-26 11:15:08 -0800</bug_when>
    <thetext>Created attachment 447982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826895</commentid>
    <comment_count>4</comment_count>
      <attachid>447984</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-26 11:31:50 -0800</bug_when>
    <thetext>Created attachment 447984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826919</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-26 15:20:34 -0800</bug_when>
    <thetext>ChangeLog entry in Tools/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826926</commentid>
    <comment_count>6</comment_count>
      <attachid>447992</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-26 16:06:17 -0800</bug_when>
    <thetext>Created attachment 447992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826929</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-26 16:47:46 -0800</bug_when>
    <thetext>Committed r287452 (245587@main): &lt;https://commits.webkit.org/245587@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447992.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826930</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-26 16:48:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/86924033&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447979</attachid>
            <date>2021-12-26 11:01:19 -0800</date>
            <delta_ts>2021-12-26 11:02:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234693-20211226110118.patch</filename>
            <type>text/plain</type>
            <size>8773</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODc0NDYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIxLTEyLTI2ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFdlYktpdC9Db2NvYUNvbG9y
Lmggd2l0aCBXZWJDb3JlL0NvbG9yQ29jb2EuaCwgbm90IGNvbmZ1c2luZyBhdCBhbGwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDY5MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGRvbid0IG5lZWQg
Ym90aC4gVGhlIFdlYkNvcmUgb25lIGNhbiB3b3JrIGZvciBib3RoLgorCisgICAgICAgICogUGxh
dGZvcm0vY29jb2EvQ29jb2FDb2xvci5oOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9Db2Nv
YS9Bcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjp0eXBlRnJvbU9iamVjdCk6
CisgICAgICAgIChJUEM6OmVuY29kZUNvbG9ySW50ZXJuYWwpOgorICAgICAgICAoSVBDOjplbmNv
ZGVPYmplY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgdGhlbWVDb2xvcl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcg
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBzZXRVbmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3I6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdGhlbWVDb2xv
cl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcl0p
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29sb3JdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW06CisgICAgICAg
ICgtW19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgaW5pdFdpdGhDb2RlcjpdKToKKyAgICAgICAgKC1b
X1dLQXBwbGljYXRpb25NYW5pZmVzdCB0aGVtZUNvbG9yXSk6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9XS1NhZmVCcm93c2luZ1dhcm5pbmcubW06CisgICAgICAgIChjb2xvckZvckl0ZW0pOgorICAg
ICAgICAoLVtXS1NhZmVCcm93c2luZ0JveCBzZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6
XSk6CisgICAgICAgICgtW1dLU2FmZUJyb3dzaW5nV2FybmluZyBzaG93RGV0YWlsc0NsaWNrZWRd
KToKKyAgICAgICAgKC1bV0tTYWZlQnJvd3NpbmdUZXh0VmlldyBpbml0V2l0aEF0dHJpYnV0ZWRT
dHJpbmc6Zm9yV2FybmluZzpdKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpQREZQbHVnaW4pOgorCiAyMDIxLTEyLTI1ICBD
b21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkLCByZXZlcnRpbmcgcjI4NTA4OC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29j
b2EvQ29jb2FDb2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29j
b2EvQ29jb2FDb2xvci5oCShyZXZpc2lvbiAyODc0MzEpCisrKyBTb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL2NvY29hL0NvY29hQ29sb3IuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDM2ICswLDAgQEAKLS8q
Ci0qIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0q
Ci0qIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSogYXJlIG1ldDoKLSogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0qICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0q
Ci0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0qIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0qIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0qIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0qIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0qIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4KLQotI2lmIFVTRShBUFBLSVQpCi1PQkpDX0NM
QVNTIE5TQ29sb3I7Ci11c2luZyBDb2NvYUNvbG9yID0gTlNDb2xvcjsKLSNlbHNlCi1PQkpDX0NM
QVNTIFVJQ29sb3I7Ci11c2luZyBDb2NvYUNvbG9yID0gVUlDb2xvcjsKLSNlbmRpZgpJbmRleDog
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
cHBsaWNhdGlvbk1hbmlmZXN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5oCShyZXZpc2lv
biAyODc0MzEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2lu
Z1dhcm5pbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIkNvY29hQ29sb3IuaCIKICNp
bXBvcnQgIldLRm91bmRhdGlvbi5oIgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvckNvY29hLmg+CiAj
aW1wb3J0IDx2YXJpYW50PgogI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW1w
b3J0IDx3dGYvUmVmUHRyLmg+CkBAIC01NSwxMCArNTUsMTAgQEAgdXNpbmcgUmVjdFR5cGUgPSBD
R1JlY3Q7CiBAaW50ZXJmYWNlIFdLU2FmZUJyb3dzaW5nQm94IDogVmlld1R5cGUgewogQHBhY2th
Z2UKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmV0YWluUHRyPENvY29hQ29sb3I+IF9iYWNrZ3Jv
dW5kQ29sb3I7CisgICAgUmV0YWluUHRyPFdlYkNvcmU6OkNvY29hQ29sb3I+IF9iYWNrZ3JvdW5k
Q29sb3I7CiAjZW5kaWYKIH0KLS0gKHZvaWQpc2V0U2FmZUJyb3dzaW5nQmFja2dyb3VuZENvbG9y
OihDb2NvYUNvbG9yICopY29sb3I7CistICh2b2lkKXNldFNhZmVCcm93c2luZ0JhY2tncm91bmRD
b2xvcjooV2ViQ29yZTo6Q29jb2FDb2xvciAqKWNvbG9yOwogQGVuZAogCiAjaWYgUExBVEZPUk0o
TUFDKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdX
YXJuaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg3NDMxKQorKysgU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjAx
Niw3ICsyMDE2LDYgQEAKIAkJRjREQkMwQzEyNzZBQTZDQTAwMDFEMTY5IC8qIF9XS01vZGFsQ29u
dGFpbmVySW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNERCQzBDMDI3NkFBNkNBMDAwMUQxNjkgLyogX1dLTW9kYWxDb250YWluZXJJ
bmZvSW50ZXJuYWwuaCAqLzsgfTsKIAkJRjRFQjRBRkQyNjlDRDdGMzAwRDI5N0FFIC8qIE9TU3Rh
dGVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
RUI0QUZDMjY5Q0QyMzYwMEQyOTdBRSAvKiBPU1N0YXRlU1BJLmggKi87IH07CiAJCUY0RUM5NEUz
MjM1NkNDNTcwMDBCQjYxNCAvKiBBcHBsaWNhdGlvblNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUQwNEUyODIxRjdDNzNEMDA3Njc0
MUQgLyogQXBwbGljYXRpb25TZXJ2aWNlc1NQSS5oICovOyB9OwotCQlGNEZFMEEzQjI0NjMyQjYw
MDAyNjMxRTEgLyogQ29jb2FDb2xvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjRGRTBBM0EyNDYzMkIxMDAwMjYzMUUxIC8qIENvY29hQ29sb3IuaCAq
LzsgfTsKIAkJRjYxMTNFMjUxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVzZXJDb250ZW50VVJMUGF0
dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjYx
MTNFMjQxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oICovOyB9
OwogCQlGNjExM0UyOTEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2MTEzRTI3
MTI2Q0UxOUIwMDU3RDBBNyAvKiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY2MzQ0NDU2MTJBODg1Qzgw
MDA2MTJEOCAvKiBBUElTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjYzNDQ0NTUxMkE4ODVDODAwMDYxMkQ4IC8qIEFQSVNlY3Vy
aXR5T3JpZ2luLmggKi87IH07CkBAIC02NDQ3LDcgKzY0NDYsNiBAQAogCQlGNEVCNEFGQzI2OUNE
MjM2MDBEMjk3QUUgLyogT1NTdGF0ZVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPU1N0YXRlU1BJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RjU5QUQzMjA2NUE1QzkwMDZDQUE0NiAv
KiBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW07IHBh
dGggPSBpb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNEY1OUFENDIwNjVBNUNBMDA2Q0FBNDYgLyogV0tTZWxl
Y3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oOyBwYXRoID0gaW9zL2Zvcm1zL1dL
U2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlGNEZFMEEzQTI0NjMyQjEwMDAyNjMxRTEgLyogQ29jb2FDb2xvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb2NvYUNvbG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RkUwQTND
MjQ2MzU2NjcwMDI2MzFFMSAvKiBDb2NvYUZvbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29jb2FGb250
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2MTEzRTI0MTI2Q0UxODIwMDU3RDBB
NyAvKiBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY2MTEzRTI2MTI2Q0UxOUIwMDU3RDBBNyAvKiBXS1VzZXJDb250ZW50VVJMUGF0
dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1VzZXJDb250
ZW50VVJMUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MTY5LDcg
KzkxNjcsNiBAQAogCQk0NDUwQUVCRTFEQzNGQUFDMDA5OTQzRjIgLyogY29jb2EgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUY0RkUwQTNBMjQ2MzJCMTAw
MDI2MzFFMSAvKiBDb2NvYUNvbG9yLmggKi8sCiAJCQkJRjRGRTBBM0MyNDYzNTY2NzAwMjYzMUUx
IC8qIENvY29hRm9udC5oICovLAogCQkJCTQ0ODI3MzQ2MjQ1MjhGNjAwMEE5NTQ5MyAvKiBDb2Nv
YUltYWdlLmggKi8sCiAJCQkJQkNFMDkzNzYxNEZCMTI4QjAwMTEzOEQ5IC8qIExheWVySG9zdGlu
Z0NvbnRleHQuaCAqLywKQEAgLTEyODQwLDcgKzEyODM3LDYgQEAKIAkJCQk0NjU5RjI1RjI3NUZG
NkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNFNTc5QTYyNjM0ODM2NzAwRjVDNUU5IC8qIENHRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QjRCNDYwMjBCNTA0QUMwMEQ0QUQ3OSAv
KiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBDQ29uc3RhbnRzLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlGNEZFMEEzQjI0NjMyQjYwMDAyNjMxRTEgLyogQ29jb2FDb2xvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDQ4MjczNDcyNDUyOEY2MDAwQTk1NDkzIC8qIENvY29hSW1hZ2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUNFMTFBRDUyMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmlu
Zy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdCRUM0RTExOTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBs
ZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447980</attachid>
            <date>2021-12-26 11:02:43 -0800</date>
            <delta_ts>2021-12-26 11:15:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>colorcocoa.diff</filename>
            <type>text/plain</type>
            <size>16018</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzQ0
NikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIxLTEy
LTI2ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFdl
YktpdC9Db2NvYUNvbG9yLmggd2l0aCBXZWJDb3JlL0NvbG9yQ29jb2EuaCwgbm90IGNvbmZ1c2lu
ZyBhdCBhbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNDY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlIGRvbid0IG5lZWQgYm90aC4gVGhlIFdlYkNvcmUgb25lIGNhbiB3b3JrIGZvciBib3RoLgor
CisgICAgICAgICogUGxhdGZvcm0vY29jb2EvQ29jb2FDb2xvci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tOgorICAgICAgICAoSVBDOjp0
eXBlRnJvbU9iamVjdCk6CisgICAgICAgIChJUEM6OmVuY29kZUNvbG9ySW50ZXJuYWwpOgorICAg
ICAgICAoSVBDOjplbmNvZGVPYmplY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgdGhlbWVDb2xvcl0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfdGhlbWVDb2xvcl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3BhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvcl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NhbXBsZWRQYWdlVG9wQ29s
b3JdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZl
c3QubW06CisgICAgICAgICgtW19XS0FwcGxpY2F0aW9uTWFuaWZlc3QgaW5pdFdpdGhDb2Rlcjpd
KToKKyAgICAgICAgKC1bX1dLQXBwbGljYXRpb25NYW5pZmVzdCB0aGVtZUNvbG9yXSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcubW06CisgICAgICAgIChjb2xv
ckZvckl0ZW0pOgorICAgICAgICAoLVtXS1NhZmVCcm93c2luZ0JveCBzZXRTYWZlQnJvd3NpbmdC
YWNrZ3JvdW5kQ29sb3I6XSk6CisgICAgICAgICgtW1dLU2FmZUJyb3dzaW5nV2FybmluZyBzaG93
RGV0YWlsc0NsaWNrZWRdKToKKyAgICAgICAgKC1bV0tTYWZlQnJvd3NpbmdUZXh0VmlldyBpbml0
V2l0aEF0dHJpYnV0ZWRTdHJpbmc6Zm9yV2FybmluZzpdKToKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpQREZQbHVnaW4pOgor
CiAyMDIxLTEyLTI1ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4NTA4OC4KSW5kZXg6IFBsYXRmb3JtL2Nv
Y29hL0NvY29hQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQbGF0Zm9ybS9jb2NvYS9Db2NvYUNvbG9y
LmgJKHJldmlzaW9uIDI4NzQzMSkKKysrIFBsYXRmb3JtL2NvY29hL0NvY29hQ29sb3IuaAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0qIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSogYXJlIG1ldDoKLSogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0qICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0qCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0qIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0qIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0qIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0q
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0qIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvQ29tcGlsZXIu
aD4KLQotI2lmIFVTRShBUFBLSVQpCi1PQkpDX0NMQVNTIE5TQ29sb3I7Ci11c2luZyBDb2NvYUNv
bG9yID0gTlNDb2xvcjsKLSNlbHNlCi1PQkpDX0NMQVNTIFVJQ29sb3I7Ci11c2luZyBDb2NvYUNv
bG9yID0gVUlDb2xvcjsKLSNlbmRpZgpJbmRleDogU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJz
Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0JKHJldmlzaW9uIDI4NzQzMSkKKysrIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJzQ0YuaCIKLSNpbXBvcnQgIkNvY29hQ29sb3IuaCIK
ICNpbXBvcnQgIkNvY29hRm9udC5oIgogI2ltcG9ydCAiQ29yZVRleHRIZWxwZXJzLmgiCiAjaW1w
b3J0IDxDb3JlVGV4dC9DVEZvbnQuaD4KQEAgLTE3Miw3ICsxNzEsNyBAQAogICAgIC8vIFNwZWNp
ZmljIGNsYXNzZXMgaGFuZGxlZC4KICAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0Fy
cmF5IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBOU1R5cGU6OkFycmF5OwotICAgIGlmIChbb2Jq
ZWN0IGlzS2luZE9mQ2xhc3M6W0NvY29hQ29sb3IgY2xhc3NdXSkKKyAgICBpZiAoW29iamVjdCBp
c0tpbmRPZkNsYXNzOltXZWJDb3JlOjpDb2NvYUNvbG9yIGNsYXNzXV0pCiAgICAgICAgIHJldHVy
biBOU1R5cGU6OkNvbG9yOwogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TRGF0YSBj
bGFzc11dKQogICAgICAgICByZXR1cm4gTlNUeXBlOjpEYXRhOwpAQCAtMjYxLDcgKzI2MCw3IEBA
CiAKICNwcmFnbWEgbWFyayAtIE5TQ29sb3IgLyBVSUNvbG9yCiAKLXN0YXRpYyBpbmxpbmUgdm9p
ZCBlbmNvZGVDb2xvckludGVybmFsKEVuY29kZXImIGVuY29kZXIsIENvY29hQ29sb3IgKmNvbG9y
KQorc3RhdGljIGlubGluZSB2b2lkIGVuY29kZUNvbG9ySW50ZXJuYWwoRW5jb2RlciYgZW5jb2Rl
ciwgV2ViQ29yZTo6Q29jb2FDb2xvciAqY29sb3IpCiB7CiAgICAgZW5jb2RlciA8PCBjb2xvckZy
b21Db2NvYUNvbG9yKGNvbG9yKTsKIH0KQEAgLTQ5MSw3ICs0OTAsNyBAQAogICAgICAgICBlbmNv
ZGVBcnJheUludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PE5TQXJyYXkgKj4ob2JqZWN0KSk7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIE5TVHlwZTo6Q29sb3I6Ci0gICAgICAgIGVuY29k
ZUNvbG9ySW50ZXJuYWwoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Q29jb2FDb2xvciAqPihvYmplY3Qp
KTsKKyAgICAgICAgZW5jb2RlQ29sb3JJbnRlcm5hbChlbmNvZGVyLCBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpDb2NvYUNvbG9yICo+KG9iamVjdCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBO
U1R5cGU6OkRpY3Rpb25hcnk6CiAgICAgICAgIGVuY29kZURpY3Rpb25hcnlJbnRlcm5hbChlbmNv
ZGVyLCBzdGF0aWNfY2FzdDxOU0RpY3Rpb25hcnkgKj4ob2JqZWN0KSk7CkluZGV4OiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjg3NDMxKQorKysgVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbXBvcnQg
IkFQSUZyYW1lVHJlZU5vZGUuaCIKICNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCiAj
aW1wb3J0ICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbXBvcnQgIkNvY29hQ29sb3Iu
aCIKICNpbXBvcnQgIkNvY29hSW1hZ2UuaCIKICNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2Fs
bENoZWNrZXIuaCIKICNpbXBvcnQgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMu
aCIKQEAgLTE3NzYsMTcgKzE3NzUsMTcgQEAKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9h
ZEZpbGUoVVJMLmFic29sdXRlU3RyaW5nLCByZWFkQWNjZXNzVVJMLmFic29sdXRlU3RyaW5nLCBp
c0FwcEluaXRpYXRlZCkpOwogfQogCi0tIChDb2NvYUNvbG9yICopdGhlbWVDb2xvcgorLSAoV2Vi
Q29yZTo6Q29jb2FDb2xvciAqKXRoZW1lQ29sb3IKIHsKICAgICByZXR1cm4gY29jb2FDb2xvck9y
TmlsKF9wYWdlLT50aGVtZUNvbG9yKCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKLS0gKENvY29hQ29s
b3IgKil1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKKy0gKFdlYkNvcmU6OkNvY29hQ29sb3IgKil1
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKIHsKICAgICByZXR1cm4gY29jb2FDb2xvcihfcGFnZS0+
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKLS0gKHZvaWQp
c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOihDb2NvYUNvbG9yICopdW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT3ZlcnJpZGUKKy0gKHZvaWQpc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOihX
ZWJDb3JlOjpDb2NvYUNvbG9yICopdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUKIHsK
ICAgICBfcGFnZS0+c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUoV2ViQ29yZTo6
cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeSh1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPdmVycmlk
ZS5DR0NvbG9yKSk7CiB9CkBAIC0zMzI2LDE4ICszMzI1LDE4IEBACiB9CiAKIC8vIEZJWE1FOiBS
ZW1vdmUgb2xkIGAtW1dLV2ViVmlldyBfdGhlbWVDb2xvcl1gIFNQSSA8cmRhcjovLzc2NjYyNjQ0
PgotLSAoQ29jb2FDb2xvciAqKV90aGVtZUNvbG9yCistIChXZWJDb3JlOjpDb2NvYUNvbG9yICop
X3RoZW1lQ29sb3IKIHsKICAgICByZXR1cm4gW3NlbGYgdGhlbWVDb2xvcl07CiB9CiAKIC8vIEZJ
WE1FOiBSZW1vdmUgb2xkIGAtW1dLV2ViVmlldyBfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9y
XWAgU1BJIDxyZGFyOi8vNzc3ODk3MzI+Ci0tIChDb2NvYUNvbG9yICopX3BhZ2VFeHRlbmRlZEJh
Y2tncm91bmRDb2xvcgorLSAoV2ViQ29yZTo6Q29jb2FDb2xvciAqKV9wYWdlRXh0ZW5kZWRCYWNr
Z3JvdW5kQ29sb3IKIHsKICAgICByZXR1cm4gY29jb2FDb2xvck9yTmlsKF9wYWdlLT5wYWdlRXh0
ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAotLSAoQ29jb2FDb2xv
ciAqKV9zYW1wbGVkUGFnZVRvcENvbG9yCistIChXZWJDb3JlOjpDb2NvYUNvbG9yICopX3NhbXBs
ZWRQYWdlVG9wQ29sb3IKIHsKICAgICByZXR1cm4gY29jb2FDb2xvck9yTmlsKF9wYWdlLT5zYW1w
bGVkUGFnZVRvcENvbG9yKCkpLmF1dG9yZWxlYXNlKCk7CiB9CkluZGV4OiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCShyZXZpc2lvbiAyODc0MzEpCisr
KyBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiX1dL
QXBwbGljYXRpb25NYW5pZmVzdEludGVybmFsLmgiCiAKLSNpbXBvcnQgIkNvY29hQ29sb3IuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25NYW5pZmVzdC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9BcHBsaWNhdGlvbk1hbmlmZXN0UGFyc2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+
CkBAIC0xNTYsNyArMTU1LDcgQEAKICAgICBVUkwgc2NvcGVVUkwgPSBbYURlY29kZXIgZGVjb2Rl
T2JqZWN0T2ZDbGFzczpbTlNVUkwgY2xhc3NdIGZvcktleTpAInNjb3BlIl07CiAgICAgTlNJbnRl
Z2VyIGRpc3BsYXkgPSBbYURlY29kZXIgZGVjb2RlSW50ZWdlckZvcktleTpAImRpc3BsYXkiXTsK
ICAgICBVUkwgc3RhcnRVUkwgPSBbYURlY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbTlNVUkwg
Y2xhc3NdIGZvcktleTpAInN0YXJ0X3VybCJdOwotICAgIENvY29hQ29sb3IgKnRoZW1lQ29sb3Ig
PSBbYURlY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbQ29jb2FDb2xvciBjbGFzc10gZm9yS2V5
OkAidGhlbWVfY29sb3IiXTsKKyAgICBXZWJDb3JlOjpDb2NvYUNvbG9yICp0aGVtZUNvbG9yID0g
W2FEZWNvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W1dlYkNvcmU6OkNvY29hQ29sb3IgY2xhc3Nd
IGZvcktleTpAInRoZW1lX2NvbG9yIl07CiAgICAgTlNBcnJheTxfV0tBcHBsaWNhdGlvbk1hbmlm
ZXN0SWNvbiAqPiAqaWNvbnMgPSBbYURlY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1Nl
dCBzZXRXaXRoQXJyYXk6QFtbTlNBcnJheSBjbGFzc10sIFtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0
SWNvbiBjbGFzc11dXSBmb3JLZXk6QCJpY29ucyJdOwogCiAgICAgV2ViQ29yZTo6QXBwbGljYXRp
b25NYW5pZmVzdCBjb3JlQXBwbGljYXRpb25NYW5pZmVzdCB7CkBAIC0yMzgsNyArMjM3LDcgQEAK
ICAgICByZXR1cm4gX2FwcGxpY2F0aW9uTWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS5z
dGFydFVSTDsKIH0KIAotLSAoQ29jb2FDb2xvciAqKXRoZW1lQ29sb3IKKy0gKFdlYkNvcmU6OkNv
Y29hQ29sb3IgKil0aGVtZUNvbG9yCiB7CiAgICAgcmV0dXJuIGNvY29hQ29sb3IoX2FwcGxpY2F0
aW9uTWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS50aGVtZUNvbG9yKS5hdXRvcmVsZWFz
ZSgpOwogfQpAQCAtMzEzLDcgKzMxMiw3IEBACiAgICAgcmV0dXJuIG5pbDsKIH0KIAotLSAoQ29j
b2FDb2xvciAqKXRoZW1lQ29sb3IKKy0gKFdlYkNvcmU6OkNvY29hQ29sb3IgKil0aGVtZUNvbG9y
CiB7CiAgICAgcmV0dXJuIG5pbDsKIH0KSW5kZXg6IFVJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93
c2luZ1dhcm5pbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBVSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3Np
bmdXYXJuaW5nLmgJKHJldmlzaW9uIDI4NzQzMSkKKysrIFVJUHJvY2Vzcy9Db2NvYS9XS1NhZmVC
cm93c2luZ1dhcm5pbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbXBvcnQgIkNvY29hQ29sb3Iu
aCIKICNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvckNvY29h
Lmg+CiAjaW1wb3J0IDx2YXJpYW50PgogI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CkBAIC01NSwxMCArNTUsMTAgQEAKIEBpbnRlcmZhY2Ug
V0tTYWZlQnJvd3NpbmdCb3ggOiBWaWV3VHlwZSB7CiBAcGFja2FnZQogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICBSZXRhaW5QdHI8Q29jb2FDb2xvcj4gX2JhY2tncm91bmRDb2xvcjsKKyAgICBSZXRh
aW5QdHI8V2ViQ29yZTo6Q29jb2FDb2xvcj4gX2JhY2tncm91bmRDb2xvcjsKICNlbmRpZgogfQot
LSAodm9pZClzZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6KENvY29hQ29sb3IgKiljb2xv
cjsKKy0gKHZvaWQpc2V0U2FmZUJyb3dzaW5nQmFja2dyb3VuZENvbG9yOihXZWJDb3JlOjpDb2Nv
YUNvbG9yICopY29sb3I7CiBAZW5kCiAKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBVSVByb2Nl
c3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFVJUHJvY2Vz
cy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcubW0JKHJldmlzaW9uIDI4NzQzMSkKKysrIFVJ
UHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEwMywxMiArMTAzLDEyIEBACiAjZW5kaWYKIH0KIAotc3RhdGljIENvY29hQ29sb3IgKmNvbG9y
Rm9ySXRlbShXYXJuaW5nSXRlbSBpdGVtLCBWaWV3VHlwZSAqd2FybmluZykKK3N0YXRpYyBXZWJD
b3JlOjpDb2NvYUNvbG9yICpjb2xvckZvckl0ZW0oV2FybmluZ0l0ZW0gaXRlbSwgVmlld1R5cGUg
Kndhcm5pbmcpCiB7CiAgICAgQVNTRVJUKFt3YXJuaW5nIGlzS2luZE9mQ2xhc3M6W1dLU2FmZUJy
b3dzaW5nV2FybmluZyBjbGFzc11dKTsKICNpZiBQTEFURk9STShNQUMpCiAKLSAgICBhdXRvIGNv
bG9yTmFtZWQgPSBbXSAoTlNTdHJpbmcgKm5hbWUpIC0+IENvY29hQ29sb3IgKiB7CisgICAgYXV0
byBjb2xvck5hbWVkID0gW10gKE5TU3RyaW5nICpuYW1lKSAtPiBXZWJDb3JlOjpDb2NvYUNvbG9y
ICogewogI2lmIEhBVkUoU0FGRV9CUk9XU0lORykKICAgICAgICAgcmV0dXJuIFtOU0NvbG9yIGNv
bG9yTmFtZWQ6bmFtZSBidW5kbGU6W05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29t
LmFwcGxlLldlYktpdCJdXTsKICNlbHNlCkBAIC0yNjIsNyArMjYyLDcgQEAKIAogQGltcGxlbWVu
dGF0aW9uIFdLU2FmZUJyb3dzaW5nQm94CiAKLS0gKHZvaWQpc2V0U2FmZUJyb3dzaW5nQmFja2dy
b3VuZENvbG9yOihDb2NvYUNvbG9yICopY29sb3IKKy0gKHZvaWQpc2V0U2FmZUJyb3dzaW5nQmFj
a2dyb3VuZENvbG9yOihXZWJDb3JlOjpDb2NvYUNvbG9yICopY29sb3IKIHsKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOwpAQCAtNDM2LDcgKzQzNiw3IEBA
CiAjZW5kaWYKIAogICAgIGF1dG8gbGluZSA9IGFkb3B0TlMoW1dLU2FmZUJyb3dzaW5nQm94IG5l
d10pOwotICAgIFtsaW5lIHNldFNhZmVCcm93c2luZ0JhY2tncm91bmRDb2xvcjpbQ29jb2FDb2xv
ciBsaWdodEdyYXlDb2xvcl1dOworICAgIFtsaW5lIHNldFNhZmVCcm93c2luZ0JhY2tncm91bmRD
b2xvcjpbV2ViQ29yZTo6Q29jb2FDb2xvciBsaWdodEdyYXlDb2xvcl1dOwogICAgIGZvciAoVmll
d1R5cGUgKnZpZXcgaW4gQFtkZXRhaWxzLmdldCgpLCBib3R0b20uZ2V0KCksIGxpbmUuZ2V0KCld
KQogICAgICAgICB2aWV3LnRyYW5zbGF0ZXNBdXRvcmVzaXppbmdNYXNrSW50b0NvbnN0cmFpbnRz
ID0gTk87CiAKQEAgLTU3Myw3ICs1NzMsNyBAQAogICAgIHNlbGYtPl93YXJuaW5nID0gd2Fybmlu
ZzsKICAgICBzZWxmLmRlbGVnYXRlID0gd2FybmluZzsKIAotICAgIENvY29hQ29sb3IgKmZvcmVn
cm91bmRDb2xvciA9IGNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbTo6TWVzc2FnZVRleHQsIHdhcm5p
bmcpOworICAgIGF1dG8gKmZvcmVncm91bmRDb2xvciA9IGNvbG9yRm9ySXRlbShXYXJuaW5nSXRl
bTo6TWVzc2FnZVRleHQsIHdhcm5pbmcpOwogICAgIGF1dG8gc3RyaW5nID0gYWRvcHROUyhbYXR0
cmlidXRlZFN0cmluZyBtdXRhYmxlQ29weV0pOwogICAgIFtzdHJpbmcgYWRkQXR0cmlidXRlczpA
eyBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgOiBmb3JlZ3JvdW5kQ29sb3IgfSByYW5n
ZTpOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pXTsKICAgICBbc2VsZiBzZXRCYWNrZ3Jv
dW5kQ29sb3I6Y29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpCb3hCYWNrZ3JvdW5kLCB3YXJuaW5n
KV07CkluZGV4OiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg3NDMxKQorKysg
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIwMTYs
NyArMjAxNiw2IEBACiAJCUY0REJDMEMxMjc2QUE2Q0EwMDAxRDE2OSAvKiBfV0tNb2RhbENvbnRh
aW5lckluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjREQkMwQzAyNzZBQTZDQTAwMDFEMTY5IC8qIF9XS01vZGFsQ29udGFpbmVySW5m
b0ludGVybmFsLmggKi87IH07CiAJCUY0RUI0QUZEMjY5Q0Q3RjMwMEQyOTdBRSAvKiBPU1N0YXRl
U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEVC
NEFGQzI2OUNEMjM2MDBEMjk3QUUgLyogT1NTdGF0ZVNQSS5oICovOyB9OwogCQlGNEVDOTRFMzIz
NTZDQzU3MDAwQkI2MTQgLyogQXBwbGljYXRpb25TZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlEMDRFMjgyMUY3QzczRDAwNzY3NDFE
IC8qIEFwcGxpY2F0aW9uU2VydmljZXNTUEkuaCAqLzsgfTsKLQkJRjRGRTBBM0IyNDYzMkI2MDAw
MjYzMUUxIC8qIENvY29hQ29sb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0RkUwQTNBMjQ2MzJCMTAwMDI2MzFFMSAvKiBDb2NvYUNvbG9yLmggKi87
IH07CiAJCUY2MTEzRTI1MTI2Q0UxODIwMDU3RDBBNyAvKiBBUElVc2VyQ29udGVudFVSTFBhdHRl
cm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY2MTEz
RTI0MTI2Q0UxODIwMDU3RDBBNyAvKiBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgfTsK
IAkJRjYxMTNFMjkxMjZDRTE5QjAwNTdEMEE3IC8qIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNjExM0UyNzEy
NkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNjM0NDQ1NjEyQTg4NUM4MDAw
NjEyRDggLyogQVBJU2VjdXJpdHlPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY2MzQ0NDU1MTJBODg1QzgwMDA2MTJEOCAvKiBBUElTZWN1cml0
eU9yaWdpbi5oICovOyB9OwpAQCAtNjQ0Nyw3ICs2NDQ2LDYgQEAKIAkJRjRFQjRBRkMyNjlDRDIz
NjAwRDI5N0FFIC8qIE9TU3RhdGVTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT1NTdGF0ZVNQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEY1OUFEMzIwNjVBNUM5MDA2Q0FBNDYgLyog
V0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBuYW1lID0gV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tOyBwYXRo
ID0gaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRGNTlBRDQyMDY1QTVDQTAwNkNBQTQ2IC8qIFdLU2VsZWN0
TWVudUxpc3RWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS1Nl
bGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRjRGRTBBM0EyNDYzMkIxMDAwMjYzMUUxIC8qIENvY29hQ29sb3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ29jb2FDb2xvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEZFMEEzQzI0
NjM1NjY3MDAyNjMxRTEgLyogQ29jb2FGb250LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvY29hRm9udC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNjExM0UyNDEyNkNFMTgyMDA1N0QwQTcg
LyogQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGNjExM0UyNjEyNkNFMTlCMDA1N0QwQTcgLyogV0tVc2VyQ29udGVudFVSTFBhdHRl
cm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tVc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTE2OSw3ICs5
MTY3LDYgQEAKIAkJNDQ1MEFFQkUxREMzRkFBQzAwOTk0M0YyIC8qIGNvY29hICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlGNEZFMEEzQTI0NjMyQjEwMDAy
NjMxRTEgLyogQ29jb2FDb2xvci5oICovLAogCQkJCUY0RkUwQTNDMjQ2MzU2NjcwMDI2MzFFMSAv
KiBDb2NvYUZvbnQuaCAqLywKIAkJCQk0NDgyNzM0NjI0NTI4RjYwMDBBOTU0OTMgLyogQ29jb2FJ
bWFnZS5oICovLAogCQkJCUJDRTA5Mzc2MTRGQjEyOEIwMDExMzhEOSAvKiBMYXllckhvc3RpbmdD
b250ZXh0LmggKi8sCkBAIC0xMjg0MCw3ICsxMjgzNyw2IEBACiAJCQkJNDY1OUYyNUYyNzVGRjZC
MjAwQkJCMzY5IC8qIENhcHRpdmVQb3J0YWxNb2RlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRTU3OUE2MjYzNDgzNjcwMEY1QzVFOSAvKiBDR0Rpc3BsYXlMaXN0SW1hZ2VCdWZmZXJC
YWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I0QjQ2MDIwQjUwNEFDMDBENEFENzkgLyog
Q2xpZW50Q2VydGlmaWNhdGVBdXRoZW50aWNhdGlvblhQQ0NvbnN0YW50cy5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJRjRGRTBBM0IyNDYzMkI2MDAwMjYzMUUxIC8qIENvY29hQ29sb3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ0ODI3MzQ3MjQ1MjhGNjAwMEE5NTQ5MyAvKiBDb2NvYUltYWdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRTExQUQ1MjFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTM3QkVDNEUxMTk0OTE0ODYwMDhCNDI4NiAvKiBDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFdlYlByb2Nlc3Mv
UGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCShyZXZpc2lvbiAyODc0MzEpCisrKyBXZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lm
IEVOQUJMRShQREZLSVRfUExVR0lOKQogCiAjaW1wb3J0ICJBcmd1bWVudENvZGVycy5oIgotI2lt
cG9ydCAiQ29jb2FDb2xvci5oIgogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgogI2ltcG9ydCAi
RnJhbWVJbmZvRGF0YS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtNjIsNiArNjEsNyBAQAog
I2ltcG9ydCA8V2ViQ29yZS9DU1NQcm9wZXJ0eU5hbWVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0No
cm9tZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xvci5oPgorI2ltcG9ydCA8V2ViQ29yZS9Db2xv
ckNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yU2VyaWFsaXphdGlvbi5oPgogI2ltcG9y
dCA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGljdGlvbmFyeUxvb2t1cC5o
PgpAQCAtNjU2LDcgKzY1Niw3IEBACiAgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWUuY29y
ZUZyYW1lKCktPmRvY3VtZW50KCk7CiAKICAgICAgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxl
bS83NTMzMjk0OD4gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gUERGS2l0IGluc3RlYWQg
b2YgaGFyZGNvZGluZyBpdAotICAgICAgICBkb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQoKS0+c2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShXZWJDb3JlOjpDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwg
V2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvckhUTUwoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JH
QkFMb3NzeShbQ29jb2FDb2xvciBncmF5Q29sb3JdLkNHQ29sb3IpKSk7CisgICAgICAgIGRvY3Vt
ZW50LT5ib2R5T3JGcmFtZXNldCgpLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KFdlYkNvcmU6OkNT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBXZWJDb3JlOjpzZXJpYWxpemF0aW9uRm9ySFRNTChX
ZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFtXZWJDb3JlOjpDb2NvYUNvbG9yIGdy
YXlDb2xvcl0uQ0dDb2xvcikpKTsKICAgICB9CiAKICAgICBpZiAoc3VwcG9ydHNGb3JtcygpKSB7
Cg==
</data>
<flag name="review"
          id="473763"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447982</attachid>
            <date>2021-12-26 11:15:08 -0800</date>
            <delta_ts>2021-12-26 11:40:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>colorcocoa.diff</filename>
            <type>text/plain</type>
            <size>17107</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODc0NDYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIxLTEyLTI2ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFdlYktpdC9Db2NvYUNvbG9y
Lmggd2l0aCBXZWJDb3JlL0NvbG9yQ29jb2EuaCwgbm90IGNvbmZ1c2luZyBhdCBhbGwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDY5MworCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBXZSBkb24ndCBuZWVkIGJv
dGguIFRoZSBXZWJDb3JlIG9uZSBjYW4gd29yayBmb3IgYm90aC4KKworICAgICAgICAqIFBsYXRm
b3JtL2NvY29hL0NvY29hQ29sb3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
QXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6dHlwZUZyb21PYmplY3QpOgor
ICAgICAgICAoSVBDOjplbmNvZGVDb2xvckludGVybmFsKToKKyAgICAgICAgKElQQzo6ZW5jb2Rl
T2JqZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHRoZW1lQ29sb3JdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvcl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0VW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3RoZW1lQ29sb3Jd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tOgorICAgICAgICAo
LVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW19X
S0FwcGxpY2F0aW9uTWFuaWZlc3QgdGhlbWVDb2xvcl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tOgorICAgICAgICAoY29sb3JGb3JJdGVtKToKKyAgICAg
ICAgKC1bV0tTYWZlQnJvd3NpbmdCb3ggc2V0U2FmZUJyb3dzaW5nQmFja2dyb3VuZENvbG9yOl0p
OgorICAgICAgICAoLVtXS1NhZmVCcm93c2luZ1dhcm5pbmcgc2hvd0RldGFpbHNDbGlja2VkXSk6
CisgICAgICAgICgtW1dLU2FmZUJyb3dzaW5nVGV4dFZpZXcgaW5pdFdpdGhBdHRyaWJ1dGVkU3Ry
aW5nOmZvcldhcm5pbmc6XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luKToKKwogMjAyMS0xMi0yNSAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyODUwODguCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29h
L0NvY29hQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29h
L0NvY29hQ29sb3IuaAkocmV2aXNpb24gMjg3NDQ2KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9Db2NvYUNvbG9yLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNiArMCwwIEBACi0vKgot
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKgot
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0qIGFyZSBtZXQ6Ci0qIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKgot
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0qIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0qIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0qIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0qIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0qIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+Ci0KLSNpZiBVU0UoQVBQS0lUKQotT0JKQ19DTEFT
UyBOU0NvbG9yOwotdXNpbmcgQ29jb2FDb2xvciA9IE5TQ29sb3I7Ci0jZWxzZQotT0JKQ19DTEFT
UyBVSUNvbG9yOwotdXNpbmcgQ29jb2FDb2xvciA9IFVJQ29sb3I7Ci0jZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQko
cmV2aXNpb24gMjg3NDQ2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRD
b2RlcnNDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lmIFBMQVRG
T1JNKENPQ09BKQogCiAjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCi0jaW1wb3J0ICJDb2Nv
YUNvbG9yLmgiCiAjaW1wb3J0ICJDb2NvYUZvbnQuaCIKICNpbXBvcnQgIkNvcmVUZXh0SGVscGVy
cy5oIgogI2ltcG9ydCA8Q29yZVRleHQvQ1RGb250Lmg+CkBAIC0xNzIsNyArMTcxLDcgQEAgc3Rh
dGljIE5TVHlwZSB0eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCiAgICAgLy8gU3BlY2lmaWMgY2xh
c3NlcyBoYW5kbGVkLgogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xh
c3NdXSkKICAgICAgICAgcmV0dXJuIE5TVHlwZTo6QXJyYXk7Ci0gICAgaWYgKFtvYmplY3QgaXNL
aW5kT2ZDbGFzczpbQ29jb2FDb2xvciBjbGFzc11dKQorICAgIGlmIChbb2JqZWN0IGlzS2luZE9m
Q2xhc3M6W1dlYkNvcmU6OkNvY29hQ29sb3IgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIE5TVHlw
ZTo6Q29sb3I7CiAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0p
CiAgICAgICAgIHJldHVybiBOU1R5cGU6OkRhdGE7CkBAIC0yNjEsNyArMjYwLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlQXJyYXlJbnRlcm5hCiAKICNwcmFn
bWEgbWFyayAtIE5TQ29sb3IgLyBVSUNvbG9yCiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVD
b2xvckludGVybmFsKEVuY29kZXImIGVuY29kZXIsIENvY29hQ29sb3IgKmNvbG9yKQorc3RhdGlj
IGlubGluZSB2b2lkIGVuY29kZUNvbG9ySW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgV2ViQ29y
ZTo6Q29jb2FDb2xvciAqY29sb3IpCiB7CiAgICAgZW5jb2RlciA8PCBjb2xvckZyb21Db2NvYUNv
bG9yKGNvbG9yKTsKIH0KQEAgLTQ5MSw3ICs0OTAsNyBAQCB2b2lkIGVuY29kZU9iamVjdChFbmNv
ZGVyJiBlbmNvZGVyLCBpZCBvYmplY3QpCiAgICAgICAgIGVuY29kZUFycmF5SW50ZXJuYWwoZW5j
b2Rlciwgc3RhdGljX2Nhc3Q8TlNBcnJheSAqPihvYmplY3QpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgTlNUeXBlOjpDb2xvcjoKLSAgICAgICAgZW5jb2RlQ29sb3JJbnRlcm5hbChlbmNv
ZGVyLCBzdGF0aWNfY2FzdDxDb2NvYUNvbG9yICo+KG9iamVjdCkpOworICAgICAgICBlbmNvZGVD
b2xvckludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvY29hQ29sb3IgKj4o
b2JqZWN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIE5TVHlwZTo6RGljdGlvbmFyeToK
ICAgICAgICAgZW5jb2RlRGljdGlvbmFyeUludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PE5T
RGljdGlvbmFyeSAqPihvYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjg3NDQ2KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNiBAQAogI2ltcG9ydCAiQVBJRnJhbWVUcmVlTm9kZS5oIgogI2ltcG9ydCAiQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgotI2ltcG9ydCAiQ29jb2FDb2xvci5oIgogI2ltcG9ydCAiQ29jb2FJbWFnZS5oIgogI2ltcG9y
dCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiQ29udGVudEFzU3Ry
aW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgpAQCAtMTc3NiwxNyArMTc3NSwxNyBAQCBzdGF0aWMg
X1dLU2VsZWN0aW9uQXR0cmlidXRlcyBzZWxlY3Rpb25BdHRyaWJ1dGVzKGNvbnMKICAgICByZXR1
cm4gd3JhcHBlcihfcGFnZS0+bG9hZEZpbGUoVVJMLmFic29sdXRlU3RyaW5nLCByZWFkQWNjZXNz
VVJMLmFic29sdXRlU3RyaW5nLCBpc0FwcEluaXRpYXRlZCkpOwogfQogCi0tIChDb2NvYUNvbG9y
ICopdGhlbWVDb2xvcgorLSAoV2ViQ29yZTo6Q29jb2FDb2xvciAqKXRoZW1lQ29sb3IKIHsKICAg
ICByZXR1cm4gY29jb2FDb2xvck9yTmlsKF9wYWdlLT50aGVtZUNvbG9yKCkpLmF1dG9yZWxlYXNl
KCk7CiB9CiAKLS0gKENvY29hQ29sb3IgKil1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKKy0gKFdl
YkNvcmU6OkNvY29hQ29sb3IgKil1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKIHsKICAgICByZXR1
cm4gY29jb2FDb2xvcihfcGFnZS0+dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkpLmF1dG9yZWxl
YXNlKCk7CiB9CiAKLS0gKHZvaWQpc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOihDb2NvYUNv
bG9yICopdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUKKy0gKHZvaWQpc2V0VW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yOihXZWJDb3JlOjpDb2NvYUNvbG9yICopdW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT3ZlcnJpZGUKIHsKICAgICBfcGFnZS0+c2V0VW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGUoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeSh1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JPdmVycmlkZS5DR0NvbG9yKSk7CiB9CkBAIC0zMzI2LDE4ICszMzI1LDE4
IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6RmluZE9wdGlvbnM+IHRvRmluZE9w
dAogfQogCiAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3RoZW1lQ29sb3JdYCBT
UEkgPHJkYXI6Ly83NjY2MjY0ND4KLS0gKENvY29hQ29sb3IgKilfdGhlbWVDb2xvcgorLSAoV2Vi
Q29yZTo6Q29jb2FDb2xvciAqKV90aGVtZUNvbG9yCiB7CiAgICAgcmV0dXJuIFtzZWxmIHRoZW1l
Q29sb3JdOwogfQogCiAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRl
bmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSA8cmRhcjovLzc3Nzg5NzMyPgotLSAoQ29jb2FDb2xv
ciAqKV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IKKy0gKFdlYkNvcmU6OkNvY29hQ29sb3Ig
KilfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yCiB7CiAgICAgcmV0dXJuIGNvY29hQ29sb3JP
ck5pbChfcGFnZS0+cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKLS0gKENvY29hQ29sb3IgKilfc2FtcGxlZFBhZ2VUb3BDb2xvcgorLSAoV2ViQ29yZTo6
Q29jb2FDb2xvciAqKV9zYW1wbGVkUGFnZVRvcENvbG9yCiB7CiAgICAgcmV0dXJuIGNvY29hQ29s
b3JPck5pbChfcGFnZS0+c2FtcGxlZFBhZ2VUb3BDb2xvcigpKS5hdXRvcmVsZWFzZSgpOwogfQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFu
aWZlc3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0JKHJldmlzaW9uIDI4NzQ0NikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
Il9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oIgogCi0jaW1wb3J0ICJDb2NvYUNvbG9y
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9uTWFuaWZlc3QuaD4KICNpbXBvcnQgPFdl
YkNvcmUvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xv
ci5oPgpAQCAtMTU2LDcgKzE1NSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFw
cGxpY2F0aW9uTWFuaWZlc3Q6OkljbwogICAgIFVSTCBzY29wZVVSTCA9IFthRGVjb2RlciBkZWNv
ZGVPYmplY3RPZkNsYXNzOltOU1VSTCBjbGFzc10gZm9yS2V5OkAic2NvcGUiXTsKICAgICBOU0lu
dGVnZXIgZGlzcGxheSA9IFthRGVjb2RlciBkZWNvZGVJbnRlZ2VyRm9yS2V5OkAiZGlzcGxheSJd
OwogICAgIFVSTCBzdGFydFVSTCA9IFthRGVjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltOU1VS
TCBjbGFzc10gZm9yS2V5OkAic3RhcnRfdXJsIl07Ci0gICAgQ29jb2FDb2xvciAqdGhlbWVDb2xv
ciA9IFthRGVjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltDb2NvYUNvbG9yIGNsYXNzXSBmb3JL
ZXk6QCJ0aGVtZV9jb2xvciJdOworICAgIFdlYkNvcmU6OkNvY29hQ29sb3IgKnRoZW1lQ29sb3Ig
PSBbYURlY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbV2ViQ29yZTo6Q29jb2FDb2xvciBjbGFz
c10gZm9yS2V5OkAidGhlbWVfY29sb3IiXTsKICAgICBOU0FycmF5PF9XS0FwcGxpY2F0aW9uTWFu
aWZlc3RJY29uICo+ICppY29ucyA9IFthRGVjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05T
U2V0IHNldFdpdGhBcnJheTpAW1tOU0FycmF5IGNsYXNzXSwgW19XS0FwcGxpY2F0aW9uTWFuaWZl
c3RJY29uIGNsYXNzXV1dIGZvcktleTpAImljb25zIl07CiAKICAgICBXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0IGNvcmVBcHBsaWNhdGlvbk1hbmlmZXN0IHsKQEAgLTIzOCw3ICsyMzcsNyBA
QCBzdGF0aWMgTlNTdHJpbmcgKm51bGxhYmxlTlNTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmIHMK
ICAgICByZXR1cm4gX2FwcGxpY2F0aW9uTWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS5z
dGFydFVSTDsKIH0KIAotLSAoQ29jb2FDb2xvciAqKXRoZW1lQ29sb3IKKy0gKFdlYkNvcmU6OkNv
Y29hQ29sb3IgKil0aGVtZUNvbG9yCiB7CiAgICAgcmV0dXJuIGNvY29hQ29sb3IoX2FwcGxpY2F0
aW9uTWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS50aGVtZUNvbG9yKS5hdXRvcmVsZWFz
ZSgpOwogfQpAQCAtMzEzLDcgKzMxMiw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbnVsbGFibGVOU1N0
cmluZyhjb25zdCBXVEY6OlN0cmluZyYgcwogICAgIHJldHVybiBuaWw7CiB9CiAKLS0gKENvY29h
Q29sb3IgKil0aGVtZUNvbG9yCistIChXZWJDb3JlOjpDb2NvYUNvbG9yICopdGhlbWVDb2xvcgog
ewogICAgIHJldHVybiBuaWw7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XS1NhZmVCcm93c2luZ1dhcm5pbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcuaAkocmV2aXNpb24gMjg3NDQ2KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJDb2NvYUNvbG9yLmgiCiAjaW1wb3J0ICJXS0Zv
dW5kYXRpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3JDb2NvYS5oPgogI2ltcG9ydCA8dmFy
aWFudD4KICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL1Jl
ZlB0ci5oPgpAQCAtNTUsMTAgKzU1LDEwIEBAIHVzaW5nIFJlY3RUeXBlID0gQ0dSZWN0OwogQGlu
dGVyZmFjZSBXS1NhZmVCcm93c2luZ0JveCA6IFZpZXdUeXBlIHsKIEBwYWNrYWdlCiAjaWYgUExB
VEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxDb2NvYUNvbG9yPiBfYmFja2dyb3VuZENvbG9yOwor
ICAgIFJldGFpblB0cjxXZWJDb3JlOjpDb2NvYUNvbG9yPiBfYmFja2dyb3VuZENvbG9yOwogI2Vu
ZGlmCiB9Ci0tICh2b2lkKXNldFNhZmVCcm93c2luZ0JhY2tncm91bmRDb2xvcjooQ29jb2FDb2xv
ciAqKWNvbG9yOworLSAodm9pZClzZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6KFdlYkNv
cmU6OkNvY29hQ29sb3IgKiljb2xvcjsKIEBlbmQKIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2lu
Z1dhcm5pbmcubW0JKHJldmlzaW9uIDI4NzQ0NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAzLDEy
ICsxMDMsMTIgQEAgc3RhdGljIENvY29hRm9udCAqZm9udE9mU2l6ZShXYXJuaW5nVGV4dFNpemUg
c2l6ZSkKICNlbmRpZgogfQogCi1zdGF0aWMgQ29jb2FDb2xvciAqY29sb3JGb3JJdGVtKFdhcm5p
bmdJdGVtIGl0ZW0sIFZpZXdUeXBlICp3YXJuaW5nKQorc3RhdGljIFdlYkNvcmU6OkNvY29hQ29s
b3IgKmNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbSBpdGVtLCBWaWV3VHlwZSAqd2FybmluZykKIHsK
ICAgICBBU1NFUlQoW3dhcm5pbmcgaXNLaW5kT2ZDbGFzczpbV0tTYWZlQnJvd3NpbmdXYXJuaW5n
IGNsYXNzXV0pOwogI2lmIFBMQVRGT1JNKE1BQykKIAotICAgIGF1dG8gY29sb3JOYW1lZCA9IFtd
IChOU1N0cmluZyAqbmFtZSkgLT4gQ29jb2FDb2xvciAqIHsKKyAgICBhdXRvIGNvbG9yTmFtZWQg
PSBbXSAoTlNTdHJpbmcgKm5hbWUpIC0+IFdlYkNvcmU6OkNvY29hQ29sb3IgKiB7CiAjaWYgSEFW
RShTQUZFX0JST1dTSU5HKQogICAgICAgICByZXR1cm4gW05TQ29sb3IgY29sb3JOYW1lZDpuYW1l
IGJ1bmRsZTpbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViS2l0
Il1dOwogI2Vsc2UKQEAgLTI2Miw3ICsyNjIsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFZpZXdUeXBl
PiBtYWtlTGFiZWwoTlNBdHRyaWJ1dGVkU3RyaW4KIAogQGltcGxlbWVudGF0aW9uIFdLU2FmZUJy
b3dzaW5nQm94CiAKLS0gKHZvaWQpc2V0U2FmZUJyb3dzaW5nQmFja2dyb3VuZENvbG9yOihDb2Nv
YUNvbG9yICopY29sb3IKKy0gKHZvaWQpc2V0U2FmZUJyb3dzaW5nQmFja2dyb3VuZENvbG9yOihX
ZWJDb3JlOjpDb2NvYUNvbG9yICopY29sb3IKIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgX2Jh
Y2tncm91bmRDb2xvciA9IGNvbG9yOwpAQCAtNDM2LDcgKzQzNiw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8Vmlld1R5cGU+IG1ha2VMYWJlbChOU0F0dHJpYnV0ZWRTdHJpbgogI2VuZGlmCiAKICAgICBh
dXRvIGxpbmUgPSBhZG9wdE5TKFtXS1NhZmVCcm93c2luZ0JveCBuZXddKTsKLSAgICBbbGluZSBz
ZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgbGlnaHRHcmF5Q29sb3Jd
XTsKKyAgICBbbGluZSBzZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6W1dlYkNvcmU6OkNv
Y29hQ29sb3IgbGlnaHRHcmF5Q29sb3JdXTsKICAgICBmb3IgKFZpZXdUeXBlICp2aWV3IGluIEBb
ZGV0YWlscy5nZXQoKSwgYm90dG9tLmdldCgpLCBsaW5lLmdldCgpXSkKICAgICAgICAgdmlldy50
cmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50cyA9IE5POwogCkBAIC01NzMs
NyArNTczLDcgQEAgc3RhdGljIFJldGFpblB0cjxWaWV3VHlwZT4gbWFrZUxhYmVsKE5TQXR0cmli
dXRlZFN0cmluCiAgICAgc2VsZi0+X3dhcm5pbmcgPSB3YXJuaW5nOwogICAgIHNlbGYuZGVsZWdh
dGUgPSB3YXJuaW5nOwogCi0gICAgQ29jb2FDb2xvciAqZm9yZWdyb3VuZENvbG9yID0gY29sb3JG
b3JJdGVtKFdhcm5pbmdJdGVtOjpNZXNzYWdlVGV4dCwgd2FybmluZyk7CisgICAgYXV0byAqZm9y
ZWdyb3VuZENvbG9yID0gY29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpNZXNzYWdlVGV4dCwgd2Fy
bmluZyk7CiAgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFthdHRyaWJ1dGVkU3RyaW5nIG11dGFi
bGVDb3B5XSk7CiAgICAgW3N0cmluZyBhZGRBdHRyaWJ1dGVzOkB7IE5TRm9yZWdyb3VuZENvbG9y
QXR0cmlidXRlTmFtZSA6IGZvcmVncm91bmRDb2xvciB9IHJhbmdlOk5TTWFrZVJhbmdlKDAsIFtz
dHJpbmcgbGVuZ3RoXSldOwogICAgIFtzZWxmIHNldEJhY2tncm91bmRDb2xvcjpjb2xvckZvckl0
ZW0oV2FybmluZ0l0ZW06OkJveEJhY2tncm91bmQsIHdhcm5pbmcpXTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg3
NDQ2KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjAxNiw3ICsyMDE2LDYgQEAKIAkJRjREQkMwQzEyNzZBQTZDQTAw
MDFEMTY5IC8qIF9XS01vZGFsQ29udGFpbmVySW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNERCQzBDMDI3NkFBNkNBMDAwMUQxNjkg
LyogX1dLTW9kYWxDb250YWluZXJJbmZvSW50ZXJuYWwuaCAqLzsgfTsKIAkJRjRFQjRBRkQyNjlD
RDdGMzAwRDI5N0FFIC8qIE9TU3RhdGVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0RUI0QUZDMjY5Q0QyMzYwMEQyOTdBRSAvKiBPU1N0YXRlU1BJ
LmggKi87IH07CiAJCUY0RUM5NEUzMjM1NkNDNTcwMDBCQjYxNCAvKiBBcHBsaWNhdGlvblNlcnZp
Y2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
OUQwNEUyODIxRjdDNzNEMDA3Njc0MUQgLyogQXBwbGljYXRpb25TZXJ2aWNlc1NQSS5oICovOyB9
OwotCQlGNEZFMEEzQjI0NjMyQjYwMDAyNjMxRTEgLyogQ29jb2FDb2xvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGRTBBM0EyNDYzMkIxMDAwMjYz
MUUxIC8qIENvY29hQ29sb3IuaCAqLzsgfTsKIAkJRjYxMTNFMjUxMjZDRTE4MjAwNTdEMEE3IC8q
IEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjYxMTNFMjQxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVzZXJDb250
ZW50VVJMUGF0dGVybi5oICovOyB9OwogCQlGNjExM0UyOTEyNkNFMTlCMDA1N0QwQTcgLyogV0tV
c2VyQ29udGVudFVSTFBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY2MTEzRTI3MTI2Q0UxOUIwMDU3RDBBNyAvKiBXS1VzZXJDb250ZW50VVJM
UGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUY2MzQ0NDU2MTJBODg1QzgwMDA2MTJEOCAvKiBBUElTZWN1cml0eU9yaWdpbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjYzNDQ0NTUxMkE4ODVD
ODAwMDYxMkQ4IC8qIEFQSVNlY3VyaXR5T3JpZ2luLmggKi87IH07CkBAIC02NDQ3LDcgKzY0NDYs
NiBAQAogCQlGNEVCNEFGQzI2OUNEMjM2MDBEMjk3QUUgLyogT1NTdGF0ZVNQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBPU1N0YXRlU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RjU5
QUQzMjA2NUE1QzkwMDZDQUE0NiAvKiBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1NlbGVjdE1lbnVMaXN0
Vmlld0NvbnRyb2xsZXIubW07IHBhdGggPSBpb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdD
b250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEY1OUFENDIwNjVB
NUNBMDA2Q0FBNDYgLyogV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5o
OyBwYXRoID0gaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNEZFMEEzQTI0NjMyQjEwMDAyNjMxRTEgLyogQ29j
b2FDb2xvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2NvYUNvbG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0RkUwQTNDMjQ2MzU2NjcwMDI2MzFFMSAvKiBDb2NvYUZvbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29jb2FGb250Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2
MTEzRTI0MTI2Q0UxODIwMDU3RDBBNyAvKiBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2MTEzRTI2MTI2Q0UxOUIwMDU3RDBBNyAv
KiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05MTY5LDcgKzkxNjcsNiBAQAogCQk0NDUwQUVCRTFEQzNGQUFDMDA5OTQz
RjIgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAot
CQkJCUY0RkUwQTNBMjQ2MzJCMTAwMDI2MzFFMSAvKiBDb2NvYUNvbG9yLmggKi8sCiAJCQkJRjRG
RTBBM0MyNDYzNTY2NzAwMjYzMUUxIC8qIENvY29hRm9udC5oICovLAogCQkJCTQ0ODI3MzQ2MjQ1
MjhGNjAwMEE5NTQ5MyAvKiBDb2NvYUltYWdlLmggKi8sCiAJCQkJQkNFMDkzNzYxNEZCMTI4QjAw
MTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQuaCAqLywKQEAgLTEyODQwLDcgKzEyODM3LDYg
QEAKIAkJCQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNl
cnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNTc5QTYyNjM0ODM2NzAwRjVDNUU5IC8qIENH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QjRC
NDYwMjBCNTA0QUMwMEQ0QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBD
Q29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKLQkJCQlGNEZFMEEzQjI0NjMyQjYwMDAyNjMxRTEg
LyogQ29jb2FDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ4MjczNDcyNDUyOEY2MDAwQTk1
NDkzIC8qIENvY29hSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTFBRDUyMUNCQzQ4MkYw
MDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdCRUM0RTExOTQ5
MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCShyZXZpc2lvbiAyODc0NDYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2
IEBACiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCiAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJz
LmgiCi0jaW1wb3J0ICJDb2NvYUNvbG9yLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW1wb3J0ICJGcmFtZUluZm9EYXRhLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC02Miw2ICs2
MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvQ2hyb21lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+CisjaW1wb3J0IDxXZWJD
b3JlL0NvbG9yQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJpYWxpemF0aW9uLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0N1cnNvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5
TG9va3VwLmg+CkBAIC02NTYsNyArNjU2LDcgQEAgaW5saW5lIFBERlBsdWdpbjo6UERGUGx1Z2lu
KFdlYkZyYW1lJiBmcmFtZSwgSFRNTFBsdWdJCiAgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gZnJh
bWUuY29yZUZyYW1lKCktPmRvY3VtZW50KCk7CiAKICAgICAgICAgLy8gRklYTUU6IDxyZGFyOi8v
cHJvYmxlbS83NTMzMjk0OD4gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gUERGS2l0IGlu
c3RlYWQgb2YgaGFyZGNvZGluZyBpdAotICAgICAgICBkb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQo
KS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShXZWJDb3JlOjpDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvciwgV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvckhUTUwoV2ViQ29yZTo6cm91bmRBbmRDbGFt
cFRvU1JHQkFMb3NzeShbQ29jb2FDb2xvciBncmF5Q29sb3JdLkNHQ29sb3IpKSk7CisgICAgICAg
IGRvY3VtZW50LT5ib2R5T3JGcmFtZXNldCgpLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KFdlYkNv
cmU6OkNTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBXZWJDb3JlOjpzZXJpYWxpemF0aW9uRm9y
SFRNTChXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFtXZWJDb3JlOjpDb2NvYUNv
bG9yIGdyYXlDb2xvcl0uQ0dDb2xvcikpKTsKICAgICB9CiAKICAgICBpZiAoc3VwcG9ydHNGb3Jt
cygpKSB7Cg==
</data>
<flag name="commit-queue"
          id="473768"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447984</attachid>
            <date>2021-12-26 11:31:50 -0800</date>
            <delta_ts>2021-12-26 16:06:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>colorcocoa.diff</filename>
            <type>text/plain</type>
            <size>24780</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODc0NDYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIxLTEyLTI2ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFdlYktpdC9Db2NvYUNvbG9y
Lmggd2l0aCBXZWJDb3JlL0NvbG9yQ29jb2EuaCwgbm90IGNvbmZ1c2luZyBhdCBhbGwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDY5MworCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBXZSBkb24ndCBuZWVkIGJv
dGguIFRoZSBXZWJDb3JlIG9uZSBjYW4gd29yayBmb3IgYm90aC4KKworICAgICAgICAqIFBsYXRm
b3JtL2NvY29hL0NvY29hQ29sb3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
QXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6dHlwZUZyb21PYmplY3QpOgor
ICAgICAgICAoSVBDOjplbmNvZGVDb2xvckludGVybmFsKToKKyAgICAgICAgKElQQzo6ZW5jb2Rl
T2JqZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHRoZW1lQ29sb3JdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvcl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0VW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3RoZW1lQ29sb3Jd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tOgorICAgICAgICAo
LVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW19X
S0FwcGxpY2F0aW9uTWFuaWZlc3QgdGhlbWVDb2xvcl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tOgorICAgICAgICAoY29sb3JGb3JJdGVtKToKKyAgICAg
ICAgKC1bV0tTYWZlQnJvd3NpbmdCb3ggc2V0U2FmZUJyb3dzaW5nQmFja2dyb3VuZENvbG9yOl0p
OgorICAgICAgICAoLVtXS1NhZmVCcm93c2luZ1dhcm5pbmcgc2hvd0RldGFpbHNDbGlja2VkXSk6
CisgICAgICAgICgtW1dLU2FmZUJyb3dzaW5nVGV4dFZpZXcgaW5pdFdpdGhBdHRyaWJ1dGVkU3Ry
aW5nOmZvcldhcm5pbmc6XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luKToKKwogMjAyMS0xMi0yNSAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyODUwODguCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29h
L0NvY29hQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29h
L0NvY29hQ29sb3IuaAkocmV2aXNpb24gMjg3NDQ2KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9Db2NvYUNvbG9yLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNiArMCwwIEBACi0vKgot
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKgot
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0qIGFyZSBtZXQ6Ci0qIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKgot
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0qIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0qIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0qIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0qIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0qIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+Ci0KLSNpZiBVU0UoQVBQS0lUKQotT0JKQ19DTEFT
UyBOU0NvbG9yOwotdXNpbmcgQ29jb2FDb2xvciA9IE5TQ29sb3I7Ci0jZWxzZQotT0JKQ19DTEFT
UyBVSUNvbG9yOwotdXNpbmcgQ29jb2FDb2xvciA9IFVJQ29sb3I7Ci0jZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQko
cmV2aXNpb24gMjg3NDQ2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRD
b2RlcnNDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lmIFBMQVRG
T1JNKENPQ09BKQogCiAjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCi0jaW1wb3J0ICJDb2Nv
YUNvbG9yLmgiCiAjaW1wb3J0ICJDb2NvYUZvbnQuaCIKICNpbXBvcnQgIkNvcmVUZXh0SGVscGVy
cy5oIgogI2ltcG9ydCA8Q29yZVRleHQvQ1RGb250Lmg+CkBAIC0xNzIsNyArMTcxLDcgQEAgc3Rh
dGljIE5TVHlwZSB0eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCiAgICAgLy8gU3BlY2lmaWMgY2xh
c3NlcyBoYW5kbGVkLgogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xh
c3NdXSkKICAgICAgICAgcmV0dXJuIE5TVHlwZTo6QXJyYXk7Ci0gICAgaWYgKFtvYmplY3QgaXNL
aW5kT2ZDbGFzczpbQ29jb2FDb2xvciBjbGFzc11dKQorICAgIGlmIChbb2JqZWN0IGlzS2luZE9m
Q2xhc3M6W1dlYkNvcmU6OkNvY29hQ29sb3IgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIE5TVHlw
ZTo6Q29sb3I7CiAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0p
CiAgICAgICAgIHJldHVybiBOU1R5cGU6OkRhdGE7CkBAIC0yNjEsNyArMjYwLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlQXJyYXlJbnRlcm5hCiAKICNwcmFn
bWEgbWFyayAtIE5TQ29sb3IgLyBVSUNvbG9yCiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVD
b2xvckludGVybmFsKEVuY29kZXImIGVuY29kZXIsIENvY29hQ29sb3IgKmNvbG9yKQorc3RhdGlj
IGlubGluZSB2b2lkIGVuY29kZUNvbG9ySW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgV2ViQ29y
ZTo6Q29jb2FDb2xvciAqY29sb3IpCiB7CiAgICAgZW5jb2RlciA8PCBjb2xvckZyb21Db2NvYUNv
bG9yKGNvbG9yKTsKIH0KQEAgLTQ5MSw3ICs0OTAsNyBAQCB2b2lkIGVuY29kZU9iamVjdChFbmNv
ZGVyJiBlbmNvZGVyLCBpZCBvYmplY3QpCiAgICAgICAgIGVuY29kZUFycmF5SW50ZXJuYWwoZW5j
b2Rlciwgc3RhdGljX2Nhc3Q8TlNBcnJheSAqPihvYmplY3QpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgTlNUeXBlOjpDb2xvcjoKLSAgICAgICAgZW5jb2RlQ29sb3JJbnRlcm5hbChlbmNv
ZGVyLCBzdGF0aWNfY2FzdDxDb2NvYUNvbG9yICo+KG9iamVjdCkpOworICAgICAgICBlbmNvZGVD
b2xvckludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvY29hQ29sb3IgKj4o
b2JqZWN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIE5TVHlwZTo6RGljdGlvbmFyeToK
ICAgICAgICAgZW5jb2RlRGljdGlvbmFyeUludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PE5T
RGljdGlvbmFyeSAqPihvYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjg3NDQ2KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNiBAQAogI2ltcG9ydCAiQVBJRnJhbWVUcmVlTm9kZS5oIgogI2ltcG9ydCAiQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgotI2ltcG9ydCAiQ29jb2FDb2xvci5oIgogI2ltcG9ydCAiQ29jb2FJbWFnZS5oIgogI2ltcG9y
dCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiQ29udGVudEFzU3Ry
aW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgpAQCAtMTc3NiwxNyArMTc3NSwxNyBAQCBzdGF0aWMg
X1dLU2VsZWN0aW9uQXR0cmlidXRlcyBzZWxlY3Rpb25BdHRyaWJ1dGVzKGNvbnMKICAgICByZXR1
cm4gd3JhcHBlcihfcGFnZS0+bG9hZEZpbGUoVVJMLmFic29sdXRlU3RyaW5nLCByZWFkQWNjZXNz
VVJMLmFic29sdXRlU3RyaW5nLCBpc0FwcEluaXRpYXRlZCkpOwogfQogCi0tIChDb2NvYUNvbG9y
ICopdGhlbWVDb2xvcgorLSAoV2ViQ29yZTo6Q29jb2FDb2xvciAqKXRoZW1lQ29sb3IKIHsKICAg
ICByZXR1cm4gY29jb2FDb2xvck9yTmlsKF9wYWdlLT50aGVtZUNvbG9yKCkpLmF1dG9yZWxlYXNl
KCk7CiB9CiAKLS0gKENvY29hQ29sb3IgKil1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKKy0gKFdl
YkNvcmU6OkNvY29hQ29sb3IgKil1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKIHsKICAgICByZXR1
cm4gY29jb2FDb2xvcihfcGFnZS0+dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkpLmF1dG9yZWxl
YXNlKCk7CiB9CiAKLS0gKHZvaWQpc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOihDb2NvYUNv
bG9yICopdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUKKy0gKHZvaWQpc2V0VW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yOihXZWJDb3JlOjpDb2NvYUNvbG9yICopdW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT3ZlcnJpZGUKIHsKICAgICBfcGFnZS0+c2V0VW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGUoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeSh1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JPdmVycmlkZS5DR0NvbG9yKSk7CiB9CkBAIC0zMzI2LDE4ICszMzI1LDE4
IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6RmluZE9wdGlvbnM+IHRvRmluZE9w
dAogfQogCiAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3RoZW1lQ29sb3JdYCBT
UEkgPHJkYXI6Ly83NjY2MjY0ND4KLS0gKENvY29hQ29sb3IgKilfdGhlbWVDb2xvcgorLSAoV2Vi
Q29yZTo6Q29jb2FDb2xvciAqKV90aGVtZUNvbG9yCiB7CiAgICAgcmV0dXJuIFtzZWxmIHRoZW1l
Q29sb3JdOwogfQogCiAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRl
bmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSA8cmRhcjovLzc3Nzg5NzMyPgotLSAoQ29jb2FDb2xv
ciAqKV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IKKy0gKFdlYkNvcmU6OkNvY29hQ29sb3Ig
KilfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yCiB7CiAgICAgcmV0dXJuIGNvY29hQ29sb3JP
ck5pbChfcGFnZS0+cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKLS0gKENvY29hQ29sb3IgKilfc2FtcGxlZFBhZ2VUb3BDb2xvcgorLSAoV2ViQ29yZTo6
Q29jb2FDb2xvciAqKV9zYW1wbGVkUGFnZVRvcENvbG9yCiB7CiAgICAgcmV0dXJuIGNvY29hQ29s
b3JPck5pbChfcGFnZS0+c2FtcGxlZFBhZ2VUb3BDb2xvcigpKS5hdXRvcmVsZWFzZSgpOwogfQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFu
aWZlc3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0JKHJldmlzaW9uIDI4NzQ0NikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
Il9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oIgogCi0jaW1wb3J0ICJDb2NvYUNvbG9y
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9uTWFuaWZlc3QuaD4KICNpbXBvcnQgPFdl
YkNvcmUvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xv
ci5oPgpAQCAtMTU2LDcgKzE1NSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFw
cGxpY2F0aW9uTWFuaWZlc3Q6OkljbwogICAgIFVSTCBzY29wZVVSTCA9IFthRGVjb2RlciBkZWNv
ZGVPYmplY3RPZkNsYXNzOltOU1VSTCBjbGFzc10gZm9yS2V5OkAic2NvcGUiXTsKICAgICBOU0lu
dGVnZXIgZGlzcGxheSA9IFthRGVjb2RlciBkZWNvZGVJbnRlZ2VyRm9yS2V5OkAiZGlzcGxheSJd
OwogICAgIFVSTCBzdGFydFVSTCA9IFthRGVjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltOU1VS
TCBjbGFzc10gZm9yS2V5OkAic3RhcnRfdXJsIl07Ci0gICAgQ29jb2FDb2xvciAqdGhlbWVDb2xv
ciA9IFthRGVjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltDb2NvYUNvbG9yIGNsYXNzXSBmb3JL
ZXk6QCJ0aGVtZV9jb2xvciJdOworICAgIFdlYkNvcmU6OkNvY29hQ29sb3IgKnRoZW1lQ29sb3Ig
PSBbYURlY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbV2ViQ29yZTo6Q29jb2FDb2xvciBjbGFz
c10gZm9yS2V5OkAidGhlbWVfY29sb3IiXTsKICAgICBOU0FycmF5PF9XS0FwcGxpY2F0aW9uTWFu
aWZlc3RJY29uICo+ICppY29ucyA9IFthRGVjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05T
U2V0IHNldFdpdGhBcnJheTpAW1tOU0FycmF5IGNsYXNzXSwgW19XS0FwcGxpY2F0aW9uTWFuaWZl
c3RJY29uIGNsYXNzXV1dIGZvcktleTpAImljb25zIl07CiAKICAgICBXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0IGNvcmVBcHBsaWNhdGlvbk1hbmlmZXN0IHsKQEAgLTIzOCw3ICsyMzcsNyBA
QCBzdGF0aWMgTlNTdHJpbmcgKm51bGxhYmxlTlNTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmIHMK
ICAgICByZXR1cm4gX2FwcGxpY2F0aW9uTWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS5z
dGFydFVSTDsKIH0KIAotLSAoQ29jb2FDb2xvciAqKXRoZW1lQ29sb3IKKy0gKFdlYkNvcmU6OkNv
Y29hQ29sb3IgKil0aGVtZUNvbG9yCiB7CiAgICAgcmV0dXJuIGNvY29hQ29sb3IoX2FwcGxpY2F0
aW9uTWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS50aGVtZUNvbG9yKS5hdXRvcmVsZWFz
ZSgpOwogfQpAQCAtMzEzLDcgKzMxMiw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbnVsbGFibGVOU1N0
cmluZyhjb25zdCBXVEY6OlN0cmluZyYgcwogICAgIHJldHVybiBuaWw7CiB9CiAKLS0gKENvY29h
Q29sb3IgKil0aGVtZUNvbG9yCistIChXZWJDb3JlOjpDb2NvYUNvbG9yICopdGhlbWVDb2xvcgog
ewogICAgIHJldHVybiBuaWw7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XS1NhZmVCcm93c2luZ1dhcm5pbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcuaAkocmV2aXNpb24gMjg3NDQ2KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJDb2NvYUNvbG9yLmgiCiAjaW1wb3J0ICJXS0Zv
dW5kYXRpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3JDb2NvYS5oPgogI2ltcG9ydCA8dmFy
aWFudD4KICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL1Jl
ZlB0ci5oPgpAQCAtNTUsMTAgKzU1LDEwIEBAIHVzaW5nIFJlY3RUeXBlID0gQ0dSZWN0OwogQGlu
dGVyZmFjZSBXS1NhZmVCcm93c2luZ0JveCA6IFZpZXdUeXBlIHsKIEBwYWNrYWdlCiAjaWYgUExB
VEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxDb2NvYUNvbG9yPiBfYmFja2dyb3VuZENvbG9yOwor
ICAgIFJldGFpblB0cjxXZWJDb3JlOjpDb2NvYUNvbG9yPiBfYmFja2dyb3VuZENvbG9yOwogI2Vu
ZGlmCiB9Ci0tICh2b2lkKXNldFNhZmVCcm93c2luZ0JhY2tncm91bmRDb2xvcjooQ29jb2FDb2xv
ciAqKWNvbG9yOworLSAodm9pZClzZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6KFdlYkNv
cmU6OkNvY29hQ29sb3IgKiljb2xvcjsKIEBlbmQKIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2lu
Z1dhcm5pbmcubW0JKHJldmlzaW9uIDI4NzQ0NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAzLDEy
ICsxMDMsMTIgQEAgc3RhdGljIENvY29hRm9udCAqZm9udE9mU2l6ZShXYXJuaW5nVGV4dFNpemUg
c2l6ZSkKICNlbmRpZgogfQogCi1zdGF0aWMgQ29jb2FDb2xvciAqY29sb3JGb3JJdGVtKFdhcm5p
bmdJdGVtIGl0ZW0sIFZpZXdUeXBlICp3YXJuaW5nKQorc3RhdGljIFdlYkNvcmU6OkNvY29hQ29s
b3IgKmNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbSBpdGVtLCBWaWV3VHlwZSAqd2FybmluZykKIHsK
ICAgICBBU1NFUlQoW3dhcm5pbmcgaXNLaW5kT2ZDbGFzczpbV0tTYWZlQnJvd3NpbmdXYXJuaW5n
IGNsYXNzXV0pOwogI2lmIFBMQVRGT1JNKE1BQykKIAotICAgIGF1dG8gY29sb3JOYW1lZCA9IFtd
IChOU1N0cmluZyAqbmFtZSkgLT4gQ29jb2FDb2xvciAqIHsKKyAgICBhdXRvIGNvbG9yTmFtZWQg
PSBbXSAoTlNTdHJpbmcgKm5hbWUpIC0+IFdlYkNvcmU6OkNvY29hQ29sb3IgKiB7CiAjaWYgSEFW
RShTQUZFX0JST1dTSU5HKQogICAgICAgICByZXR1cm4gW05TQ29sb3IgY29sb3JOYW1lZDpuYW1l
IGJ1bmRsZTpbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViS2l0
Il1dOwogI2Vsc2UKQEAgLTI2Miw3ICsyNjIsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFZpZXdUeXBl
PiBtYWtlTGFiZWwoTlNBdHRyaWJ1dGVkU3RyaW4KIAogQGltcGxlbWVudGF0aW9uIFdLU2FmZUJy
b3dzaW5nQm94CiAKLS0gKHZvaWQpc2V0U2FmZUJyb3dzaW5nQmFja2dyb3VuZENvbG9yOihDb2Nv
YUNvbG9yICopY29sb3IKKy0gKHZvaWQpc2V0U2FmZUJyb3dzaW5nQmFja2dyb3VuZENvbG9yOihX
ZWJDb3JlOjpDb2NvYUNvbG9yICopY29sb3IKIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgX2Jh
Y2tncm91bmRDb2xvciA9IGNvbG9yOwpAQCAtNDM2LDcgKzQzNiw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8Vmlld1R5cGU+IG1ha2VMYWJlbChOU0F0dHJpYnV0ZWRTdHJpbgogI2VuZGlmCiAKICAgICBh
dXRvIGxpbmUgPSBhZG9wdE5TKFtXS1NhZmVCcm93c2luZ0JveCBuZXddKTsKLSAgICBbbGluZSBz
ZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgbGlnaHRHcmF5Q29sb3Jd
XTsKKyAgICBbbGluZSBzZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6W1dlYkNvcmU6OkNv
Y29hQ29sb3IgbGlnaHRHcmF5Q29sb3JdXTsKICAgICBmb3IgKFZpZXdUeXBlICp2aWV3IGluIEBb
ZGV0YWlscy5nZXQoKSwgYm90dG9tLmdldCgpLCBsaW5lLmdldCgpXSkKICAgICAgICAgdmlldy50
cmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50cyA9IE5POwogCkBAIC01NzMs
NyArNTczLDcgQEAgc3RhdGljIFJldGFpblB0cjxWaWV3VHlwZT4gbWFrZUxhYmVsKE5TQXR0cmli
dXRlZFN0cmluCiAgICAgc2VsZi0+X3dhcm5pbmcgPSB3YXJuaW5nOwogICAgIHNlbGYuZGVsZWdh
dGUgPSB3YXJuaW5nOwogCi0gICAgQ29jb2FDb2xvciAqZm9yZWdyb3VuZENvbG9yID0gY29sb3JG
b3JJdGVtKFdhcm5pbmdJdGVtOjpNZXNzYWdlVGV4dCwgd2FybmluZyk7CisgICAgYXV0byAqZm9y
ZWdyb3VuZENvbG9yID0gY29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpNZXNzYWdlVGV4dCwgd2Fy
bmluZyk7CiAgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFthdHRyaWJ1dGVkU3RyaW5nIG11dGFi
bGVDb3B5XSk7CiAgICAgW3N0cmluZyBhZGRBdHRyaWJ1dGVzOkB7IE5TRm9yZWdyb3VuZENvbG9y
QXR0cmlidXRlTmFtZSA6IGZvcmVncm91bmRDb2xvciB9IHJhbmdlOk5TTWFrZVJhbmdlKDAsIFtz
dHJpbmcgbGVuZ3RoXSldOwogICAgIFtzZWxmIHNldEJhY2tncm91bmRDb2xvcjpjb2xvckZvckl0
ZW0oV2FybmluZ0l0ZW06OkJveEJhY2tncm91bmQsIHdhcm5pbmcpXTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg3
NDQ2KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjAxNiw3ICsyMDE2LDYgQEAKIAkJRjREQkMwQzEyNzZBQTZDQTAw
MDFEMTY5IC8qIF9XS01vZGFsQ29udGFpbmVySW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNERCQzBDMDI3NkFBNkNBMDAwMUQxNjkg
LyogX1dLTW9kYWxDb250YWluZXJJbmZvSW50ZXJuYWwuaCAqLzsgfTsKIAkJRjRFQjRBRkQyNjlD
RDdGMzAwRDI5N0FFIC8qIE9TU3RhdGVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0RUI0QUZDMjY5Q0QyMzYwMEQyOTdBRSAvKiBPU1N0YXRlU1BJ
LmggKi87IH07CiAJCUY0RUM5NEUzMjM1NkNDNTcwMDBCQjYxNCAvKiBBcHBsaWNhdGlvblNlcnZp
Y2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
OUQwNEUyODIxRjdDNzNEMDA3Njc0MUQgLyogQXBwbGljYXRpb25TZXJ2aWNlc1NQSS5oICovOyB9
OwotCQlGNEZFMEEzQjI0NjMyQjYwMDAyNjMxRTEgLyogQ29jb2FDb2xvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGRTBBM0EyNDYzMkIxMDAwMjYz
MUUxIC8qIENvY29hQ29sb3IuaCAqLzsgfTsKIAkJRjYxMTNFMjUxMjZDRTE4MjAwNTdEMEE3IC8q
IEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjYxMTNFMjQxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVzZXJDb250
ZW50VVJMUGF0dGVybi5oICovOyB9OwogCQlGNjExM0UyOTEyNkNFMTlCMDA1N0QwQTcgLyogV0tV
c2VyQ29udGVudFVSTFBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY2MTEzRTI3MTI2Q0UxOUIwMDU3RDBBNyAvKiBXS1VzZXJDb250ZW50VVJM
UGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUY2MzQ0NDU2MTJBODg1QzgwMDA2MTJEOCAvKiBBUElTZWN1cml0eU9yaWdpbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjYzNDQ0NTUxMkE4ODVD
ODAwMDYxMkQ4IC8qIEFQSVNlY3VyaXR5T3JpZ2luLmggKi87IH07CkBAIC02NDQ3LDcgKzY0NDYs
NiBAQAogCQlGNEVCNEFGQzI2OUNEMjM2MDBEMjk3QUUgLyogT1NTdGF0ZVNQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBPU1N0YXRlU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RjU5
QUQzMjA2NUE1QzkwMDZDQUE0NiAvKiBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1NlbGVjdE1lbnVMaXN0
Vmlld0NvbnRyb2xsZXIubW07IHBhdGggPSBpb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdD
b250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEY1OUFENDIwNjVB
NUNBMDA2Q0FBNDYgLyogV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5o
OyBwYXRoID0gaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNEZFMEEzQTI0NjMyQjEwMDAyNjMxRTEgLyogQ29j
b2FDb2xvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2NvYUNvbG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0RkUwQTNDMjQ2MzU2NjcwMDI2MzFFMSAvKiBDb2NvYUZvbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29jb2FGb250Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2
MTEzRTI0MTI2Q0UxODIwMDU3RDBBNyAvKiBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2MTEzRTI2MTI2Q0UxOUIwMDU3RDBBNyAv
KiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05MTY5LDcgKzkxNjcsNiBAQAogCQk0NDUwQUVCRTFEQzNGQUFDMDA5OTQz
RjIgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAot
CQkJCUY0RkUwQTNBMjQ2MzJCMTAwMDI2MzFFMSAvKiBDb2NvYUNvbG9yLmggKi8sCiAJCQkJRjRG
RTBBM0MyNDYzNTY2NzAwMjYzMUUxIC8qIENvY29hRm9udC5oICovLAogCQkJCTQ0ODI3MzQ2MjQ1
MjhGNjAwMEE5NTQ5MyAvKiBDb2NvYUltYWdlLmggKi8sCiAJCQkJQkNFMDkzNzYxNEZCMTI4QjAw
MTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQuaCAqLywKQEAgLTEyODQwLDcgKzEyODM3LDYg
QEAKIAkJCQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNl
cnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNTc5QTYyNjM0ODM2NzAwRjVDNUU5IC8qIENH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QjRC
NDYwMjBCNTA0QUMwMEQ0QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBD
Q29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKLQkJCQlGNEZFMEEzQjI0NjMyQjYwMDAyNjMxRTEg
LyogQ29jb2FDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ4MjczNDcyNDUyOEY2MDAwQTk1
NDkzIC8qIENvY29hSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTFBRDUyMUNCQzQ4MkYw
MDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdCRUM0RTExOTQ5
MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCShyZXZpc2lvbiAyODc0NDYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2
IEBACiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCiAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJz
LmgiCi0jaW1wb3J0ICJDb2NvYUNvbG9yLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW1wb3J0ICJGcmFtZUluZm9EYXRhLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC02Miw2ICs2
MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvQ2hyb21lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+CisjaW1wb3J0IDxXZWJD
b3JlL0NvbG9yQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJpYWxpemF0aW9uLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0N1cnNvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5
TG9va3VwLmg+CkBAIC02NTYsNyArNjU2LDcgQEAgaW5saW5lIFBERlBsdWdpbjo6UERGUGx1Z2lu
KFdlYkZyYW1lJiBmcmFtZSwgSFRNTFBsdWdJCiAgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gZnJh
bWUuY29yZUZyYW1lKCktPmRvY3VtZW50KCk7CiAKICAgICAgICAgLy8gRklYTUU6IDxyZGFyOi8v
cHJvYmxlbS83NTMzMjk0OD4gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gUERGS2l0IGlu
c3RlYWQgb2YgaGFyZGNvZGluZyBpdAotICAgICAgICBkb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQo
KS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShXZWJDb3JlOjpDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvciwgV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvckhUTUwoV2ViQ29yZTo6cm91bmRBbmRDbGFt
cFRvU1JHQkFMb3NzeShbQ29jb2FDb2xvciBncmF5Q29sb3JdLkNHQ29sb3IpKSk7CisgICAgICAg
IGRvY3VtZW50LT5ib2R5T3JGcmFtZXNldCgpLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KFdlYkNv
cmU6OkNTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBXZWJDb3JlOjpzZXJpYWxpemF0aW9uRm9y
SFRNTChXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFtXZWJDb3JlOjpDb2NvYUNv
bG9yIGdyYXlDb2xvcl0uQ0dDb2xvcikpKTsKICAgICB9CiAKICAgICBpZiAoc3VwcG9ydHNGb3Jt
cygpKSB7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyODc0NDcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAyMS0xMi0yNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgUmVwbGFjZSBXZWJLaXQvQ29jb2FDb2xvci5oIHdpdGggV2ViQ29yZS9D
b2xvckNvY29hLmgsIG5vdCBjb25mdXNpbmcgYXQgYWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgV2ViQ29yZS9Db2xvckNvY29hLmggaW5zdGVh
ZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29weUhUTUwu
bW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdU
aGVtZUNvbG9yLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLm1tOgorCiAyMDIxLTEyLTI0ICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVth
MTF5XSBFeHBvc2UgbGl2ZSByZWdpb24gYXR0cmlidXRlcyB3aXRoIEFUU1BJCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlIVE1MLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29weUhUTUwubW0JKHJl
dmlzaW9uIDI4NzQzMSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
Q29weUhUTUwubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCwxMCBAQAogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAKLSNpbXBvcnQgIkNvY29hQ29sb3IuaCIKICNpbXBvcnQgIlBhc3RlYm9h
cmRVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJU
ZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJDb3JlL0NvbG9yQ29jb2EuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNTMsNyArMTUzLDcgQEAgVEVT
VChDb3B5SFRNTCwgU2FuaXRpemF0aW9uUHJlc2VydmVzQ2hhcmFjdGVyU2V0KQogICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoIuaIkeWPq+isneaWh+aYhyIsIFthdHRyaWJ1dGVkU3RyaW5nIHN0cmlu
Z10pOwogCiAgICAgICAgIF9fYmxvY2sgQk9PTCBmb3VuZENvbG9yQXR0cmlidXRlID0gTk87Ci0g
ICAgICAgIFthdHRyaWJ1dGVkU3RyaW5nIGVudW1lcmF0ZUF0dHJpYnV0ZTpOU0ZvcmVncm91bmRD
b2xvckF0dHJpYnV0ZU5hbWUgaW5SYW5nZTpOU01ha2VSYW5nZSgwLCA1KSBvcHRpb25zOjAgdXNp
bmdCbG9jazpeKENvY29hQ29sb3IgKmNvbG9yLCBOU1JhbmdlIHJhbmdlLCBCT09MKikgeworICAg
ICAgICBbYXR0cmlidXRlZFN0cmluZyBlbnVtZXJhdGVBdHRyaWJ1dGU6TlNGb3JlZ3JvdW5kQ29s
b3JBdHRyaWJ1dGVOYW1lIGluUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgNSkgb3B0aW9uczowIHVzaW5n
QmxvY2s6XihXZWJDb3JlOjpDb2NvYUNvbG9yICpjb2xvciwgTlNSYW5nZSByYW5nZSwgQk9PTCop
IHsKICAgICAgICAgICAgIENHRmxvYXQgcmVkQ29tcG9uZW50ID0gMDsKICAgICAgICAgICAgIENH
RmxvYXQgZ3JlZW5Db21wb25lbnQgPSAwOwogICAgICAgICAgICAgQ0dGbG9hdCBibHVlQ29tcG9u
ZW50ID0gMDsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tX
ZWJWaWV3VGhlbWVDb2xvci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29sb3IubW0JKHJldmlzaW9uIDI4NzQzMSkK
KysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VGhlbWVD
b2xvci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjaW1wb3J0ICJjb25m
aWcuaCIKIAotI2ltcG9ydCAiQ29jb2FDb2xvci5oIgogI2ltcG9ydCAiVGVzdENvY29hLmgiCiAj
aW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1By
aXZhdGUuaD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tX
ZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yLm1tCShyZXZpc2lvbiAyODc0MzEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsOSArMjUsOSBAQAogCiAjaW1wb3J0ICJjb25maWcuaCIKIAotI2ltcG9y
dCAiQ29jb2FDb2xvci5oIgogI2ltcG9ydCAiVGVzdENvY29hLmgiCiAjaW1wb3J0ICJUZXN0V0tX
ZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJDb3JlL0NvbG9yQ29jb2EuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTQ2
LDcgKzQ2LDcgQEAgc3RhdGljIFJldGFpblB0cjxDR0NvbG9yPiBkZWZhdWx0QmFja2dyb3VuZENv
bG9yKCkKICNlbGlmIEhBVkUoT1NfREFSS19NT0RFX1NVUFBPUlQpICYmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgYXV0byBjb2xvciA9IHJldGFpblB0cihVSUNvbG9yLnN5c3RlbUJhY2tncm91
bmRDb2xvcik7CiAjZWxzZQotICAgIGF1dG8gY29sb3IgPSByZXRhaW5QdHIoW0NvY29hQ29sb3Ig
d2hpdGVDb2xvcl0pOworICAgIGF1dG8gY29sb3IgPSByZXRhaW5QdHIoW1dlYkNvcmU6OkNvY29h
Q29sb3Igd2hpdGVDb2xvcl0pOwogI2VuZGlmCiAKICAgICAvLyBTb21lIG9mIHRoZSBhYm92ZSBj
YW4gc29tZXRpbWVzIGJlIGEgbW9ub2Nocm9tZSBjb2xvciwgc28gY29udmVydCBpdCB0byBzUkdC
IHNvIHRoZSBjb21wYXJpc29ucyBiZWxvdyB3b3JrLgpAQCAtMTk2LDcgKzE5Niw3IEBAIFRFU1Qo
V0tXZWJWaWV3VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yLCBLVk8pCiAgICAgRVhQRUNUX1RSVUUo
Q0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNH
Q29sb3IsIHJlZENvbG9yLmdldCgpKSk7CiAKICAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
T2JzZXJ2ZXIgc2V0U3RhdGU6QCJzaG91bGQtbm90LWNoYW5nZSJdOwotICAgIFt3ZWJWaWV3IHNl
dFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpbQ29jb2FDb2xvciBjb2xvcldpdGhDR0NvbG9yOnJl
ZENvbG9yLmdldCgpXV07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
OltXZWJDb3JlOjpDb2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6cmVkQ29sb3IuZ2V0KCldXTsK
ICAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1ub3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJh
Y2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CiAgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVx
dWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHJl
ZENvbG9yLmdldCgpKSk7CiAKQEAgLTIxMiw3ICsyMTIsNyBAQCBURVNUKFdLV2ViVmlld1VuZGVy
UGFnZUJhY2tncm91bmRDb2xvciwgS1ZPKQogICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRv
Q29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVlQ29s
b3IuZ2V0KCkpKTsKIAogICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRT
dGF0ZTpAInNob3VsZC1ub3QtY2hhbmdlIl07Ci0gICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yOltDb2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Ymx1ZUNvbG9yLmdldCgp
XV07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOltXZWJDb3JlOjpD
b2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Ymx1ZUNvbG9yLmdldCgpXV07CiAgICAgRVhQRUNU
X05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPYnNlcnZlciBzdGF0ZV0pOwogICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0
KCkpKTsKIApAQCAtMjI4LDcgKzIyOCw3IEBAIFRFU1QoV0tXZWJWaWV3VW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yLCBLVk8pCiAgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2Vi
VmlldyB1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIGRlZmF1bHRCYWNrZ3JvdW5k
Q29sb3IoKS5nZXQoKSkpOwogCiAgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVy
IHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKLSAgICBbd2ViVmlldyBzZXRVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpkZWZhdWx0QmFj
a2dyb3VuZENvbG9yKCkuZ2V0KCldXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3I6W1dlYkNvcmU6OkNvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpkZWZhdWx0QmFj
a2dyb3VuZENvbG9yKCkuZ2V0KCldXTsKICAgICBFWFBFQ1RfTlNTVFJJTkdfRVEoInNob3VsZC1u
b3QtY2hhbmdlIiwgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHN0YXRlXSk7CiAg
ICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JdLkNHQ29sb3IsIGRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IoKS5nZXQoKSkpOwog
CkBAIC0yMzgsMTIgKzIzOCwxMiBAQCBURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRD
b2xvciwgS1ZPKQogICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcg
dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBkZWZhdWx0QmFja2dyb3VuZENvbG9y
KCkuZ2V0KCkpKTsKIAogICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRT
dGF0ZTpAImJlZm9yZS1ub25udWxsLW92ZXJyaWRlIl07Ci0gICAgW3dlYlZpZXcgc2V0VW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yOltDb2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6cmVkQ29sb3Iu
Z2V0KCldXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W1dlYkNv
cmU6OkNvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpyZWRDb2xvci5nZXQoKV1dOwogICAgIEVY
UEVDVF9OU1NUUklOR19FUSgiYWZ0ZXItbm9ubnVsbC1vdmVycmlkZSIsIFt1bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwogICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVh
bFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRD
b2xvci5nZXQoKSkpOwogCiAgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9ic2VydmVyIHNl
dFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKLSAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpyZWRDb2xvci5nZXQo
KV1dOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpbV2ViQ29yZTo6
Q29jb2FDb2xvciBjb2xvcldpdGhDR0NvbG9yOnJlZENvbG9yLmdldCgpXV07CiAgICAgRVhQRUNU
X05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3JPYnNlcnZlciBzdGF0ZV0pOwogICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3Io
W3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRDb2xvci5nZXQo
KSkpOwogCkBAIC0yOTMsMTMgKzI5MywxMyBAQCBURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tn
cm91bmRDb2xvciwgTWF0Y2hlc1Njcm9sbFYKICAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxU
b0NvbG9yKFt3ZWJWaWV3IHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0NvbG9yLCByZWRD
b2xvci5nZXQoKSkpOwogICAgIEVYUEVDVF9FUShbd2ViVmlldyBzY3JvbGxWaWV3XS5pbmRpY2F0
b3JTdHlsZSwgVUlTY3JvbGxWaWV3SW5kaWNhdG9yU3R5bGVXaGl0ZSk7CiAKLSAgICBbd2ViVmll
dyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xv
cjpibHVlQ29sb3IuZ2V0KCldXTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5k
Q29sb3I6W1dlYkNvcmU6OkNvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpibHVlQ29sb3IuZ2V0
KCldXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CiAgICAg
RVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3JdLkNHQ29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOwogICAgIEVYUEVDVF9UUlVFKENH
Q29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgc2Nyb2xsVmlld10uYmFja2dyb3VuZENvbG9yLkNH
Q29sb3IsIGJsdWVDb2xvci5nZXQoKSkpOwogICAgIEVYUEVDVF9FUShbd2ViVmlldyBzY3JvbGxW
aWV3XS5pbmRpY2F0b3JTdHlsZSwgVUlTY3JvbGxWaWV3SW5kaWNhdG9yU3R5bGVXaGl0ZSk7CiAK
LSAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29s
b3JXaXRoQ0dDb2xvcjp3aGl0ZUNvbG9yLmdldCgpXV07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yOltXZWJDb3JlOjpDb2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6
d2hpdGVDb2xvci5nZXQoKV1dOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9u
VXBkYXRlXTsKICAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgd2hpdGVDb2xvci5nZXQoKSkpOwogICAg
IEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgc2Nyb2xsVmlld10uYmFj
a2dyb3VuZENvbG9yLkNHQ29sb3IsIHdoaXRlQ29sb3IuZ2V0KCkpKTsK
</data>
<flag name="commit-queue"
          id="473778"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447992</attachid>
            <date>2021-12-26 16:06:17 -0800</date>
            <delta_ts>2021-12-26 16:47:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>colorcocoa.diff</filename>
            <type>text/plain</type>
            <size>24778</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODc0NDYpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIxLTEyLTI2ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFdlYktpdC9Db2NvYUNvbG9y
Lmggd2l0aCBXZWJDb3JlL0NvbG9yQ29jb2EuaCwgbm90IGNvbmZ1c2luZyBhdCBhbGwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDY5MworCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBXZSBkb24ndCBuZWVkIGJv
dGguIFRoZSBXZWJDb3JlIG9uZSBjYW4gd29yayBmb3IgYm90aC4KKworICAgICAgICAqIFBsYXRm
b3JtL2NvY29hL0NvY29hQ29sb3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
QXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6dHlwZUZyb21PYmplY3QpOgor
ICAgICAgICAoSVBDOjplbmNvZGVDb2xvckludGVybmFsKToKKyAgICAgICAgKElQQzo6ZW5jb2Rl
T2JqZWN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IHRoZW1lQ29sb3JdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvcl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgc2V0VW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3RoZW1lQ29sb3Jd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9zYW1wbGVkUGFnZVRvcENvbG9yXSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tOgorICAgICAgICAo
LVtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGluaXRXaXRoQ29kZXI6XSk6CisgICAgICAgICgtW19X
S0FwcGxpY2F0aW9uTWFuaWZlc3QgdGhlbWVDb2xvcl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V0tTYWZlQnJvd3NpbmdXYXJuaW5nLm1tOgorICAgICAgICAoY29sb3JGb3JJdGVtKToKKyAgICAg
ICAgKC1bV0tTYWZlQnJvd3NpbmdCb3ggc2V0U2FmZUJyb3dzaW5nQmFja2dyb3VuZENvbG9yOl0p
OgorICAgICAgICAoLVtXS1NhZmVCcm93c2luZ1dhcm5pbmcgc2hvd0RldGFpbHNDbGlja2VkXSk6
CisgICAgICAgICgtW1dLU2FmZUJyb3dzaW5nVGV4dFZpZXcgaW5pdFdpdGhBdHRyaWJ1dGVkU3Ry
aW5nOmZvcldhcm5pbmc6XSk6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luKToKKwogMjAyMS0xMi0yNSAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyODUwODguCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29h
L0NvY29hQ29sb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29h
L0NvY29hQ29sb3IuaAkocmV2aXNpb24gMjg3NDQ2KQorKysgU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9Db2NvYUNvbG9yLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNiArMCwwIEBACi0vKgot
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKgot
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0qIGFyZSBtZXQ6Ci0qIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotKgot
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0qIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0qIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0qIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0qIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0qIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSovCi0KLSNwcmFnbWEgb25jZQot
Ci0jaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+Ci0KLSNpZiBVU0UoQVBQS0lUKQotT0JKQ19DTEFT
UyBOU0NvbG9yOwotdXNpbmcgQ29jb2FDb2xvciA9IE5TQ29sb3I7Ci0jZWxzZQotT0JKQ19DTEFT
UyBVSUNvbG9yOwotdXNpbmcgQ29jb2FDb2xvciA9IFVJQ29sb3I7Ci0jZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQko
cmV2aXNpb24gMjg3NDQ2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRD
b2RlcnNDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lmIFBMQVRG
T1JNKENPQ09BKQogCiAjaW1wb3J0ICJBcmd1bWVudENvZGVyc0NGLmgiCi0jaW1wb3J0ICJDb2Nv
YUNvbG9yLmgiCiAjaW1wb3J0ICJDb2NvYUZvbnQuaCIKICNpbXBvcnQgIkNvcmVUZXh0SGVscGVy
cy5oIgogI2ltcG9ydCA8Q29yZVRleHQvQ1RGb250Lmg+CkBAIC0xNzIsNyArMTcxLDcgQEAgc3Rh
dGljIE5TVHlwZSB0eXBlRnJvbU9iamVjdChpZCBvYmplY3QpCiAgICAgLy8gU3BlY2lmaWMgY2xh
c3NlcyBoYW5kbGVkLgogICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xh
c3NdXSkKICAgICAgICAgcmV0dXJuIE5TVHlwZTo6QXJyYXk7Ci0gICAgaWYgKFtvYmplY3QgaXNL
aW5kT2ZDbGFzczpbQ29jb2FDb2xvciBjbGFzc11dKQorICAgIGlmIChbb2JqZWN0IGlzS2luZE9m
Q2xhc3M6W1dlYkNvcmU6OkNvY29hQ29sb3IgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIE5TVHlw
ZTo6Q29sb3I7CiAgICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0p
CiAgICAgICAgIHJldHVybiBOU1R5cGU6OkRhdGE7CkBAIC0yNjEsNyArMjYwLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPGlkPj4gZGVjb2RlQXJyYXlJbnRlcm5hCiAKICNwcmFn
bWEgbWFyayAtIE5TQ29sb3IgLyBVSUNvbG9yCiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBlbmNvZGVD
b2xvckludGVybmFsKEVuY29kZXImIGVuY29kZXIsIENvY29hQ29sb3IgKmNvbG9yKQorc3RhdGlj
IGlubGluZSB2b2lkIGVuY29kZUNvbG9ySW50ZXJuYWwoRW5jb2RlciYgZW5jb2RlciwgV2ViQ29y
ZTo6Q29jb2FDb2xvciAqY29sb3IpCiB7CiAgICAgZW5jb2RlciA8PCBjb2xvckZyb21Db2NvYUNv
bG9yKGNvbG9yKTsKIH0KQEAgLTQ5MSw3ICs0OTAsNyBAQCB2b2lkIGVuY29kZU9iamVjdChFbmNv
ZGVyJiBlbmNvZGVyLCBpZCBvYmplY3QpCiAgICAgICAgIGVuY29kZUFycmF5SW50ZXJuYWwoZW5j
b2Rlciwgc3RhdGljX2Nhc3Q8TlNBcnJheSAqPihvYmplY3QpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgTlNUeXBlOjpDb2xvcjoKLSAgICAgICAgZW5jb2RlQ29sb3JJbnRlcm5hbChlbmNv
ZGVyLCBzdGF0aWNfY2FzdDxDb2NvYUNvbG9yICo+KG9iamVjdCkpOworICAgICAgICBlbmNvZGVD
b2xvckludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkNvY29hQ29sb3IgKj4o
b2JqZWN0KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIE5TVHlwZTo6RGljdGlvbmFyeToK
ICAgICAgICAgZW5jb2RlRGljdGlvbmFyeUludGVybmFsKGVuY29kZXIsIHN0YXRpY19jYXN0PE5T
RGljdGlvbmFyeSAqPihvYmplY3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjg3NDQ2KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNiBAQAogI2ltcG9ydCAiQVBJRnJhbWVUcmVlTm9kZS5oIgogI2ltcG9ydCAiQVBJ
UGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIkFQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
IgotI2ltcG9ydCAiQ29jb2FDb2xvci5oIgogI2ltcG9ydCAiQ29jb2FJbWFnZS5oIgogI2ltcG9y
dCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiQ29udGVudEFzU3Ry
aW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgpAQCAtMTc3NiwxNyArMTc3NSwxNyBAQCBzdGF0aWMg
X1dLU2VsZWN0aW9uQXR0cmlidXRlcyBzZWxlY3Rpb25BdHRyaWJ1dGVzKGNvbnMKICAgICByZXR1
cm4gd3JhcHBlcihfcGFnZS0+bG9hZEZpbGUoVVJMLmFic29sdXRlU3RyaW5nLCByZWFkQWNjZXNz
VVJMLmFic29sdXRlU3RyaW5nLCBpc0FwcEluaXRpYXRlZCkpOwogfQogCi0tIChDb2NvYUNvbG9y
ICopdGhlbWVDb2xvcgorLSAoV2ViQ29yZTo6Q29jb2FDb2xvciAqKXRoZW1lQ29sb3IKIHsKICAg
ICByZXR1cm4gY29jb2FDb2xvck9yTmlsKF9wYWdlLT50aGVtZUNvbG9yKCkpLmF1dG9yZWxlYXNl
KCk7CiB9CiAKLS0gKENvY29hQ29sb3IgKil1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKKy0gKFdl
YkNvcmU6OkNvY29hQ29sb3IgKil1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IKIHsKICAgICByZXR1
cm4gY29jb2FDb2xvcihfcGFnZS0+dW5kZXJQYWdlQmFja2dyb3VuZENvbG9yKCkpLmF1dG9yZWxl
YXNlKCk7CiB9CiAKLS0gKHZvaWQpc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOihDb2NvYUNv
bG9yICopdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT3ZlcnJpZGUKKy0gKHZvaWQpc2V0VW5kZXJQ
YWdlQmFja2dyb3VuZENvbG9yOihXZWJDb3JlOjpDb2NvYUNvbG9yICopdW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT3ZlcnJpZGUKIHsKICAgICBfcGFnZS0+c2V0VW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yT3ZlcnJpZGUoV2ViQ29yZTo6cm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeSh1bmRlclBhZ2VC
YWNrZ3JvdW5kQ29sb3JPdmVycmlkZS5DR0NvbG9yKSk7CiB9CkBAIC0zMzI2LDE4ICszMzI1LDE4
IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6RmluZE9wdGlvbnM+IHRvRmluZE9w
dAogfQogCiAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3RoZW1lQ29sb3JdYCBT
UEkgPHJkYXI6Ly83NjY2MjY0ND4KLS0gKENvY29hQ29sb3IgKilfdGhlbWVDb2xvcgorLSAoV2Vi
Q29yZTo6Q29jb2FDb2xvciAqKV90aGVtZUNvbG9yCiB7CiAgICAgcmV0dXJuIFtzZWxmIHRoZW1l
Q29sb3JdOwogfQogCiAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3BhZ2VFeHRl
bmRlZEJhY2tncm91bmRDb2xvcl1gIFNQSSA8cmRhcjovLzc3Nzg5NzMyPgotLSAoQ29jb2FDb2xv
ciAqKV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IKKy0gKFdlYkNvcmU6OkNvY29hQ29sb3Ig
KilfcGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yCiB7CiAgICAgcmV0dXJuIGNvY29hQ29sb3JP
ck5pbChfcGFnZS0+cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCkpLmF1dG9yZWxlYXNlKCk7
CiB9CiAKLS0gKENvY29hQ29sb3IgKilfc2FtcGxlZFBhZ2VUb3BDb2xvcgorLSAoV2ViQ29yZTo6
Q29jb2FDb2xvciAqKV9zYW1wbGVkUGFnZVRvcENvbG9yCiB7CiAgICAgcmV0dXJuIGNvY29hQ29s
b3JPck5pbChfcGFnZS0+c2FtcGxlZFBhZ2VUb3BDb2xvcigpKS5hdXRvcmVsZWFzZSgpOwogfQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFu
aWZlc3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0JKHJldmlzaW9uIDI4NzQ0NikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBcHBsaWNhdGlvbk1hbmlmZXN0Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
Il9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oIgogCi0jaW1wb3J0ICJDb2NvYUNvbG9y
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9uTWFuaWZlc3QuaD4KICNpbXBvcnQgPFdl
YkNvcmUvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Db2xv
ci5oPgpAQCAtMTU2LDcgKzE1NSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkFw
cGxpY2F0aW9uTWFuaWZlc3Q6OkljbwogICAgIFVSTCBzY29wZVVSTCA9IFthRGVjb2RlciBkZWNv
ZGVPYmplY3RPZkNsYXNzOltOU1VSTCBjbGFzc10gZm9yS2V5OkAic2NvcGUiXTsKICAgICBOU0lu
dGVnZXIgZGlzcGxheSA9IFthRGVjb2RlciBkZWNvZGVJbnRlZ2VyRm9yS2V5OkAiZGlzcGxheSJd
OwogICAgIFVSTCBzdGFydFVSTCA9IFthRGVjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltOU1VS
TCBjbGFzc10gZm9yS2V5OkAic3RhcnRfdXJsIl07Ci0gICAgQ29jb2FDb2xvciAqdGhlbWVDb2xv
ciA9IFthRGVjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltDb2NvYUNvbG9yIGNsYXNzXSBmb3JL
ZXk6QCJ0aGVtZV9jb2xvciJdOworICAgIFdlYkNvcmU6OkNvY29hQ29sb3IgKnRoZW1lQ29sb3Ig
PSBbYURlY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbV2ViQ29yZTo6Q29jb2FDb2xvciBjbGFz
c10gZm9yS2V5OkAidGhlbWVfY29sb3IiXTsKICAgICBOU0FycmF5PF9XS0FwcGxpY2F0aW9uTWFu
aWZlc3RJY29uICo+ICppY29ucyA9IFthRGVjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05T
U2V0IHNldFdpdGhBcnJheTpAW1tOU0FycmF5IGNsYXNzXSwgW19XS0FwcGxpY2F0aW9uTWFuaWZl
c3RJY29uIGNsYXNzXV1dIGZvcktleTpAImljb25zIl07CiAKICAgICBXZWJDb3JlOjpBcHBsaWNh
dGlvbk1hbmlmZXN0IGNvcmVBcHBsaWNhdGlvbk1hbmlmZXN0IHsKQEAgLTIzOCw3ICsyMzcsNyBA
QCBzdGF0aWMgTlNTdHJpbmcgKm51bGxhYmxlTlNTdHJpbmcoY29uc3QgV1RGOjpTdHJpbmcmIHMK
ICAgICByZXR1cm4gX2FwcGxpY2F0aW9uTWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS5z
dGFydFVSTDsKIH0KIAotLSAoQ29jb2FDb2xvciAqKXRoZW1lQ29sb3IKKy0gKFdlYkNvcmU6OkNv
Y29hQ29sb3IgKil0aGVtZUNvbG9yCiB7CiAgICAgcmV0dXJuIGNvY29hQ29sb3IoX2FwcGxpY2F0
aW9uTWFuaWZlc3QtPmFwcGxpY2F0aW9uTWFuaWZlc3QoKS50aGVtZUNvbG9yKS5hdXRvcmVsZWFz
ZSgpOwogfQpAQCAtMzEzLDcgKzMxMiw3IEBAIHN0YXRpYyBOU1N0cmluZyAqbnVsbGFibGVOU1N0
cmluZyhjb25zdCBXVEY6OlN0cmluZyYgcwogICAgIHJldHVybiBuaWw7CiB9CiAKLS0gKENvY29h
Q29sb3IgKil0aGVtZUNvbG9yCistIChXZWJDb3JlOjpDb2NvYUNvbG9yICopdGhlbWVDb2xvcgog
ewogICAgIHJldHVybiBuaWw7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XS1NhZmVCcm93c2luZ1dhcm5pbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2luZ1dhcm5pbmcuaAkocmV2aXNpb24gMjg3NDQ2KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tTYWZlQnJvd3NpbmdXYXJuaW5nLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0ICJDb2NvYUNvbG9yLmgiCiAjaW1wb3J0ICJXS0Zv
dW5kYXRpb24uaCIKKyNpbXBvcnQgPFdlYkNvcmUvQ29sb3JDb2NvYS5oPgogI2ltcG9ydCA8dmFy
aWFudD4KICNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL1Jl
ZlB0ci5oPgpAQCAtNTUsMTAgKzU1LDEwIEBAIHVzaW5nIFJlY3RUeXBlID0gQ0dSZWN0OwogQGlu
dGVyZmFjZSBXS1NhZmVCcm93c2luZ0JveCA6IFZpZXdUeXBlIHsKIEBwYWNrYWdlCiAjaWYgUExB
VEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxDb2NvYUNvbG9yPiBfYmFja2dyb3VuZENvbG9yOwor
ICAgIFJldGFpblB0cjxXZWJDb3JlOjpDb2NvYUNvbG9yPiBfYmFja2dyb3VuZENvbG9yOwogI2Vu
ZGlmCiB9Ci0tICh2b2lkKXNldFNhZmVCcm93c2luZ0JhY2tncm91bmRDb2xvcjooQ29jb2FDb2xv
ciAqKWNvbG9yOworLSAodm9pZClzZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6KFdlYkNv
cmU6OkNvY29hQ29sb3IgKiljb2xvcjsKIEBlbmQKIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1NhZmVCcm93c2lu
Z1dhcm5pbmcubW0JKHJldmlzaW9uIDI4NzQ0NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dLU2FmZUJyb3dzaW5nV2FybmluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAzLDEy
ICsxMDMsMTIgQEAgc3RhdGljIENvY29hRm9udCAqZm9udE9mU2l6ZShXYXJuaW5nVGV4dFNpemUg
c2l6ZSkKICNlbmRpZgogfQogCi1zdGF0aWMgQ29jb2FDb2xvciAqY29sb3JGb3JJdGVtKFdhcm5p
bmdJdGVtIGl0ZW0sIFZpZXdUeXBlICp3YXJuaW5nKQorc3RhdGljIFdlYkNvcmU6OkNvY29hQ29s
b3IgKmNvbG9yRm9ySXRlbShXYXJuaW5nSXRlbSBpdGVtLCBWaWV3VHlwZSAqd2FybmluZykKIHsK
ICAgICBBU1NFUlQoW3dhcm5pbmcgaXNLaW5kT2ZDbGFzczpbV0tTYWZlQnJvd3NpbmdXYXJuaW5n
IGNsYXNzXV0pOwogI2lmIFBMQVRGT1JNKE1BQykKIAotICAgIGF1dG8gY29sb3JOYW1lZCA9IFtd
IChOU1N0cmluZyAqbmFtZSkgLT4gQ29jb2FDb2xvciAqIHsKKyAgICBhdXRvIGNvbG9yTmFtZWQg
PSBbXSAoTlNTdHJpbmcgKm5hbWUpIC0+IFdlYkNvcmU6OkNvY29hQ29sb3IgKiB7CiAjaWYgSEFW
RShTQUZFX0JST1dTSU5HKQogICAgICAgICByZXR1cm4gW05TQ29sb3IgY29sb3JOYW1lZDpuYW1l
IGJ1bmRsZTpbTlNCdW5kbGUgYnVuZGxlV2l0aElkZW50aWZpZXI6QCJjb20uYXBwbGUuV2ViS2l0
Il1dOwogI2Vsc2UKQEAgLTI2Miw3ICsyNjIsNyBAQCBzdGF0aWMgUmV0YWluUHRyPFZpZXdUeXBl
PiBtYWtlTGFiZWwoTlNBdHRyaWJ1dGVkU3RyaW4KIAogQGltcGxlbWVudGF0aW9uIFdLU2FmZUJy
b3dzaW5nQm94CiAKLS0gKHZvaWQpc2V0U2FmZUJyb3dzaW5nQmFja2dyb3VuZENvbG9yOihDb2Nv
YUNvbG9yICopY29sb3IKKy0gKHZvaWQpc2V0U2FmZUJyb3dzaW5nQmFja2dyb3VuZENvbG9yOihX
ZWJDb3JlOjpDb2NvYUNvbG9yICopY29sb3IKIHsKICNpZiBQTEFURk9STShNQUMpCiAgICAgX2Jh
Y2tncm91bmRDb2xvciA9IGNvbG9yOwpAQCAtNDM2LDcgKzQzNiw3IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8Vmlld1R5cGU+IG1ha2VMYWJlbChOU0F0dHJpYnV0ZWRTdHJpbgogI2VuZGlmCiAKICAgICBh
dXRvIGxpbmUgPSBhZG9wdE5TKFtXS1NhZmVCcm93c2luZ0JveCBuZXddKTsKLSAgICBbbGluZSBz
ZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgbGlnaHRHcmF5Q29sb3Jd
XTsKKyAgICBbbGluZSBzZXRTYWZlQnJvd3NpbmdCYWNrZ3JvdW5kQ29sb3I6W1dlYkNvcmU6OkNv
Y29hQ29sb3IgbGlnaHRHcmF5Q29sb3JdXTsKICAgICBmb3IgKFZpZXdUeXBlICp2aWV3IGluIEBb
ZGV0YWlscy5nZXQoKSwgYm90dG9tLmdldCgpLCBsaW5lLmdldCgpXSkKICAgICAgICAgdmlldy50
cmFuc2xhdGVzQXV0b3Jlc2l6aW5nTWFza0ludG9Db25zdHJhaW50cyA9IE5POwogCkBAIC01NzMs
NyArNTczLDcgQEAgc3RhdGljIFJldGFpblB0cjxWaWV3VHlwZT4gbWFrZUxhYmVsKE5TQXR0cmli
dXRlZFN0cmluCiAgICAgc2VsZi0+X3dhcm5pbmcgPSB3YXJuaW5nOwogICAgIHNlbGYuZGVsZWdh
dGUgPSB3YXJuaW5nOwogCi0gICAgQ29jb2FDb2xvciAqZm9yZWdyb3VuZENvbG9yID0gY29sb3JG
b3JJdGVtKFdhcm5pbmdJdGVtOjpNZXNzYWdlVGV4dCwgd2FybmluZyk7CisgICAgYXV0byAqZm9y
ZWdyb3VuZENvbG9yID0gY29sb3JGb3JJdGVtKFdhcm5pbmdJdGVtOjpNZXNzYWdlVGV4dCwgd2Fy
bmluZyk7CiAgICAgYXV0byBzdHJpbmcgPSBhZG9wdE5TKFthdHRyaWJ1dGVkU3RyaW5nIG11dGFi
bGVDb3B5XSk7CiAgICAgW3N0cmluZyBhZGRBdHRyaWJ1dGVzOkB7IE5TRm9yZWdyb3VuZENvbG9y
QXR0cmlidXRlTmFtZSA6IGZvcmVncm91bmRDb2xvciB9IHJhbmdlOk5TTWFrZVJhbmdlKDAsIFtz
dHJpbmcgbGVuZ3RoXSldOwogICAgIFtzZWxmIHNldEJhY2tncm91bmRDb2xvcjpjb2xvckZvckl0
ZW0oV2FybmluZ0l0ZW06OkJveEJhY2tncm91bmQsIHdhcm5pbmcpXTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg3
NDQ2KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjAxNiw3ICsyMDE2LDYgQEAKIAkJRjREQkMwQzEyNzZBQTZDQTAw
MDFEMTY5IC8qIF9XS01vZGFsQ29udGFpbmVySW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNERCQzBDMDI3NkFBNkNBMDAwMUQxNjkg
LyogX1dLTW9kYWxDb250YWluZXJJbmZvSW50ZXJuYWwuaCAqLzsgfTsKIAkJRjRFQjRBRkQyNjlD
RDdGMzAwRDI5N0FFIC8qIE9TU3RhdGVTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0RUI0QUZDMjY5Q0QyMzYwMEQyOTdBRSAvKiBPU1N0YXRlU1BJ
LmggKi87IH07CiAJCUY0RUM5NEUzMjM1NkNDNTcwMDBCQjYxNCAvKiBBcHBsaWNhdGlvblNlcnZp
Y2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
OUQwNEUyODIxRjdDNzNEMDA3Njc0MUQgLyogQXBwbGljYXRpb25TZXJ2aWNlc1NQSS5oICovOyB9
OwotCQlGNEZFMEEzQjI0NjMyQjYwMDAyNjMxRTEgLyogQ29jb2FDb2xvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGRTBBM0EyNDYzMkIxMDAwMjYz
MUUxIC8qIENvY29hQ29sb3IuaCAqLzsgfTsKIAkJRjYxMTNFMjUxMjZDRTE4MjAwNTdEMEE3IC8q
IEFQSVVzZXJDb250ZW50VVJMUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjYxMTNFMjQxMjZDRTE4MjAwNTdEMEE3IC8qIEFQSVVzZXJDb250
ZW50VVJMUGF0dGVybi5oICovOyB9OwogCQlGNjExM0UyOTEyNkNFMTlCMDA1N0QwQTcgLyogV0tV
c2VyQ29udGVudFVSTFBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY2MTEzRTI3MTI2Q0UxOUIwMDU3RDBBNyAvKiBXS1VzZXJDb250ZW50VVJM
UGF0dGVybi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUY2MzQ0NDU2MTJBODg1QzgwMDA2MTJEOCAvKiBBUElTZWN1cml0eU9yaWdpbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjYzNDQ0NTUxMkE4ODVD
ODAwMDYxMkQ4IC8qIEFQSVNlY3VyaXR5T3JpZ2luLmggKi87IH07CkBAIC02NDQ3LDcgKzY0NDYs
NiBAQAogCQlGNEVCNEFGQzI2OUNEMjM2MDBEMjk3QUUgLyogT1NTdGF0ZVNQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBPU1N0YXRlU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RjU5
QUQzMjA2NUE1QzkwMDZDQUE0NiAvKiBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1NlbGVjdE1lbnVMaXN0
Vmlld0NvbnRyb2xsZXIubW07IHBhdGggPSBpb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdD
b250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEY1OUFENDIwNjVB
NUNBMDA2Q0FBNDYgLyogV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5o
OyBwYXRoID0gaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNEZFMEEzQTI0NjMyQjEwMDAyNjMxRTEgLyogQ29j
b2FDb2xvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2NvYUNvbG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0RkUwQTNDMjQ2MzU2NjcwMDI2MzFFMSAvKiBDb2NvYUZvbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29jb2FGb250Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2
MTEzRTI0MTI2Q0UxODIwMDU3RDBBNyAvKiBBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY2MTEzRTI2MTI2Q0UxOUIwMDU3RDBBNyAv
KiBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05MTY5LDcgKzkxNjcsNiBAQAogCQk0NDUwQUVCRTFEQzNGQUFDMDA5OTQz
RjIgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAot
CQkJCUY0RkUwQTNBMjQ2MzJCMTAwMDI2MzFFMSAvKiBDb2NvYUNvbG9yLmggKi8sCiAJCQkJRjRG
RTBBM0MyNDYzNTY2NzAwMjYzMUUxIC8qIENvY29hRm9udC5oICovLAogCQkJCTQ0ODI3MzQ2MjQ1
MjhGNjAwMEE5NTQ5MyAvKiBDb2NvYUltYWdlLmggKi8sCiAJCQkJQkNFMDkzNzYxNEZCMTI4QjAw
MTEzOEQ5IC8qIExheWVySG9zdGluZ0NvbnRleHQuaCAqLywKQEAgLTEyODQwLDcgKzEyODM3LDYg
QEAKIAkJCQk0NjU5RjI1RjI3NUZGNkIyMDBCQkIzNjkgLyogQ2FwdGl2ZVBvcnRhbE1vZGVPYnNl
cnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNTc5QTYyNjM0ODM2NzAwRjVDNUU5IC8qIENH
RGlzcGxheUxpc3RJbWFnZUJ1ZmZlckJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3QjRC
NDYwMjBCNTA0QUMwMEQ0QUQ3OSAvKiBDbGllbnRDZXJ0aWZpY2F0ZUF1dGhlbnRpY2F0aW9uWFBD
Q29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKLQkJCQlGNEZFMEEzQjI0NjMyQjYwMDAyNjMxRTEg
LyogQ29jb2FDb2xvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDQ4MjczNDcyNDUyOEY2MDAwQTk1
NDkzIC8qIENvY29hSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTFBRDUyMUNCQzQ4MkYw
MDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdCRUM0RTExOTQ5
MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCBpbiBIZWFkZXJz
ICovLApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLm1tCShyZXZpc2lvbiAyODc0NDYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2
IEBACiAjaWYgRU5BQkxFKFBERktJVF9QTFVHSU4pCiAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJz
LmgiCi0jaW1wb3J0ICJDb2NvYUNvbG9yLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAj
aW1wb3J0ICJGcmFtZUluZm9EYXRhLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCkBAIC02Miw2ICs2
MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0NTU1Byb3BlcnR5TmFtZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvQ2hyb21lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yLmg+CisjaW1wb3J0IDxXZWJD
b3JlL0NvbG9yQ29jb2EuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JTZXJpYWxpemF0aW9uLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0N1cnNvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EaWN0aW9uYXJ5
TG9va3VwLmg+CkBAIC02NTYsNyArNjU2LDcgQEAgaW5saW5lIFBERlBsdWdpbjo6UERGUGx1Z2lu
KFdlYkZyYW1lJiBmcmFtZSwgSFRNTFBsdWdJCiAgICAgICAgIGF1dG8qIGRvY3VtZW50ID0gZnJh
bWUuY29yZUZyYW1lKCktPmRvY3VtZW50KCk7CiAKICAgICAgICAgLy8gRklYTUU6IDxyZGFyOi8v
cHJvYmxlbS83NTMzMjk0OD4gZ2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gUERGS2l0IGlu
c3RlYWQgb2YgaGFyZGNvZGluZyBpdAotICAgICAgICBkb2N1bWVudC0+Ym9keU9yRnJhbWVzZXQo
KS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShXZWJDb3JlOjpDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvciwgV2ViQ29yZTo6c2VyaWFsaXphdGlvbkZvckhUTUwoV2ViQ29yZTo6cm91bmRBbmRDbGFt
cFRvU1JHQkFMb3NzeShbQ29jb2FDb2xvciBncmF5Q29sb3JdLkNHQ29sb3IpKSk7CisgICAgICAg
IGRvY3VtZW50LT5ib2R5T3JGcmFtZXNldCgpLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KFdlYkNv
cmU6OkNTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBXZWJDb3JlOjpzZXJpYWxpemF0aW9uRm9y
SFRNTChXZWJDb3JlOjpyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KFtXZWJDb3JlOjpDb2NvYUNv
bG9yIGdyYXlDb2xvcl0uQ0dDb2xvcikpKTsKICAgICB9CiAKICAgICBpZiAoc3VwcG9ydHNGb3Jt
cygpKSB7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyODc0NDcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNiBAQAorMjAyMS0xMi0yNiAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgUmVwbGFjZSBXZWJLaXQvQ29jb2FDb2xvci5oIHdpdGggV2ViQ29yZS9D
b2xvckNvY29hLmgsIG5vdCBjb25mdXNpbmcgYXQgYWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCisKKyAgICAgICAgVXNlIFdlYkNvcmUvQ29sb3JDb2NvYS5oIGluc3RlYWQu
CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlIVE1MLm1t
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3VGhl
bWVDb2xvci5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
V2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbToKKwogMjAyMS0xMi0yNCAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bYTEx
eV0gRXhwb3NlIGxpdmUgcmVnaW9uIGF0dHJpYnV0ZXMgd2l0aCBBVFNQSQpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db3B5SFRNTC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvcHlIVE1MLm1tCShyZXZp
c2lvbiAyODc0MzEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Nv
cHlIVE1MLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsMTAgQEAKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQogCi0jaW1wb3J0ICJDb2NvYUNvbG9yLmgiCiAjaW1wb3J0ICJQYXN0ZWJvYXJk
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvckNvY29hLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTUzLDcgKzE1Myw3IEBAIFRFU1Qo
Q29weUhUTUwsIFNhbml0aXphdGlvblByZXNlcnZlc0NoYXJhY3RlclNldCkKICAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKCLmiJHlj6vorJ3mlofmmIciLCBbYXR0cmlidXRlZFN0cmluZyBzdHJpbmdd
KTsKIAogICAgICAgICBfX2Jsb2NrIEJPT0wgZm91bmRDb2xvckF0dHJpYnV0ZSA9IE5POwotICAg
ICAgICBbYXR0cmlidXRlZFN0cmluZyBlbnVtZXJhdGVBdHRyaWJ1dGU6TlNGb3JlZ3JvdW5kQ29s
b3JBdHRyaWJ1dGVOYW1lIGluUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgNSkgb3B0aW9uczowIHVzaW5n
QmxvY2s6XihDb2NvYUNvbG9yICpjb2xvciwgTlNSYW5nZSByYW5nZSwgQk9PTCopIHsKKyAgICAg
ICAgW2F0dHJpYnV0ZWRTdHJpbmcgZW51bWVyYXRlQXR0cmlidXRlOk5TRm9yZWdyb3VuZENvbG9y
QXR0cmlidXRlTmFtZSBpblJhbmdlOk5TTWFrZVJhbmdlKDAsIDUpIG9wdGlvbnM6MCB1c2luZ0Js
b2NrOl4oV2ViQ29yZTo6Q29jb2FDb2xvciAqY29sb3IsIE5TUmFuZ2UgcmFuZ2UsIEJPT0wqKSB7
CiAgICAgICAgICAgICBDR0Zsb2F0IHJlZENvbXBvbmVudCA9IDA7CiAgICAgICAgICAgICBDR0Zs
b2F0IGdyZWVuQ29tcG9uZW50ID0gMDsKICAgICAgICAgICAgIENHRmxvYXQgYmx1ZUNvbXBvbmVu
dCA9IDA7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vi
Vmlld1RoZW1lQ29sb3IubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdUaGVtZUNvbG9yLm1tCShyZXZpc2lvbiAyODc0MzEpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1RoZW1lQ29s
b3IubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKIAogI2ltcG9ydCAiY29uZmln
LmgiCiAKLSNpbXBvcnQgIkNvY29hQ29sb3IuaCIKICNpbXBvcnQgIlRlc3RDb2NvYS5oIgogI2lt
cG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2
YXRlLmg+CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vi
Vmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRD
b2xvci5tbQkocmV2aXNpb24gMjg3NDMxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3IubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDkgKzI1LDkgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpbXBvcnQg
IkNvY29hQ29sb3IuaCIKICNpbXBvcnQgIlRlc3RDb2NvYS5oIgogI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Db2xvckNvY29hLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCkBAIC00Niw3
ICs0Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvcj4gZGVmYXVsdEJhY2tncm91bmRDb2xv
cigpCiAjZWxpZiBIQVZFKE9TX0RBUktfTU9ERV9TVVBQT1JUKSAmJiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGF1dG8gY29sb3IgPSByZXRhaW5QdHIoVUlDb2xvci5zeXN0ZW1CYWNrZ3JvdW5k
Q29sb3IpOwogI2Vsc2UKLSAgICBhdXRvIGNvbG9yID0gcmV0YWluUHRyKFtDb2NvYUNvbG9yIHdo
aXRlQ29sb3JdKTsKKyAgICBhdXRvIGNvbG9yID0gcmV0YWluUHRyKFtXZWJDb3JlOjpDb2NvYUNv
bG9yIHdoaXRlQ29sb3JdKTsKICNlbmRpZgogCiAgICAgLy8gU29tZSBvZiB0aGUgYWJvdmUgY2Fu
IHNvbWV0aW1lcyBiZSBhIG1vbm9jaHJvbWUgY29sb3IsIHNvIGNvbnZlcnQgaXQgdG8gc1JHQiBz
byB0aGUgY29tcGFyaXNvbnMgYmVsb3cgd29yay4KQEAgLTE5Niw3ICsxOTYsNyBAQCBURVNUKFdL
V2ViVmlld1VuZGVyUGFnZUJhY2tncm91bmRDb2xvciwgS1ZPKQogICAgIEVYUEVDVF9UUlVFKENH
Q29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0Nv
bG9yLCByZWRDb2xvci5nZXQoKSkpOwogCiAgICAgW3VuZGVyUGFnZUJhY2tncm91bmRDb2xvck9i
c2VydmVyIHNldFN0YXRlOkAic2hvdWxkLW5vdC1jaGFuZ2UiXTsKLSAgICBbd2ViVmlldyBzZXRV
bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W0NvY29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpyZWRD
b2xvci5nZXQoKV1dOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpb
V2ViQ29yZTo6Q29jb2FDb2xvciBjb2xvcldpdGhDR0NvbG9yOnJlZENvbG9yLmdldCgpXV07CiAg
ICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNr
Z3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwogICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVh
bFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCByZWRD
b2xvci5nZXQoKSkpOwogCkBAIC0yMTIsNyArMjEyLDcgQEAgVEVTVChXS1dlYlZpZXdVbmRlclBh
Z2VCYWNrZ3JvdW5kQ29sb3IsIEtWTykKICAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0Nv
bG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9y
LmdldCgpKSk7CiAKICAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3Rh
dGU6QCJzaG91bGQtbm90LWNoYW5nZSJdOwotICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tn
cm91bmRDb2xvcjpbQ29jb2FDb2xvciBjb2xvcldpdGhDR0NvbG9yOmJsdWVDb2xvci5nZXQoKV1d
OworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFnZUJhY2tncm91bmRDb2xvcjpbV2ViQ29yZTo6Q29j
b2FDb2xvciBjb2xvcldpdGhDR0NvbG9yOmJsdWVDb2xvci5nZXQoKV1dOwogICAgIEVYUEVDVF9O
U1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
T2JzZXJ2ZXIgc3RhdGVdKTsKICAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3
ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgYmx1ZUNvbG9yLmdldCgp
KSk7CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCBURVNUKFdLV2ViVmlld1VuZGVyUGFnZUJhY2tncm91
bmRDb2xvciwgS1ZPKQogICAgIEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZp
ZXcgdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yXS5DR0NvbG9yLCBkZWZhdWx0QmFja2dyb3VuZENv
bG9yKCkuZ2V0KCkpKTsKIAogICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBz
ZXRTdGF0ZTpAInNob3VsZC1ub3QtY2hhbmdlIl07Ci0gICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdl
QmFja2dyb3VuZENvbG9yOltDb2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6ZGVmYXVsdEJhY2tn
cm91bmRDb2xvcigpLmdldCgpXV07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yOltXZWJDb3JlOjpDb2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6ZGVmYXVsdEJhY2tn
cm91bmRDb2xvcigpLmdldCgpXV07CiAgICAgRVhQRUNUX05TU1RSSU5HX0VRKCJzaG91bGQtbm90
LWNoYW5nZSIsIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzdGF0ZV0pOwogICAg
IEVYUEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yXS5DR0NvbG9yLCBkZWZhdWx0QmFja2dyb3VuZENvbG9yKCkuZ2V0KCkpKTsKIApA
QCAtMjM4LDEyICsyMzgsMTIgQEAgVEVTVChXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3JvdW5kQ29s
b3IsIEtWTykKICAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHVu
ZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgZGVmYXVsdEJhY2tncm91bmRDb2xvcigp
LmdldCgpKSk7CiAKICAgICBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9yT2JzZXJ2ZXIgc2V0U3Rh
dGU6QCJiZWZvcmUtbm9ubnVsbC1vdmVycmlkZSJdOwotICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvcjpbQ29jb2FDb2xvciBjb2xvcldpdGhDR0NvbG9yOnJlZENvbG9yLmdl
dCgpXV07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOltXZWJDb3Jl
OjpDb2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6cmVkQ29sb3IuZ2V0KCldXTsKICAgICBFWFBF
Q1RfTlNTVFJJTkdfRVEoImFmdGVyLW5vbm51bGwtb3ZlcnJpZGUiLCBbdW5kZXJQYWdlQmFja2dy
b3VuZENvbG9yT2JzZXJ2ZXIgc3RhdGVdKTsKICAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxU
b0NvbG9yKFt3ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29s
b3IuZ2V0KCkpKTsKIAogICAgIFt1bmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3JPYnNlcnZlciBzZXRT
dGF0ZTpAInNob3VsZC1ub3QtY2hhbmdlIl07Ci0gICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFj
a2dyb3VuZENvbG9yOltDb2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6cmVkQ29sb3IuZ2V0KCld
XTsKKyAgICBbd2ViVmlldyBzZXRVbmRlclBhZ2VCYWNrZ3JvdW5kQ29sb3I6W1dlYkNvcmU6OkNv
Y29hQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpyZWRDb2xvci5nZXQoKV1dOwogICAgIEVYUEVDVF9O
U1NUUklOR19FUSgic2hvdWxkLW5vdC1jaGFuZ2UiLCBbdW5kZXJQYWdlQmFja2dyb3VuZENvbG9y
T2JzZXJ2ZXIgc3RhdGVdKTsKICAgICBFWFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3
ZWJWaWV3IHVuZGVyUGFnZUJhY2tncm91bmRDb2xvcl0uQ0dDb2xvciwgcmVkQ29sb3IuZ2V0KCkp
KTsKIApAQCAtMjkzLDEzICsyOTMsMTMgQEAgVEVTVChXS1dlYlZpZXdVbmRlclBhZ2VCYWNrZ3Jv
dW5kQ29sb3IsIE1hdGNoZXNTY3JvbGxWCiAgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9D
b2xvcihbd2ViVmlldyBzY3JvbGxWaWV3XS5iYWNrZ3JvdW5kQ29sb3IuQ0dDb2xvciwgcmVkQ29s
b3IuZ2V0KCkpKTsKICAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgc2Nyb2xsVmlld10uaW5kaWNhdG9y
U3R5bGUsIFVJU2Nyb2xsVmlld0luZGljYXRvclN0eWxlV2hpdGUpOwogCi0gICAgW3dlYlZpZXcg
c2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOltDb2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6
Ymx1ZUNvbG9yLmdldCgpXV07CisgICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENv
bG9yOltXZWJDb3JlOjpDb2NvYUNvbG9yIGNvbG9yV2l0aENHQ29sb3I6Ymx1ZUNvbG9yLmdldCgp
XV07CiAgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwogICAgIEVY
UEVDVF9UUlVFKENHQ29sb3JFcXVhbFRvQ29sb3IoW3dlYlZpZXcgdW5kZXJQYWdlQmFja2dyb3Vu
ZENvbG9yXS5DR0NvbG9yLCBibHVlQ29sb3IuZ2V0KCkpKTsKICAgICBFWFBFQ1RfVFJVRShDR0Nv
bG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHNjcm9sbFZpZXddLmJhY2tncm91bmRDb2xvci5DR0Nv
bG9yLCBibHVlQ29sb3IuZ2V0KCkpKTsKICAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgc2Nyb2xsVmll
d10uaW5kaWNhdG9yU3R5bGUsIFVJU2Nyb2xsVmlld0luZGljYXRvclN0eWxlV2hpdGUpOwogCi0g
ICAgW3dlYlZpZXcgc2V0VW5kZXJQYWdlQmFja2dyb3VuZENvbG9yOltDb2NvYUNvbG9yIGNvbG9y
V2l0aENHQ29sb3I6d2hpdGVDb2xvci5nZXQoKV1dOworICAgIFt3ZWJWaWV3IHNldFVuZGVyUGFn
ZUJhY2tncm91bmRDb2xvcjpbV2ViQ29yZTo6Q29jb2FDb2xvciBjb2xvcldpdGhDR0NvbG9yOndo
aXRlQ29sb3IuZ2V0KCldXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVw
ZGF0ZV07CiAgICAgRVhQRUNUX1RSVUUoQ0dDb2xvckVxdWFsVG9Db2xvcihbd2ViVmlldyB1bmRl
clBhZ2VCYWNrZ3JvdW5kQ29sb3JdLkNHQ29sb3IsIHdoaXRlQ29sb3IuZ2V0KCkpKTsKICAgICBF
WFBFQ1RfVFJVRShDR0NvbG9yRXF1YWxUb0NvbG9yKFt3ZWJWaWV3IHNjcm9sbFZpZXddLmJhY2tn
cm91bmRDb2xvci5DR0NvbG9yLCB3aGl0ZUNvbG9yLmdldCgpKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>