<?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>207203</bug_id>
          
          <creation_ts>2020-02-04 08:48:37 -0800</creation_ts>
          <short_desc>[Cocoa] Remove NSKeyedArchiverSPI.h now that WebKit only uses API</short_desc>
          <delta_ts>2020-02-04 19:46:19 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>andersca</cc>
    
    <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jbedard</cc>
    
    <cc>mifenton</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1614566</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-04 08:48:37 -0800</bug_when>
    <thetext>Remove NSKeyedArchiverSPI.h now that WebKit only uses API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614577</commentid>
    <comment_count>1</comment_count>
      <attachid>389669</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-04 09:02:43 -0800</bug_when>
    <thetext>Created attachment 389669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614909</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-04 19:45:18 -0800</bug_when>
    <thetext>Committed r255784: &lt;https://trac.webkit.org/changeset/255784&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614910</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-04 19:46:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/59176459&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389669</attachid>
            <date>2020-02-04 09:02:43 -0800</date>
            <delta_ts>2020-02-04 12:57:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207203-20200204090240.patch</filename>
            <type>text/plain</type>
            <size>56522</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODZjMGI4YTA1MjljNTMz
NjE5YjkxMWExNjQ1ZTk4ZjhkOGFlZWY2OS4uNjY1NmVjMDkwM2Q1ZjU0YmMyZDUxZWYzMWQzNTk0
MWQ4ZmE5NTcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTAyLTA0ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgTlNLZXllZEFyY2hp
dmVyU1BJLmggbm93IHRoYXQgV2ViS2l0IG9ubHkgdXNlcyBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzIwMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9FZGl0b3JDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcp
OiBSZW1vdmVkIE5TS2V5ZWRBcmNoaXZlclNQSS5oIGhlYWRlciBhbmQgdXNlCisgICAgICAgIE5T
S2V5ZWRBcmNoaXZlciBtZXRob2RzIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhyb3VnaCBXZWJLaXQg
ZnVuY3Rpb25zLgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmVN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVSZXNvdXJj
ZVJlc3BvbnNlRnJvbU1hY0FyY2hpdmVkRGF0YSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOiBEaXR0
by4KKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRX
cml0ZSBjb25zdCk6IERpdHRvLiBBbHNvIGFkZGVkCisgICAgICAgIGEgbWlzc2luZyB0eXBlIGNo
ZWNrIHdoZW4gdW5hcmNoaXZpbmcgYSBkaWN0aW9uYXJ5LgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uTGlzdCk6IERpdHRvLiBBbHNvIGFkZGVkIGEgbWlz
c2luZyBudWxsIGNoZWNrLgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBT
dXBwb3J0Lm1tOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVDRlVSTFJlc3Bv
bnNlRnJvbVJlc3BvbnNlRGF0YSk6IERpdHRvLgorCiAyMDIwLTAxLTMxICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBzcGVj
aWZ5aW5nIGJhY2tncm91bmQgY29sb3JzIHdoZW4gc2V0dGluZyBtYXJrZWQgdGV4dApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKaW5kZXggZTk3ZTI4YzMwNzYzZDRlYTM2ZDNhYjY3NjdhOTJkMjEzNzhmYmZkNC4u
N2RkNWVmYWE0NTM3MWU0N2QwYzljYWJlZjliMjU3MWUxYzhjZjU1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDItMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgorCisgICAgICAgIFJlbW92ZSBOU0tleWVkQXJjaGl2ZXJTUEkuaCBub3cgdGhhdCBX
ZWJLaXQgb25seSB1c2VzIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA3MjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUmVtb3ZlIE5TS2V5
ZWRBcmNoaXZlclNQSS5oLgorICAgICAgICAqIHBhbC9QbGF0Zm9ybU1hYy5jbWFrZTogRGl0dG8u
CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaDogUmVtb3ZlZC4K
KwogMjAyMC0wMS0zMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBiYWNrZ3JvdW5kIGNvbG9ycyB3aGVu
IHNldHRpbmcgbWFya2VkIHRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmNiM2Y2OTAwOGIzMmZjZTI4MzRiZWI3
ZjJiZTU2NmQ2NTRlNzY4Ni4uYThiMDdiMzBlZjQ1NjUzMGY5M2RlMTk0YzhlYjgyOWQxMTc2MzI0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1OSBAQAorMjAyMC0wMi0wNCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIE5TS2V5ZWRBcmNoaXZlclNQSS5oIG5v
dyB0aGF0IFdlYktpdCBvbmx5IHVzZXMgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcyMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL2lvcy9BY2Nlc3NpYmlsaXR5SU9TLm1tOgor
ICAgICAgICAoV2ViS2l0OjpuZXdBY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW4pOiBSZW1vdmVkIGlu
Y2x1ZGUgb2YgTlNLZXllZEFyY2hpdmVyU1BJLmg7CisgICAgICAgIHVzZSBOU0tleWVkQXJjaGl2
ZXIgbWV0aG9kcyBkaXJlY3RseS4KKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbToKKyAgICAgICAgKElQQzo6ZW5jb2RlU2VjdXJlQ29kaW5nSW50ZXJuYWwpOiBE
aXR0by4KKyAgICAgICAgKElQQzo6ZGVjb2RlU2VjdXJlQ29kaW5nSW50ZXJuYWwpOiBEaXR0by4K
KworICAgICAgICAqIFNoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0Lm1tOiBSZW1vdmVk
IGluY2x1ZGVkIG9mIE5TS2V5ZWRBcmNoaXZlclNQSS5oLgorICAgICAgICAqIFNoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbTogRGl0dG8uCisgICAgICAgICogU2hhcmVk
L2lvcy9JbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbTogRGl0dG8uCisKKyAgICAg
ICAgKiBTaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5tbToKKyAgICAgICAgKElQ
Qzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI+Ojpl
bmNvZGUpOiBSZW1vdmVkCisgICAgICAgIGluY2x1ZGUgb2YgTlNLZXllZEFyY2hpdmVyU1BJLmg7
IHVzZSBOU0tleWVkQXJjaGl2ZXIgbWV0aG9kcyBkaXJlY3RseS4KKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI+OjpkZWNvZGUp
OiBEaXR0by4KKworICAgICAgICAqIFNoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW06
IFJlbW92ZWQgaW5jbHVkZWQgb2YgTlNLZXllZEFyY2hpdmVyU1BJLmguCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6
QXR0YWNobWVudDo6Y3JlYXRlU2VyaWFsaXplZFJlcHJlc2VudGF0aW9uIGNvbnN0KTogUmVtb3Zl
ZAorICAgICAgICBpbmNsdWRlIG9mIE5TS2V5ZWRBcmNoaXZlclNQSS5oOyB1c2UgTlNLZXllZEFy
Y2hpdmVyIG1ldGhvZHMgZGlyZWN0bHkuIEFsc28KKyAgICAgICAgcmVmYWN0b3JlZCBzbyB0aGUg
IUNBTl9TRUNVUkVMWV9BUkNISVZFX0ZJTEVfV1JBUFBFUiBwYXRoIHNoYXJlcyBtb3JlIGNvZGUK
KyAgICAgICAgd2l0aCB0aGUgbW9kZXJuIGNvZGUgcGF0aC4gSSB0aGluayB3ZSBjYW4gcmVtb3Zl
IGl0IGVudGlyZWx5IG9uY2Ugd2UgYnVtcAorICAgICAgICB0aGUgbWluaW11bSB2ZXJzaW9uIG9m
IG1hY09TIGEgYml0IG1vcmUuCisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUZyb21T
ZXJpYWxpemVkUmVwcmVzZW50YXRpb24pOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldE9i
amVjdDpmb3JCdW5kbGVQYXJhbWV0ZXI6XSk6IERpdHRvLgorICAgICAgICAoLVtXS1Byb2Nlc3NQ
b29sIF9zZXRPYmplY3RzRm9yQnVuZGxlUGFyYW1ldGVyc1dpdGhEaWN0aW9uYXJ5Ol0pOiBEaXR0
by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IGluaXRXaXRoQ29kZXI6XSk6IERpdHRvLgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3NldElucHV0RGVsZWdhdGU6XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBpbml0V2l0aENvZGVyOl0pOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW06CisgICAgICAgICgtW19XS0FwcGxp
Y2F0aW9uTWFuaWZlc3QgaW5pdFdpdGhDb2RlcjpdKTogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKTogRGl0dG8uCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmVsZW1lbnREaWRGb2N1cyk6IERpdHRvLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlciBfc2V0Rm9ybURlbGVnYXRlOl0pOiBEaXR0by4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZU1hYy5tbTogUmVtb3Zl
ZCBpbmNsdWRlIG9mIE5TS2V5ZWRBcmNoaXZlclNQSS5oCisgICAgICAgIChXZWJLaXQ6OmNyZWF0
ZVVuYXJjaGl2ZXIpOiBBZGRlZCBoZWxwZXIgZnVuY3Rpb24gdG8gbWFrZSB0aGUgY29kZSBiZWxv
dyBsZXNzIHJlcGV0aXRpdmUuCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjppbml0
aWFsaXplKTogVXNlIHRoZSBjcmVhdGVVbmFyY2hpdmVyIGZ1bmN0aW9uIGFib3ZlIGFuZCB0aGUK
KyAgICAgICAgTlNLZXllZEFyY2hpdmVyIG1ldGhvZHMgZGlyZWN0bHkuCisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlOjpjbGFzc2VzRm9yQ29kZXIpOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldEJ1bmRsZVBhcmFtZXRlcik6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0QnVuZGxlUGFyYW1ldGVycyk6IERpdHRvLgor
CiAyMDIwLTAxLTMxICBEYXZpZCBRdWVzYWRhICA8ZGF2aWRfcXVlc2FkYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTihyMjUyMTg1KTogTmV0d29ya1Nlc3Npb25Db2NvYSBjYW5jZWxz
IGRvd25sb2FkcyB0aGF0IHJlY2VpdmUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE0
MTlhYzk4YjRkMTkyYzlmMzYxZGIxOTc3M2YyYjZmYjhlMGM5Y2EuLjM4ZDdmYTllNWQwOWMyY2Q5
ZDhjNjA4ZWJhMzhlNzA1MDRhMzA5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9Q
QUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFM
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMCw3ICsxMzAsNiBAQAogCQk1QzdDNzg3
NDIzQUMzRTc3MDA2NUY0N0UgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25Tb2Z0TGluay5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M3ODcyMjNBQzNF
NzcwMDY1RjQ3RSAvKiBNYW5hZ2VkQ29uZmlndXJhdGlvblNvZnRMaW5rLm1tICovOyB9OwogCQk1
QzdDNzg3NjIzQUMzRTg1MDA2NUY0N0UgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M3ODc1MjNBQzNF
ODUwMDY1RjQ3RSAvKiBNYW5hZ2VkQ29uZmlndXJhdGlvblNQSS5oICovOyB9OwogCQk2M0M3RURD
NzIxQUZBRTA0MDA2QTdCOTkgLyogTlNQcm9ncmVzc1NQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjNFMzY5RjkyMUFGQTgzRjAwMUMxNEJDIC8qIE5T
UHJvZ3Jlc3NTUEkuaCAqLzsgfTsKLQkJN0ExNjU2NDQxRjk3QjJCOTAwQkEzQ0U0IC8qIE5TS2V5
ZWRBcmNoaXZlclNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0ExNjU2NDMxRjk3QjJCODAwQkEzQ0U0IC8qIE5TS2V5ZWRBcmNoaXZlclNQSS5oICov
OyB9OwogCQk3QTM2RDBGOTIyM0FEOUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTM2RDBGODIyM0FE
OUFCMDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggKi87IH07CiAJCTdBM0E2QTgwMjBDQURC
NDcwMDMxN0FBRSAvKiBOU0ltYWdlU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTNBNkE3RjIwQ0FEQjQ2MDAzMTdBQUUgLyogTlNJbWFnZVNQSS5o
ICovOyB9OwogCQlBMTAyNjU4OTFGNTY3NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTAyNjU4ODFGNTY3
NDdBMDBCNEM4NDQgLyogSElUb29sYm94U1BJLmggKi87IH07CkBAIC0zMDYsNyArMzA1LDYgQEAK
IAkJNUM3Qzc4NzIyM0FDM0U3NzAwNjVGNDdFIC8qIE1hbmFnZWRDb25maWd1cmF0aW9uU29mdExp
bmsubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNYW5hZ2VkQ29u
ZmlndXJhdGlvblNvZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzdD
Nzg3NTIzQUMzRTg1MDA2NUY0N0UgLyogTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFuYWdlZENvbmZpZ3VyYXRpb25TUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjNFMzY5RjkyMUFGQTgzRjAwMUMxNEJDIC8qIE5T
UHJvZ3Jlc3NTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNQcm9ncmVzc1NQSS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk3QTE2NTY0MzFGOTdCMkI4MDBCQTNDRTQgLyogTlNLZXllZEFy
Y2hpdmVyU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TS2V5ZWRBcmNo
aXZlclNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTM2RDBGODIyM0FEOUFC
MDBCMDUyMkUgLyogQ29tbW9uQ3J5cHRvU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbW1vbkNyeXB0b1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QTNBNkE3RjIwQ0FEQjQ2MDAzMTdBQUUgLyogTlNJbWFnZVNQSS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOU0ltYWdlU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzRTU5MDlDMUY5M0JGMUUwMDY3RjhDRiAvKiBVbmVuY29kYWJsZUhhbmRsaW5nLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFVuZW5jb2RhYmxlSGFuZGxpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQzOCw3ICs0MzYsNiBAQAogCQkJCTBDMkRBMTMyMUYzQkVCNDkwMERCQzMxNyAv
KiBOU0V4dGVuc2lvblNQSS5oICovLAogCQkJCTBDMkRBMTMzMUYzQkVCNDkwMERCQzMxNyAvKiBO
U0ZpbGVNYW5hZ2VyU1BJLmggKi8sCiAJCQkJRjQ0MjkxNUQxRkE1MjQ3MzAwMkNDOTNFIC8qIE5T
RmlsZVNpemVGb3JtYXR0ZXJTUEkuaCAqLywKLQkJCQk3QTE2NTY0MzFGOTdCMkI4MDBCQTNDRTQg
LyogTlNLZXllZEFyY2hpdmVyU1BJLmggKi8sCiAJCQkJNjNFMzY5RjkyMUFGQTgzRjAwMUMxNEJD
IC8qIE5TUHJvZ3Jlc3NTUEkuaCAqLywKIAkJCQkwQzJEQTEzNDFGM0JFQjQ5MDBEQkMzMTcgLyog
TlNTdHJpbmdTUEkuaCAqLywKIAkJCQkwQzJEQTEzNTFGM0JFQjQ5MDBEQkMzMTcgLyogTlNUb3Vj
aEJhclNQSS5oICovLApAQCAtNzg3LDcgKzc4NCw2IEBACiAJCQkJQTEwODI2RkUxRjU4QTQzMzAw
NDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBM0E2QTgwMjBD
QURCNDcwMDMxN0FBRSAvKiBOU0ltYWdlU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5
MTFGNDUxMzBGMDBGNEVCQjYgLyogTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjb2duaXplclNQ
SS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0ExNjU2NDQxRjk3QjJCOTAwQkEzQ0U0IC8qIE5TS2V5
ZWRBcmNoaXZlclNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTIxRjQ1MTMwRjAwRjRF
QkI2IC8qIE5TTWVudVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTMxRjQ1MTMwRjAw
RjRFQkI2IC8qIE5TUGFzdGVib2FyZFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTVENDVEMTQy
MTA2QTE4NzAwRDJCNzM4IC8qIE5TUG9wb3ZlckNvbG9yV2VsbFNQSS5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAyMTk3MjRkNGU4
ZmQ2NTRiMDg0Mjg0ODBkYzEzZmE2Zjc2MWE4YTFmLi5jNzJiM2Y3YzdmZjA0MGYxNWVlYjc4MzA4
NGY2ZDQ5OTRhZjcyM2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRm
b3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21h
a2UKQEAgLTQ0LDcgKzQ0LDYgQEAgbGlzdChBUFBFTkQgUEFMX1BVQkxJQ19IRUFERVJTCiAgICAg
c3BpL2NvY29hL05TRXh0ZW5zaW9uU1BJLmgKICAgICBzcGkvY29jb2EvTlNGaWxlTWFuYWdlclNQ
SS5oCiAgICAgc3BpL2NvY29hL05TRmlsZVNpemVGb3JtYXR0ZXJTUEkuaAotICAgIHNwaS9jb2Nv
YS9OU0tleWVkQXJjaGl2ZXJTUEkuaAogICAgIHNwaS9jb2NvYS9OU1Byb2dyZXNzU1BJLmgKICAg
ICBzcGkvY29jb2EvTlNTdHJpbmdTUEkuaAogICAgIHNwaS9jb2NvYS9OU1RvdWNoQmFyU1BJLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNo
aXZlclNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hp
dmVyU1BJLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwMzhlZTE3MTZjYzQ3ZDU2
NzFkOWI3NGNjMjdiN2IxMGI5NmJkNmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNLZXllZEFy
Y2hpdmVyU1BJLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW1wb3J0
IDxBdmFpbGFiaWxpdHkuaD4KLSNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+Ci0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2ltcG9ydCA8
Rm91bmRhdGlvbi9OU0tleWVkQXJjaGl2ZXJfUHJpdmF0ZS5oPgotI2Vsc2UKLSNpbXBvcnQgPEZv
dW5kYXRpb24vTlNDb2Rlci5oPgotI2ltcG9ydCA8Rm91bmRhdGlvbi9OU0tleWVkQXJjaGl2ZXIu
aD4KLQotTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KLQotQGludGVyZmFjZSBOU0tleWVkQXJjaGl2
ZXIgKE5TS2V5ZWRBcmNoaXZlclNlY3VyZUNvZGluZ0luaXRpYWxpemVycykKLS0gKGluc3RhbmNl
dHlwZSlpbml0UmVxdWlyaW5nU2VjdXJlQ29kaW5nOihCT09MKXJlcXVpcmVzU2VjdXJlQ29kaW5n
IEFQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwotKyAobnVsbGFibGUgTlNE
YXRhICopYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6KGlkKW9iamVjdCByZXF1aXJpbmdTZWN1
cmVDb2Rpbmc6KEJPT0wpcmVxdWlyZXNTZWN1cmVDb2RpbmcgZXJyb3I6KE5TRXJyb3IgKiopZXJy
b3IgQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7Ci1AZW5kCi0KLUBpbnRl
cmZhY2UgTlNLZXllZFVuYXJjaGl2ZXIgKE5TS2V5ZWRVbmFyY2hpdmVyU2VjdXJlQ29kaW5nSW5p
dGlhbGl6ZXIpCi0tIChudWxsYWJsZSBpbnN0YW5jZXR5cGUpaW5pdEZvclJlYWRpbmdGcm9tRGF0
YTooTlNEYXRhICopZGF0YSBlcnJvcjooTlNFcnJvciAqKillcnJvciBBUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEzKSwgaW9zKDExLjApKTsKLSsgKG51bGxhYmxlIGlkKXVuYXJjaGl2ZWRPYmplY3RP
ZkNsYXNzOihDbGFzcyljbHMgZnJvbURhdGE6KE5TRGF0YSAqKWRhdGEgZXJyb3I6KE5TRXJyb3Ig
KiopZXJyb3IgQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7Ci0rIChudWxs
YWJsZSBpZCl1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzOihOU1NldDxDbGFzcz4gKiljbGFzc2Vz
IGZyb21EYXRhOihOU0RhdGEgKilkYXRhIGVycm9yOihOU0Vycm9yICoqKWVycm9yIEFQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwotQGVuZAotCi1OU19BU1NVTUVfTk9OTlVM
TF9FTkQKLQotI2VuZGlmIC8qIFVTRShBUFBMRV9JTlRFUk5BTF9TREspICovCi0KLWlubGluZSBO
U0RhdGEgKl9OdWxsYWJsZSBzZWN1cmVseUFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0KGlkIF9O
b25udWxsIG9iamVjdCkKLXsKLSAgICBOU0Vycm9yICplcnJvcjsKLSAgICBOU0RhdGEgKmRhdGEg
PSBbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0Om9iamVjdCByZXF1
aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOiZlcnJvcl07Ci0gICAgaWYgKCFkYXRhKQotICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBhcmNoaXZlIGRhdGE6ICVAIiwgZXJyb3IpOwotICAg
IHJldHVybiBkYXRhOwotfQotCi1pbmxpbmUgTlNEYXRhICpfTnVsbGFibGUgaW5zZWN1cmVseUFy
Y2hpdmVkRGF0YVdpdGhSb290T2JqZWN0KGlkIF9Ob25udWxsIG9iamVjdCkKLXsKLSAgICBOU0Vy
cm9yICplcnJvcjsKLSAgICBOU0RhdGEgKmRhdGEgPSBbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVk
RGF0YVdpdGhSb290T2JqZWN0Om9iamVjdCByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6Tk8gZXJyb3I6
JmVycm9yXTsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGFy
Y2hpdmUgZGF0YTogJUAiLCBlcnJvcik7Ci0gICAgcmV0dXJuIGRhdGE7Ci19Ci0KLWlubGluZSBp
ZCBfTnVsbGFibGUgaW5zZWN1cmVseVVuYXJjaGl2ZU9iamVjdEZyb21EYXRhKE5TRGF0YSAqIF9O
b25udWxsIGRhdGEpCi17Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
LSAgICByZXR1cm4gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZU9iamVjdFdpdGhEYXRhOmRh
dGFdOwotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotfQotCi1pbmxpbmUg
aWQgX051bGxhYmxlIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXNGcm9tRGF0YShOU1NldDxDbGFz
cz4gKiBfTm9ubnVsbCBjbGFzc2VzLCBOU0RhdGEgKiBfTm9ubnVsbCBkYXRhKQotewotICAgIE5T
RXJyb3IgKmVycm9yOwotICAgIGlkIHZhbHVlID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2
ZWRPYmplY3RPZkNsYXNzZXM6Y2xhc3NlcyBmcm9tRGF0YTpkYXRhIGVycm9yOiZlcnJvcl07Ci0g
ICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gdW5hcmNoaXZlIGRh
dGE6ICVAIiwgZXJyb3IpOwotICAgIHJldHVybiB2YWx1ZTsKLX0KLQotaW5saW5lIFJldGFpblB0
cjxOU0tleWVkQXJjaGl2ZXI+IHNlY3VyZUFyY2hpdmVyKCkKLXsKLSAgICBOU0tleWVkQXJjaGl2
ZXIgKmFyY2hpdmVyID0gW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRSZXF1aXJpbmdTZWN1
cmVDb2Rpbmc6WUVTXTsKLSAgICByZXR1cm4gYWRvcHROUyhhcmNoaXZlcik7Ci19Ci0KLWlubGlu
ZSBSZXRhaW5QdHI8TlNLZXllZFVuYXJjaGl2ZXI+IHNlY3VyZVVuYXJjaGl2ZXJGcm9tRGF0YShO
U0RhdGEgKl9Ob25udWxsIGRhdGEpCi17Ci0gICAgTlNLZXllZFVuYXJjaGl2ZXIgKnVuYXJjaGl2
ZXIgPSBbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOmRh
dGEgZXJyb3I6bmlsXTsKLSAgICB1bmFyY2hpdmVyLmRlY29kaW5nRmFpbHVyZVBvbGljeSA9IE5T
RGVjb2RpbmdGYWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb247Ci0gICAgcmV0dXJuIGFkb3B0TlMo
dW5hcmNoaXZlcik7Ci19Ci0KLWlubGluZSBpZCBfTnVsbGFibGUgZGVjb2RlT2JqZWN0T2ZDbGFz
c0ZvcktleUZyb21Db2RlcihDbGFzcyBfTm9ubnVsbCBjbHMsIE5TU3RyaW5nICogX05vbm51bGwg
a2V5LCBOU0NvZGVyICogX05vbm51bGwgY29kZXIpCi17Ci0gICAgcmV0dXJuIFtjb2RlciBkZWNv
ZGVPYmplY3RPZkNsYXNzOmNscyBmb3JLZXk6a2V5XTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCmluZGV4IGVhMWJlNTRkMmQ2ZTE4OTZkZmZkNzI5ODEw
Y2NlMDU0Y2IyMGFiOWQuLmNjOWUxNDRjOWM3NWI3ODRkYjU2MTI5MmU3OTQyNzdiZmI3NmQ1OWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtNTgs
NyArNTgsNiBAQAogI2ltcG9ydCAiV2ViQ29udGVudFJlYWRlci5oIgogI2ltcG9ydCAibWFya3Vw
LmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TQXR0cmlidXRlZFN0cmluZ1NQSS5oPgotI2lt
cG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHBhbC9z
eXN0ZW0vU291bmQuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1w
b3J0IDx3dGYvY29jb2EvTlNVUkxFeHRyYXMuaD4KQEAgLTc2LDcgKzc1LDcgQEAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRy
aWJ1dGVkU3RyaW5nICoKICAgICBpZiAoIWF0dHJpYnV0ZWRTdHJpbmcubGVuZ3RoKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzZWN1
cmVseUFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0KGF0dHJpYnV0ZWRTdHJpbmcpKTsKKyAgICBy
ZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFX
aXRoUm9vdE9iamVjdDphdHRyaWJ1dGVkU3RyaW5nIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMg
ZXJyb3I6bnVsbHB0cl0pOwogfQogCiBTdHJpbmcgRWRpdG9yOjpzZWxlY3Rpb25JbkhUTUxGb3Jt
YXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5
V2ViQXJjaGl2ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2Fj
eVdlYkFyY2hpdmVNYWMubW0KaW5kZXggZDBmNWEwOTA3YWZjODVkOWM1MTI2NjA0ODJiNzdkOWRk
MGUwZTZhZC4uNGRjZjFhYzc2ODY4NzRkZDEyZjgzYjkxZDYxYWRjMGI0OTk2NzNiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlTWFjLm1tCkBAIC0yOSw4ICsyOSw2IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IkxlZ2FjeVdlYkFyY2hpdmUuaCIKIAotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJj
aGl2ZXJTUEkuaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgTlNTdHJpbmcgKiBj
b25zdCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleSA9IEAiV2ViUmVzb3VyY2VS
ZXNwb25zZSI7CkBAIC00NCw5ICs0MiwxMCBAQCBSZXNvdXJjZVJlc3BvbnNlIExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZVJlc291cmNlUmVzcG9uc2VGcm9tTWFjQXJjaGl2ZWREYXRhKENGRAogICAg
ICAgICByZXR1cm4gUmVzb3VyY2VSZXNwb25zZSgpOwogICAgIAogICAgIE5TVVJMUmVzcG9uc2Ug
KnJlc3BvbnNlID0gbmlsOwotICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJG
cm9tRGF0YSgoX19icmlkZ2UgTlNEYXRhICopcmVzcG9uc2VEYXRhKTsKKyAgICBhdXRvIHVuYXJj
aGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5n
RnJvbURhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKXJlc3BvbnNlRGF0YSBlcnJvcjpudWxscHRyXSk7
CisgICAgdW5hcmNoaXZlci5nZXQoKS5kZWNvZGluZ0ZhaWx1cmVQb2xpY3kgPSBOU0RlY29kaW5n
RmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uOwogICAgIEB0cnkgewotICAgICAgICByZXNwb25z
ZSA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TVVJMUmVzcG9uc2UgY2xhc3Nd
IGZvcktleTpMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleV07CisgICAgICAgIHJl
c3BvbnNlID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpOU1VSTFJlc3BvbnNlLmNs
YXNzIGZvcktleTpMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VSZXNwb25zZUtleV07CiAgICAgICAg
IFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24g
KmV4Y2VwdGlvbikgewogICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBkZWNvZGUgTlMoSFRU
UClVUkxSZXNwb25zZTogJUAiLCBleGNlcHRpb24pOwpAQCAtNjMsNyArNjIsNyBAQCBSZXRhaW5Q
dHI8Q0ZEYXRhUmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNl
bnRhdGlvbihjb25zdCBSZQogICAgIGlmICghbnNSZXNwb25zZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBhdXRvIGFyY2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyAgICBhdXRv
IGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmlu
Z1NlY3VyZUNvZGluZzpZRVNdKTsKICAgICBbYXJjaGl2ZXIgZW5jb2RlT2JqZWN0Om5zUmVzcG9u
c2UgZm9yS2V5OkxlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVJlc3BvbnNlS2V5XTsKICAgICByZXR1
cm4gKF9fYnJpZGdlIENGRGF0YVJlZilhcmNoaXZlci5nZXQoKS5lbmNvZGVkRGF0YTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9T
Lm1tCmluZGV4IGM1NDhhNjY5NTIyZTlmN2UwM2QxNzY2Nzc2YmZmNTVjMmUxMzk4ZjYuLmVlNWZj
NWQ4ZDdhYmQwY2YyMmM4MWMyNDQ5MDU1M2U1ZjJmYmI1ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQpAQCAtNDAsNyAr
NDAsNiBAQAogI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlQYXN0
ZWJvYXJkLmg+CiAjaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExpbmsuaD4KLSNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9V
SUtpdFNQSS5oPgogI2ltcG9ydCA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvVVJM
Lmg+CkBAIC00MzYsOCArNDM1LDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNv
bnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogICAgIH0KIAogICAgIGlmIChjb250
ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpIHsKLSAgICAgICAgTlNBdHRyaWJ1dGVk
U3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3Nlc0Zyb21E
YXRhKFtOU1NldCBzZXRXaXRoT2JqZWN0OltOU0F0dHJpYnV0ZWRTdHJpbmcgY2xhc3NdXSwgY29u
dGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSk7
Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVkU3RyaW5nKQorICAgICAgICBpZiAoTlNBdHRyaWJ1dGVk
U3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRP
YmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6TlNBdHRyaWJ1dGVkU3RyaW5nLmNs
YXNzXSBmcm9tRGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0
ZU5TRGF0YSgpLmdldCgpIGVycm9yOm51bGxwdHJdKQogICAgICAgICAgICAgW3JlcHJlc2VudGF0
aW9uc1RvUmVnaXN0ZXIgYWRkUmVwcmVzZW50aW5nT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOwog
ICAgIH0KIApAQCAtNTQyLDE4ICs1NDAsMTkgQEAgVmVjdG9yPFN0cmluZz4gUGxhdGZvcm1QYXN0
ZWJvYXJkOjp0eXBlc1NhZmVGb3JET01Ub1JlYWRBbmRXcml0ZShjb25zdCBTdHJpbmcmIG8KICAg
ICAgICAgaWYgKCFwcm92aWRlci50ZWFtRGF0YS5sZW5ndGgpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICBOU0RpY3Rpb25hcnkgKnRlYW1EYXRhT2JqZWN0ID0gdW5hcmNoaXZlZE9i
amVjdE9mQ2xhc3Nlc0Zyb21EYXRhKFtOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5
IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBuaWxdLCBwcm92aWRl
ci50ZWFtRGF0YSk7Ci0gICAgICAgIGlmICghdGVhbURhdGFPYmplY3QpCisgICAgICAgIE5TU2V0
ICpjbGFzc2VzID0gW05TU2V0IHNldFdpdGhPYmplY3RzOk5TRGljdGlvbmFyeS5jbGFzcywgTlNT
dHJpbmcuY2xhc3MsIE5TQXJyYXkuY2xhc3MsIG5pbF07CisgICAgICAgIGlkIHRlYW1EYXRhT2Jq
ZWN0ID0gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6Y2xhc3Nl
cyBmcm9tRGF0YTpwcm92aWRlci50ZWFtRGF0YSBlcnJvcjpudWxscHRyXTsKKyAgICAgICAgaWYg
KCFbdGVhbURhdGFPYmplY3QgaXNLaW5kT2ZDbGFzczpOU0RpY3Rpb25hcnkuY2xhc3NdKQogICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWQgb3JpZ2luSW5UZWFtRGF0YSA9IFt0ZWFt
RGF0YU9iamVjdCBvYmplY3RGb3JLZXk6QChvcmlnaW5LZXlGb3JUZWFtRGF0YSldOwotICAgICAg
ICBpZiAoIVtvcmlnaW5JblRlYW1EYXRhIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0p
CisgICAgICAgIGlmICghW29yaWdpbkluVGVhbURhdGEgaXNLaW5kT2ZDbGFzczpOU1N0cmluZy5j
bGFzc10pCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKFN0cmluZygoTlNTdHJp
bmcgKilvcmlnaW5JblRlYW1EYXRhKSAhPSBvcmlnaW4pCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBpZCBjdXN0b21UeXBlcyA9IFsoTlNEaWN0aW9uYXJ5ICopdGVhbURhdGFPYmpl
Y3Qgb2JqZWN0Rm9yS2V5OkAoY3VzdG9tVHlwZXNLZXlGb3JUZWFtRGF0YSldOwotICAgICAgICBp
ZiAoIVtjdXN0b21UeXBlcyBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAgICAg
IGlkIGN1c3RvbVR5cGVzID0gW3RlYW1EYXRhT2JqZWN0IG9iamVjdEZvcktleTpAKGN1c3RvbVR5
cGVzS2V5Rm9yVGVhbURhdGEpXTsKKyAgICAgICAgaWYgKCFbY3VzdG9tVHlwZXMgaXNLaW5kT2ZD
bGFzczpOU0FycmF5LmNsYXNzXSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGZv
ciAoTlNTdHJpbmcgKnR5cGUgaW4gY3VzdG9tVHlwZXMpCkBAIC01OTYsOCArNTk1LDExIEBAIHN0
YXRpYyBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IGNyZWF0
ZUl0ZW1Qcm92aWRlclJlZ2lzdHJhCiAgICAgICAgICAgICBOU011dGFibGVBcnJheTxOU1N0cmlu
ZyAqPiAqdHlwZXNBc05TQXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogICAgICAgICAg
ICAgZm9yIChhdXRvJiB0eXBlIDogZGF0YS5vcmRlcmVkVHlwZXMoKSkKICAgICAgICAgICAgICAg
ICBbdHlwZXNBc05TQXJyYXkgYWRkT2JqZWN0OnR5cGVdOwotICAgICAgICAgICAgW3JlcHJlc2Vu
dGF0aW9uc1RvUmVnaXN0ZXIgc2V0VGVhbURhdGE6c2VjdXJlbHlBcmNoaXZlZERhdGFXaXRoUm9v
dE9iamVjdChAeyBAKG9yaWdpbktleUZvclRlYW1EYXRhKSA6IGRhdGEub3JpZ2luKCksIEAoY3Vz
dG9tVHlwZXNLZXlGb3JUZWFtRGF0YSkgOiB0eXBlc0FzTlNBcnJheSB9KV07Ci0gICAgICAgICAg
ICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBhZGREYXRhOnNlcmlhbGl6ZWRTaGFyZWRCdWZm
ZXIuZ2V0KCkgZm9yVHlwZTpAKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpjb2NvYVR5cGUoKSldOwor
ICAgICAgICAgICAgTlNEaWN0aW9uYXJ5ICp0ZWFtRGF0YURpY3Rpb25hcnkgPSBAeyBAKG9yaWdp
bktleUZvclRlYW1EYXRhKSA6IGRhdGEub3JpZ2luKCksIEAoY3VzdG9tVHlwZXNLZXlGb3JUZWFt
RGF0YSkgOiB0eXBlc0FzTlNBcnJheSB9OworICAgICAgICAgICAgaWYgKE5TRGF0YSAqdGVhbURh
dGEgPSBbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290T2JqZWN0OnRlYW1EYXRh
RGljdGlvbmFyeSByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTIGVycm9yOm51bGxwdHJdKSB7Cisg
ICAgICAgICAgICAgICAgW3JlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgc2V0VGVhbURhdGE6dGVh
bURhdGFdOworICAgICAgICAgICAgICAgIFtyZXByZXNlbnRhdGlvbnNUb1JlZ2lzdGVyIGFkZERh
dGE6c2VyaWFsaXplZFNoYXJlZEJ1ZmZlci5nZXQoKSBmb3JUeXBlOkAoUGFzdGVib2FyZEN1c3Rv
bURhdGE6OmNvY29hVHlwZSgpKV07CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBT
dXBwb3J0Lm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1
cHBvcnQubW0KaW5kZXggY2NmYmJlMDVlYmJhNzcyYmFkZWZkN2JhNjU2MGJiZWQyNWNjYWU0YS4u
NWU3ZDhlMTZhOThmYjcwMWY0N2M1ZTQ5N2ZiYTkxMjNkZWI3OWRjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KQEAg
LTMwLDcgKzMwLDYgQEAKICNpbXBvcnQgPENGTmV0d29yay9DRkhUVFBNZXNzYWdlLmg+CiAjaW1w
b3J0IDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29y
a1NQSS5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
I2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgpAQCAtNDMsNyArNDIsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZVRlc3RTdXBwb3J0IHsKIHN0YXRpYyBDRlVSTFJlc3BvbnNlUmVmIGNyZWF0ZUNGVVJMUmVzcG9u
c2VGcm9tUmVzcG9uc2VEYXRhKENGRGF0YVJlZiByZXNwb25zZURhdGEpCiB7CiAgICAgTlNVUkxS
ZXNwb25zZSAqcmVzcG9uc2U7Ci0gICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZl
ckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilyZXNwb25zZURhdGEpOworICAgIGF1dG8gdW5h
cmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRp
bmdGcm9tRGF0YTooX19icmlkZ2UgTlNEYXRhICopcmVzcG9uc2VEYXRhIGVycm9yOm51bGxwdHJd
KTsKKyAgICB1bmFyY2hpdmVyLmdldCgpLmRlY29kaW5nRmFpbHVyZVBvbGljeSA9IE5TRGVjb2Rp
bmdGYWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb247CiAgICAgQHRyeSB7CiAgICAgICAgIHJlc3Bv
bnNlID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbTlNVUkxSZXNwb25zZSBjbGFz
c10gZm9yS2V5OkAiV2ViUmVzb3VyY2VSZXNwb25zZSJdOyAvLyBXZWJSZXNvdXJjZVJlc3BvbnNl
S2V5IGluIFdlYlJlc291cmNlLm0KICAgICAgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2Rpbmdd
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9pb3MvQWNjZXNzaWJpbGl0eUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vaW9zL0FjY2Vzc2liaWxpdHlJT1MubW0KaW5k
ZXggNDNhM2M4YzI4NzY2NDRlZTRjODRmZjE3YmQwMzRiNmM2MjQ3ZmFlNy4uMjRkNzc5MzBkMjAx
OWI1YWQyNTMxNzQ0ODNkN2IzN2YyOWYwNzA2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9pb3MvQWNjZXNzaWJpbGl0eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL2lvcy9BY2Nlc3NpYmlsaXR5SU9TLm1tCkBAIC0yNSw3ICsyNSw2IEBACiAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUlPUy5oIgotI2ltcG9ydCA8cGFsL3Nw
aS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAKQEAgLTM1LDcgKzM0LDcgQEAgTlNEYXRhICpuZXdBY2Nlc3NpYmlsaXR5UmVtb3RlVG9rZW4o
TlNVVUlEICp1dWlkKQogewogICAgIGlmICghdXVpZCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICByZXR1cm4gc2VjdXJlbHlBcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdChAeyBAImF4LXBpZCIg
OiBAKGdldHBpZCgpKSwgQCJheC11dWlkIiA6IFt1dWlkIFVVSURTdHJpbmddLCBAImF4LXJlZ2lz
dGVyIiA6IEBZRVMgfSk7CisgICAgcmV0dXJuIFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRh
V2l0aFJvb3RPYmplY3Q6QHsgQCJheC1waWQiIDogQChnZXRwaWQoKSksIEAiYXgtdXVpZCIgOiB1
dWlkLlVVSURTdHJpbmcsIEAiYXgtcmVnaXN0ZXIiIDogQFlFUyB9IHJlcXVpcmluZ1NlY3VyZUNv
ZGluZzpZRVMgZXJyb3I6bnVsbHB0cl07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5k
ZXggNTM0YTViYWE4Y2RhZmQxMDkxNGViYTVhMzI3ODcyZjJmZTYyMzg1Yi4uZmY3NWU0NDUwN2Vm
NjUyNDYwYzc2NmQwOWRjYjNmMzJkMzUwM2QzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0zMiw3ICszMiw2IEBACiAjaW1w
b3J0ICJDb3JlVGV4dEhlbHBlcnMuaCIKICNpbXBvcnQgPENvcmVUZXh0L0NURm9udC5oPgogI2lt
cG9ydCA8Q29yZVRleHQvQ1RGb250RGVzY3JpcHRvci5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2Nv
YS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25z
Lmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgogCkBAIC0zNTksNyArMzU4LDcgQEAgc3RhdGlj
IGlubGluZSBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBkZWNvZGVOdW1iZXJJbnRlcm5hbChEZWNv
ZGVyJiBkZWNvZGVyKQogCiBzdGF0aWMgdm9pZCBlbmNvZGVTZWN1cmVDb2RpbmdJbnRlcm5hbChF
bmNvZGVyJiBlbmNvZGVyLCBpZCA8TlNPYmplY3QsIE5TU2VjdXJlQ29kaW5nPiBvYmplY3QpCiB7
Ci0gICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgYXV0byBhcmNoaXZl
ciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRSZXF1aXJpbmdTZWN1cmVD
b2Rpbmc6WUVTXSk7CiAgICAgW2FyY2hpdmVyIGVuY29kZU9iamVjdDpvYmplY3QgZm9yS2V5Ok5T
S2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgW2FyY2hpdmVyIGZpbmlzaEVuY29kaW5n
XTsKIApAQCAtMzc2LDcgKzM3NSw4IEBAIHN0YXRpYyBPcHRpb25hbDxSZXRhaW5QdHI8aWQ+PiBk
ZWNvZGVTZWN1cmVDb2RpbmdJbnRlcm5hbChEZWNvZGVyJiBkZWNvZGVyLCBOU0FyCiAgICAgaWYg
KCFkZWNvZGUoZGVjb2RlciwgZGF0YSkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
LSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoKF9fYnJpZGdl
IE5TRGF0YSAqKWRhdGEuZ2V0KCkpOworICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tO
U0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTooX19icmlkZ2Ug
TlNEYXRhICopZGF0YS5nZXQoKSBlcnJvcjpudWxscHRyXSk7CisgICAgdW5hcmNoaXZlci5nZXQo
KS5kZWNvZGluZ0ZhaWx1cmVQb2xpY3kgPSBOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhj
ZXB0aW9uOwogICAgIEB0cnkgewogICAgICAgICBpZCByZXN1bHQgPSBbdW5hcmNoaXZlciBkZWNv
ZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhBcnJheTphbGxvd2VkQ2xhc3Nlc10gZm9y
S2V5Ok5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleV07CiAgICAgICAgIEFTU0VSVCghcmVzdWx0
IHx8IFtyZXN1bHQgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyld
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25S
ZXN1bHQubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9EYXRhRGV0ZWN0aW9uUmVzdWx0
Lm1tCmluZGV4IDlkMmEzY2RlOGUyYTM0ZjNlNTVjZmM0Y2MxOWM0ODAxZGVmZjBlNTkuLmE3YTJh
OTRiZTQ0MzZlMzMyNDRkYmUwNThmYmJhNmEyZWRiNjIyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0KKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQpAQCAtMjksNyArMjksNiBA
QAogI2ltcG9ydCAiQXJndW1lbnRDb2RlcnNDb2NvYS5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU1BJ
Lmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9y
dCA8d3RmL1NvZnRMaW5raW5nLmg+CiAKIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhEYXRh
RGV0ZWN0b3JzQ29yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dl
YkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
V2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KaW5kZXggMWMxNWEyMWJmNzQzNDBhYzQyYTU2
YmFlNWJhZDE5ZjJkMzk3YzRiNy4uM2EyYmY5MzUwYTE0MGJjMjFjMGVjNmY2MjljYWM2YjQxNmQz
MDIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KQEAgLTM1LDcgKzM1LDYgQEAKICNpbXBvcnQgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMu
aD4KICNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KLSNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9pb3MvSW50
ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24ubW0KaW5kZXggMjI3NmQ2NGMxMWEyN2Q4NzYw
MmRlNzY1ZWM5YzkwNTA1YWZiZWQ2MC4uZmRjZDI1YTdkNjM1MDRlNGRmNTFhYWRmOTVlMTNlYWM2
Y2RjM2E1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvaW9zL0ludGVyYWN0aW9u
SW5mb3JtYXRpb25BdFBvc2l0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2lvcy9J
bnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5tbQpAQCAtMjksNyArMjksNiBAQAogI2lt
cG9ydCAiQXJndW1lbnRDb2RlcnNDb2NvYS5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0RhdGFEZXRlY3RvcnNDb3JlU1BJLmg+Ci0j
aW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CiAKIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhEYXRhRGV0ZWN0
b3JzQ29yZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJn
dW1lbnRDb2RlcnNNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzTWFjLm1tCmluZGV4IDhjYmRhZmJlMTQ2ZmM3NzFjMjlmM2FjOWIxYWUxYWFlOGI0
NmE4YmQuLmVlMjIyNDIzZjA0N2M5YmYwOTM2MzlkODEyYjE4MmQ4MzYxODBlZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9XZWJDb3JlQXJndW1lbnRDb2RlcnNNYWMubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkNvcmVBcmd1bWVudENvZGVyc01hYy5t
bQpAQCAtMzgsNyArMzgsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9D
Rk5ldHdvcmtTUEkuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvTWFjaFNlbmRSaWdodC5oPgogCiAjaWYgRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKQEAgLTYyNSw3ICs2MjQsNyBAQCBPcHRpb25hbDxDR0FmZmluZVRy
YW5zZm9ybT4gQXJndW1lbnRDb2RlcjxDR0FmZmluZVRyYW5zZm9ybT46OmRlY29kZShEZWNvZGVy
JiBkZQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Q29udGVudEZpbHRlclVuYmxvY2tI
YW5kbGVyPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlciYgY29udGVudEZpbHRlclVuYmxvY2tIYW5kbGVyKQogewotICAg
IGF1dG8gYXJjaGl2ZXIgPSBzZWN1cmVBcmNoaXZlcigpOworICAgIGF1dG8gYXJjaGl2ZXIgPSBh
ZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2VjdXJlQ29kaW5n
OllFU10pOwogICAgIGNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5lbmNvZGUoYXJjaGl2ZXIu
Z2V0KCkpOwogICAgIElQQzo6ZW5jb2RlKGVuY29kZXIsIChfX2JyaWRnZSBDRkRhdGFSZWYpYXJj
aGl2ZXIuZ2V0KCkuZW5jb2RlZERhdGEpOwogfQpAQCAtNjM2LDcgKzYzNSw4IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlCiAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRhKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNo
aXZlckZyb21EYXRhKChfX2JyaWRnZSBOU0RhdGEgKilkYXRhLmdldCgpKTsKKyAgICBhdXRvIHVu
YXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFk
aW5nRnJvbURhdGE6KF9fYnJpZGdlIE5TRGF0YSAqKWRhdGEuZ2V0KCkgZXJyb3I6bnVsbHB0cl0p
OworICAgIHVuYXJjaGl2ZXIuZ2V0KCkuZGVjb2RpbmdGYWlsdXJlUG9saWN5ID0gTlNEZWNvZGlu
Z0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbjsKICAgICBpZiAoIVdlYkNvcmU6OkNvbnRlbnRG
aWx0ZXJVbmJsb2NrSGFuZGxlcjo6ZGVjb2RlKHVuYXJjaGl2ZXIuZ2V0KCksIGNvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHREYXRhLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHREYXRhLm1tCmluZGV4IDdkZWQ5ZjVk
N2MwNjQ3MzVmZDg2OGNlMjcxMWRhMmUxMTJiYTI2ZDkuLmI0ZTA1MTU5NDc1NTdmMjA0MjdjOTkx
MjJiMzllMDA3MjQ3NWE0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9X
ZWJIaXRUZXN0UmVzdWx0RGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvV2Vi
SGl0VGVzdFJlc3VsdERhdGEubW0KQEAgLTM0LDcgKzM0LDYgQEAKICNpbXBvcnQgIkVuY29kZXIu
aCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCA8V2ViQ29yZS9U
ZXh0SW5kaWNhdG9yLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQ
SS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvRGF0YURldGVjdG9yc1NQSS5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9BUElBdHRhY2htZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJQXR0YWNobWVudENvY29hLm1tCmluZGV4IGEwYzE0MTZhMmRjZDVhMDkxMTMwZmY5Y2Y1
NzdjMTY4OGRhNzMzMDguLjJiNWQ4ZWU4YjcwMzk4ODBjNTc4ZTZhMGJiYmJkZDYyZWQ4MjE1NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2ht
ZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0
dGFjaG1lbnRDb2NvYS5tbQpAQCAtMjksMTIgKzI5LDEyIEBACiAjaW1wb3J0ICJQYWdlQ2xpZW50
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU2hhcmVkQnVmZmVyLmg+CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogI2ltcG9ydCA8
TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgogI2Vsc2UKICNpbXBvcnQg
PENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KICNlbmRpZgotI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAogI2RlZmluZSBDQU5fU0VDVVJFTFlfQVJDSElW
RV9GSUxFX1dSQVBQRVIgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMDE0MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDApCiAKQEAgLTE2MSwxMSArMTYxLDExIEBA
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IEF0dGFjaG1lbnQ6OmNyZWF0ZVNlcmlhbGl6
ZWRSZXByZXNlbnRhdGlvbigpIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAjaWYg
Q0FOX1NFQ1VSRUxZX0FSQ0hJVkVfRklMRV9XUkFQUEVSCi0gICAgTlNEYXRhICpzZXJpYWxpemVk
RGF0YSA9IHNlY3VyZWx5QXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3QoZmlsZVdyYXBwZXIpOwor
ICAgIGNvbnN0ZXhwciBCT09MIHNlY3VyZUNvZGluZyA9IFlFUzsKICNlbHNlCi0gICAgTlNEYXRh
ICpzZXJpYWxpemVkRGF0YSA9IGluc2VjdXJlbHlBcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdChm
aWxlV3JhcHBlcik7CisgICAgY29uc3RleHByIEJPT0wgc2VjdXJlQ29kaW5nID0gTk87CiAjZW5k
aWYKLQorICAgIE5TRGF0YSAqc2VyaWFsaXplZERhdGEgPSBbTlNLZXllZEFyY2hpdmVyIGFyY2hp
dmVkRGF0YVdpdGhSb290T2JqZWN0OmZpbGVXcmFwcGVyIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpz
ZWN1cmVDb2RpbmcgZXJyb3I6bnVsbHB0cl07CiAgICAgaWYgKCFzZXJpYWxpemVkRGF0YSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTE4MiwxMSArMTgyLDEyIEBAIHZvaWQgQXR0YWNo
bWVudDo6dXBkYXRlRnJvbVNlcmlhbGl6ZWRSZXByZXNlbnRhdGlvbihSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmCiAgICAgICAgIHJldHVybjsKIAogI2lmIENBTl9TRUNVUkVMWV9BUkNISVZF
X0ZJTEVfV1JBUFBFUgotICAgIE5TRmlsZVdyYXBwZXIgKmZpbGVXcmFwcGVyID0gdW5hcmNoaXZl
ZE9iamVjdE9mQ2xhc3Nlc0Zyb21EYXRhKG1fd2ViUGFnZS0+cGFnZUNsaWVudCgpLnNlcmlhbGl6
YWJsZUZpbGVXcmFwcGVyQ2xhc3NlcygpLCBzZXJpYWxpemVkRGF0YS5nZXQoKSk7CisgICAgTlNG
aWxlV3JhcHBlciAqZmlsZVdyYXBwZXIgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9i
amVjdE9mQ2xhc3NlczptX3dlYlBhZ2UtPnBhZ2VDbGllbnQoKS5zZXJpYWxpemFibGVGaWxlV3Jh
cHBlckNsYXNzZXMoKSBmcm9tRGF0YTpzZXJpYWxpemVkRGF0YS5nZXQoKSBlcnJvcjpudWxscHRy
XTsKICNlbHNlCi0gICAgTlNGaWxlV3JhcHBlciAqZmlsZVdyYXBwZXIgPSBpbnNlY3VyZWx5VW5h
cmNoaXZlT2JqZWN0RnJvbURhdGEoc2VyaWFsaXplZERhdGEuZ2V0KCkpOworICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgTlNGaWxlV3JhcHBlciAqZmlsZVdyYXBw
ZXIgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlT2JqZWN0V2l0aERhdGE6c2VyaWFsaXpl
ZERhdGEuZ2V0KCldOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogI2Vu
ZGlmCi0KICAgICBpZiAoIVtmaWxlV3JhcHBlciBpc0tpbmRPZkNsYXNzOk5TRmlsZVdyYXBwZXIu
Y2xhc3NdKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggYTM2ZDc1Yzc2NWRjZTAzNWU0Zjg2
MmY1NDhkNTQ2MTcyYmJlYmY5OS4uMDMyNTg0NTcxY2I2M2RiZTZiNDlhNzk1M2Y2ZThkNmQ3ZTgz
ZTM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2wubW0KQEAgLTUyLDcgKzUyLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGx1Z2luRGF0
YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2ltcG9ydCA8cGFs
L3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTlNLZXllZEFy
Y2hpdmVyU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgpAQCAtMjE0LDcgKzIxMyw3IEBA
IC0gKGlkKV9vYmplY3RGb3JCdW5kbGVQYXJhbWV0ZXI6KE5TU3RyaW5nICopcGFyYW1ldGVyCiAt
ICh2b2lkKV9zZXRPYmplY3Q6KGlkIDxOU0NvcHlpbmcsIE5TU2VjdXJlQ29kaW5nPilvYmplY3Qg
Zm9yQnVuZGxlUGFyYW1ldGVyOihOU1N0cmluZyAqKXBhcmFtZXRlcgogewogICAgIGF1dG8gY29w
eSA9IGFkb3B0TlMoWyhOU09iamVjdCAqKW9iamVjdCBjb3B5XSk7Ci0gICAgYXV0byBrZXllZEFy
Y2hpdmVyID0gc2VjdXJlQXJjaGl2ZXIoKTsKKyAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBhZG9w
dE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2VjdXJlQ29kaW5nOllF
U10pOwogCiAgICAgQHRyeSB7CiAgICAgICAgIFtrZXllZEFyY2hpdmVyIGVuY29kZU9iamVjdDpj
b3B5LmdldCgpIGZvcktleTpAInBhcmFtZXRlciJdOwpAQCAtMjM1LDcgKzIzNCw3IEBAIC0gKHZv
aWQpX3NldE9iamVjdDooaWQgPE5TQ29weWluZywgTlNTZWN1cmVDb2Rpbmc+KW9iamVjdCBmb3JC
dW5kbGVQYXJhbWV0ZXI6KE5TCiAtICh2b2lkKV9zZXRPYmplY3RzRm9yQnVuZGxlUGFyYW1ldGVy
c1dpdGhEaWN0aW9uYXJ5OihOU0RpY3Rpb25hcnkgKilkaWN0aW9uYXJ5CiB7CiAgICAgYXV0byBj
b3B5ID0gYWRvcHROUyhbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhEaWN0aW9uYXJ5OmRp
Y3Rpb25hcnkgY29weUl0ZW1zOllFU10pOwotICAgIGF1dG8ga2V5ZWRBcmNoaXZlciA9IHNlY3Vy
ZUFyY2hpdmVyKCk7CisgICAgYXV0byBrZXllZEFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRB
cmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVNdKTsKIAogICAgIEB0
cnkgewogICAgICAgICBba2V5ZWRBcmNoaXZlciBlbmNvZGVPYmplY3Q6Y29weS5nZXQoKSBmb3JL
ZXk6QCJwYXJhbWV0ZXJzIl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCA2NDdkZWQzNzY1YWZjMDIzZDYzYjM0MmRlMGVjYjBlMzljMzc0
MmQ4Li44M2Q4YWNiMDkwYjE1ZTIwZTRiNDQzZWRkMDI2MDEzNTk3NjFlYWVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTEyMyw3ICsx
MjMsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
cml0aW5nTW9kZS5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEku
aD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KICNp
bXBvcnQgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC01NTEsMTEgKzU1MCwxMSBAQCAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0V2l0aENvZGVyOmNvZGVyXSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBX
S1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gZGVjb2RlT2JqZWN0T2ZDbGFz
c0ZvcktleUZyb21Db2RlcihbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBjbGFzc10sIEAiY29uZmln
dXJhdGlvbiIsIGNvZGVyKTsKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0
aW9uID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
Y2xhc3NdIGZvcktleTpAImNvbmZpZ3VyYXRpb24iXTsKICAgICBbc2VsZiBfaW5pdGlhbGl6ZVdp
dGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dOwogCiAgICAgc2VsZi5hbGxvd3NCYWNrRm9y
d2FyZE5hdmlnYXRpb25HZXN0dXJlcyA9IFtjb2RlciBkZWNvZGVCb29sRm9yS2V5OkAiYWxsb3dz
QmFja0ZvcndhcmROYXZpZ2F0aW9uR2VzdHVyZXMiXTsKLSAgICBzZWxmLmN1c3RvbVVzZXJBZ2Vu
dCA9IGRlY29kZU9iamVjdE9mQ2xhc3NGb3JLZXlGcm9tQ29kZXIoW05TU3RyaW5nIGNsYXNzXSwg
QCJjdXN0b21Vc2VyQWdlbnQiLCBjb2Rlcik7CisgICAgc2VsZi5jdXN0b21Vc2VyQWdlbnQgPSBb
Y29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdIGZvcktleTpAImN1c3Rv
bVVzZXJBZ2VudCJdOwogICAgIHNlbGYuYWxsb3dzTGlua1ByZXZpZXcgPSBbY29kZXIgZGVjb2Rl
Qm9vbEZvcktleTpAImFsbG93c0xpbmtQcmV2aWV3Il07CiAKICNpZiBQTEFURk9STShNQUMpCkBA
IC0yNTc0LDggKzI1NzMsOSBAQCAtICh2b2lkKV9zZXRJbnB1dERlbGVnYXRlOihpZCA8X1dLSW5w
dXREZWxlZ2F0ZT4paW5wdXREZWxlZ2F0ZQogCiAgICAgICAgICAgICBOU09iamVjdCA8TlNTZWN1
cmVDb2Rpbmc+ICp1c2VyT2JqZWN0ID0gbmlsOwogICAgICAgICAgICAgaWYgKEFQSTo6RGF0YSog
ZGF0YSA9IHN0YXRpY19jYXN0PEFQSTo6RGF0YSo+KHVzZXJEYXRhKSkgewotICAgICAgICAgICAg
ICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05v
Q29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oZGF0YS0+Ynl0
ZXMoKSkpIGxlbmd0aDpkYXRhLT5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7Ci0gICAgICAgICAg
ICAgICAgYXV0byB1bmFyY2hpdmVyID0gc2VjdXJlVW5hcmNoaXZlckZyb21EYXRhKG5zRGF0YS5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFs
bG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEt
PmJ5dGVzKCkpIGxlbmd0aDpkYXRhLT5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7CisgICAgICAg
ICAgICAgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFs
bG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOm5zRGF0YS5nZXQoKSBlcnJvcjpudWxscHRyXSk7
CisgICAgICAgICAgICAgICAgdW5hcmNoaXZlci5nZXQoKS5kZWNvZGluZ0ZhaWx1cmVQb2xpY3kg
PSBOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uOwogICAgICAgICAgICAgICAg
IEB0cnkgewogICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogYWxsb3dlZENsYXNzZXMgPSBt
X3dlYlZpZXctPl9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hbGxvd2VkQ2xhc3Nlc0Zv
clBhcmFtZXRlckNvZGluZygpKQogICAgICAgICAgICAgICAgICAgICAgICAgdXNlck9iamVjdCA9
IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczphbGxvd2VkQ2xhc3NlcyBmb3JLZXk6
QCJ1c2VyT2JqZWN0Il07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCmluZGV4IGU0NjgwM2VlYmMxNjFh
MjhlMmMwYmVkMzYxODllYWNlNGRhZThjZGEuLjYyYjM5Njk0MTlmYzA4NWQyYTMyYjg4NTU2NWNj
MTU2ZWE3YmZkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC0yNSw3ICsyNSw2IEBACiAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVy
bmFsLmgiCi0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogCiAj
aW1wb3J0ICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCAiVmVyc2lvbkNoZWNrcy5o
IgpAQCAtMzE5LDE1ICszMTgsMTUgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5T
Q29kZXIgKiljb2RlcgogICAgIGlmICghKHNlbGYgPSBbc2VsZiBpbml0XSkpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICBzZWxmLnByb2Nlc3NQb29sID0gZGVjb2RlT2JqZWN0T2ZDbGFzc0Zv
cktleUZyb21Db2RlcihbV0tQcm9jZXNzUG9vbCBjbGFzc10sIEAicHJvY2Vzc1Bvb2wiLCBjb2Rl
cik7Ci0gICAgc2VsZi5wcmVmZXJlbmNlcyA9IGRlY29kZU9iamVjdE9mQ2xhc3NGb3JLZXlGcm9t
Q29kZXIoW1dLUHJlZmVyZW5jZXMgY2xhc3NdLCBAInByZWZlcmVuY2VzIiwgY29kZXIpOwotICAg
IHNlbGYudXNlckNvbnRlbnRDb250cm9sbGVyID0gZGVjb2RlT2JqZWN0T2ZDbGFzc0ZvcktleUZy
b21Db2RlcihbV0tVc2VyQ29udGVudENvbnRyb2xsZXIgY2xhc3NdLCBAInVzZXJDb250ZW50Q29u
dHJvbGxlciIsIGNvZGVyKTsKLSAgICBzZWxmLndlYnNpdGVEYXRhU3RvcmUgPSBkZWNvZGVPYmpl
Y3RPZkNsYXNzRm9yS2V5RnJvbUNvZGVyKFtXS1dlYnNpdGVEYXRhU3RvcmUgY2xhc3NdLCBAIndl
YnNpdGVEYXRhU3RvcmUiLCBjb2Rlcik7CisgICAgc2VsZi5wcm9jZXNzUG9vbCA9IFtjb2RlciBk
ZWNvZGVPYmplY3RPZkNsYXNzOltXS1Byb2Nlc3NQb29sIGNsYXNzXSBmb3JLZXk6QCJwcm9jZXNz
UG9vbCJdOworICAgIHNlbGYucHJlZmVyZW5jZXMgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFz
czpbV0tQcmVmZXJlbmNlcyBjbGFzc10gZm9yS2V5OkAicHJlZmVyZW5jZXMiXTsKKyAgICBzZWxm
LnVzZXJDb250ZW50Q29udHJvbGxlciA9IFtjb2RlciBkZWNvZGVPYmplY3RPZkNsYXNzOltXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciBjbGFzc10gZm9yS2V5OkAidXNlckNvbnRlbnRDb250cm9sbGVy
Il07CisgICAgc2VsZi53ZWJzaXRlRGF0YVN0b3JlID0gW2NvZGVyIGRlY29kZU9iamVjdE9mQ2xh
c3M6W1dLV2Vic2l0ZURhdGFTdG9yZSBjbGFzc10gZm9yS2V5OkAid2Vic2l0ZURhdGFTdG9yZSJd
OwogCiAgICAgc2VsZi5zdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcgPSBbY29kZXIgZGVj
b2RlQm9vbEZvcktleTpAInN1cHByZXNzZXNJbmNyZW1lbnRhbFJlbmRlcmluZyJdOwogCiAgICAg
aWYgKFtjb2RlciBjb250YWluc1ZhbHVlRm9yS2V5OkAiYXBwbGljYXRpb25OYW1lRm9yVXNlckFn
ZW50Il0pCi0gICAgICAgIHNlbGYuYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0gZGVjb2Rl
T2JqZWN0T2ZDbGFzc0ZvcktleUZyb21Db2RlcihbTlNTdHJpbmcgY2xhc3NdLCBAImFwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudCIsIGNvZGVyKTsKKyAgICAgICAgc2VsZi5hcHBsaWNhdGlvbk5h
bWVGb3JVc2VyQWdlbnQgPSBbY29kZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdIGZvcktleTpAImFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCJdOwogCiAgICAgc2VsZi5h
bGxvd3NBaXJQbGF5Rm9yTWVkaWFQbGF5YmFjayA9IFtjb2RlciBkZWNvZGVCb29sRm9yS2V5OkAi
YWxsb3dzQWlyUGxheUZvck1lZGlhUGxheWJhY2siXTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0FwcGxpY2F0aW9uTWFuaWZlc3QubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQpp
bmRleCA0NTQ4OThkMjcyZjIyOGU5YzdhNGZhZjgwZWIxMzU3Y2MxZDBlMWYxLi5lYTU1OWM1YzMw
ZWYzYWMxNmU1ZTRhNzM3OTc5MTU2MjE5ZWQ4ZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5tbQpA
QCAtMjgsNyArMjgsNiBAQAogCiAjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9uTWFuaWZlc3Qu
aD4KICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25NYW5pZmVzdFBhcnNlci5oPgotI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAogQGltcGxlbWVudGF0aW9u
IF9XS0FwcGxpY2F0aW9uTWFuaWZlc3QKIApAQCAtNDEsMTIgKzQwLDEyIEBAICsgKEJPT0wpc3Vw
cG9ydHNTZWN1cmVDb2RpbmcKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29k
ZXIgKilhRGVjb2RlcgogewotICAgIE5TU3RyaW5nICpuYW1lID0gZGVjb2RlT2JqZWN0T2ZDbGFz
c0ZvcktleUZyb21Db2RlcihbTlNTdHJpbmcgY2xhc3NdLCBAIm5hbWUiLCBhRGVjb2Rlcik7Ci0g
ICAgTlNTdHJpbmcgKnNob3J0TmFtZSA9IGRlY29kZU9iamVjdE9mQ2xhc3NGb3JLZXlGcm9tQ29k
ZXIoW05TU3RyaW5nIGNsYXNzXSwgQCJzaG9ydF9uYW1lIiwgYURlY29kZXIpOwotICAgIE5TU3Ry
aW5nICpkZXNjcmlwdGlvbiA9IGRlY29kZU9iamVjdE9mQ2xhc3NGb3JLZXlGcm9tQ29kZXIoW05T
U3RyaW5nIGNsYXNzXSwgQCJkZXNjcmlwdGlvbiIsIGFEZWNvZGVyKTsKLSAgICBOU1VSTCAqc2Nv
cGVVUkwgPSBkZWNvZGVPYmplY3RPZkNsYXNzRm9yS2V5RnJvbUNvZGVyKFtOU1VSTCBjbGFzc10s
IEAic2NvcGUiLCBhRGVjb2Rlcik7CisgICAgTlNTdHJpbmcgKm5hbWUgPSBbYURlY29kZXIgZGVj
b2RlT2JqZWN0T2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdIGZvcktleTpAIm5hbWUiXTsKKyAgICBO
U1N0cmluZyAqc2hvcnROYW1lID0gW2FEZWNvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXSBmb3JLZXk6QCJzaG9ydF9uYW1lIl07CisgICAgTlNTdHJpbmcgKmRlc2NyaXB0
aW9uID0gW2FEZWNvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXSBmb3JL
ZXk6QCJkZXNjcmlwdGlvbiJdOworICAgIE5TVVJMICpzY29wZVVSTCA9IFthRGVjb2RlciBkZWNv
ZGVPYmplY3RPZkNsYXNzOltOU1VSTCBjbGFzc10gZm9yS2V5OkAic2NvcGUiXTsKICAgICBOU0lu
dGVnZXIgZGlzcGxheSA9IFthRGVjb2RlciBkZWNvZGVJbnRlZ2VyRm9yS2V5OkAiZGlzcGxheSJd
OwotICAgIE5TVVJMICpzdGFydFVSTCA9IGRlY29kZU9iamVjdE9mQ2xhc3NGb3JLZXlGcm9tQ29k
ZXIoW05TVVJMIGNsYXNzXSwgQCJzdGFydF91cmwiLCBhRGVjb2Rlcik7CisgICAgTlNVUkwgKnN0
YXJ0VVJMID0gW2FEZWNvZGVyIGRlY29kZU9iamVjdE9mQ2xhc3M6W05TVVJMIGNsYXNzXSBmb3JL
ZXk6QCJzdGFydF91cmwiXTsKIAogICAgIFdlYkNvcmU6OkFwcGxpY2F0aW9uTWFuaWZlc3QgY29y
ZUFwcGxpY2F0aW9uTWFuaWZlc3QgewogICAgICAgICBXVEY6OlN0cmluZyhuYW1lKSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
CmluZGV4IDY3YzAyZTA3ODMyZTliYmZjNTYxYmMxMTMyMmE3NzFkZTBkYmM4NGMuLjhhYTljNmRh
YmFlZGM0MmU3MjI2NDUxYjIzNWE0YTRkNzAzZWI0NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtNTUsNyArNTUs
NiBAQAogI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPG9iamMvcnVu
dGltZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KLSNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvTlNLZXllZEFyY2hpdmVyU1BJLmg+CiAjaW1wb3J0IDxzeXMvcGFyYW0uaD4K
ICNpbXBvcnQgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVn
ZS5oPgpAQCAtMjYyLDcgKzI2MSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAgICAgcGFy
YW1ldGVycy5mb250V2hpdGVsaXN0ID0gbV9mb250V2hpdGVsaXN0OwogCiAgICAgaWYgKG1fYnVu
ZGxlUGFyYW1ldGVycykgewotICAgICAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBzZWN1cmVBcmNo
aXZlcigpOworICAgICAgICBhdXRvIGtleWVkQXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFy
Y2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFU10pOwogCiAgICAgICAg
IEB0cnkgewogICAgICAgICAgICAgW2tleWVkQXJjaGl2ZXIgZW5jb2RlT2JqZWN0Om1fYnVuZGxl
UGFyYW1ldGVycy5nZXQoKSBmb3JLZXk6QCJwYXJhbWV0ZXJzIl07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggYTBlZmRlMzFhZWQ3
OGEyODk5YTI4NmZkNmRlN2FiYzUwMTg4MmYyMC4uY2RmM2U5NWYwNTk2YjcxZWQwNTA5ZGU2ZTQw
ZGVkNDgyNDJhYzNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5tbQpAQCAtNjcsNyArNjcsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRvci5oPgogI2ltcG9ydCA8
V2ViQ29yZS9WYWxpZGF0aW9uQnViYmxlLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TS2V5
ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKICNkZWZpbmUgTUVT
U0FHRV9DSEVDSyhhc3NlcnRpb24pIE1FU1NBR0VfQ0hFQ0tfQkFTRShhc3NlcnRpb24sIG1fd2Vi
Vmlldy5nZXQoKS0+X3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCkpCkBAIC01NjQsOCArNTYz
LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZWxlbWVudERpZEZvY3VzKGNvbnN0IEZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24mIG5vZGVJbmZvcm0KIAogICAgIE5TT2JqZWN0IDxOU1NlY3VyZUNv
ZGluZz4gKnVzZXJPYmplY3QgPSBuaWw7CiAgICAgaWYgKEFQSTo6RGF0YSogZGF0YSA9IHN0YXRp
Y19jYXN0PEFQSTo6RGF0YSo+KHVzZXJEYXRhKSkgewotICAgICAgICBhdXRvIG5zRGF0YSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KGRhdGEtPmJ5dGVzKCkpKSBsZW5ndGg6ZGF0YS0+
c2l6ZSgpIGZyZWVXaGVuRG9uZTpOT10pOwotICAgICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1
cmVVbmFyY2hpdmVyRnJvbURhdGEobnNEYXRhLmdldCgpKTsKKyAgICAgICAgYXV0byBuc0RhdGEg
PSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzTm9Db3B5OmNvbnN0X2Nhc3Q8
dW5zaWduZWQgY2hhcio+KGRhdGEtPmJ5dGVzKCkpIGxlbmd0aDpkYXRhLT5zaXplKCkgZnJlZVdo
ZW5Eb25lOk5PXSk7CisgICAgICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVk
VW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTpuc0RhdGEuZ2V0KCkgZXJy
b3I6bnVsbHB0cl0pOworICAgICAgICB1bmFyY2hpdmVyLmdldCgpLmRlY29kaW5nRmFpbHVyZVBv
bGljeSA9IE5TRGVjb2RpbmdGYWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb247CiAgICAgICAgIEB0
cnkgewogICAgICAgICAgICAgaWYgKGF1dG8qIGFsbG93ZWRDbGFzc2VzID0gbV93ZWJWaWV3Lmdl
dCgpLT5fcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYWxsb3dlZENsYXNzZXNGb3JQYXJh
bWV0ZXJDb2RpbmcoKSkKICAgICAgICAgICAgICAgICB1c2VyT2JqZWN0ID0gW3VuYXJjaGl2ZXIg
ZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOmFsbG93ZWRDbGFzc2VzIGZvcktleTpAInVzZXJPYmplY3Qi
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCAyYjcyYzIxMTU4YWY5YWM3
Mzc5ZTM2ZDA3YTk3NjMxZjhjMzY1MGE4Li5iOWFjNjEzMDQwNjVkYjZiNjUwZWI2MTQ3MDJmMzcw
ZGNiYzljNDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL21hYy9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tCkBAIC02MSw3ICs2
MSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxG
b3JtRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MSW5wdXRFbGVtZW50Lmg+Ci0jaW1w
b3J0IDxwYWwvc3BpL2NvY29hL05TS2V5ZWRBcmNoaXZlclNQSS5oPgogI2ltcG9ydCA8d3RmL1dl
YWtPYmpDUHRyLmg+CiAKIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdLRGVwcmVjYXRlZERlbGVnYXRl
TWV0aG9kcykKQEAgLTQ2NSw3ICs0NjQsNyBAQCAtICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6KGlk
IDxXS1dlYlByb2Nlc3NQbHVnSW5Gb3JtRGVsZWdhdGVQcml2YXRlPilmb3JtRGVsZWdhdAogICAg
ICAgICAgICAgaWYgKCF1c2VyT2JqZWN0KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgYXV0byBhcmNoaXZlciA9IHNlY3VyZUFyY2hpdmVyKCk7CisgICAgICAgICAgICBh
dXRvIGFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVp
cmluZ1NlY3VyZUNvZGluZzpZRVNdKTsKICAgICAgICAgICAgIEB0cnkgewogICAgICAgICAgICAg
ICAgIFthcmNoaXZlciBlbmNvZGVPYmplY3Q6dXNlck9iamVjdCBmb3JLZXk6QCJ1c2VyT2JqZWN0
Il07CiAgICAgICAgICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21hYy9Jbmpl
Y3RlZEJ1bmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9tYWMvSW5qZWN0ZWRCdW5kbGVNYWMubW0KaW5kZXggNTJmODI1ZDA4NTRkYmYyN2EzN2Q0Nzhh
YjM3NGZlYzFkOGQyY2NkOC4uMGU4OTRmYzQ3MzFjNDc4OThkZGQ0NmEwMTI5NTc3ZWRhODU3NDRl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL21h
Yy9JbmplY3RlZEJ1bmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlTWFjLm1tCkBAIC0zOSw3ICszOSw2IEBACiAj
aW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8ZGxmY24u
aD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tl
eWVkQXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHN0ZGlvLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC01Myw2ICs1Miw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiBFTkFCTEUo
V0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCisKIHN0YXRpYyBOU0V2ZW50TW9kaWZp
ZXJGbGFncyBjdXJyZW50TW9kaWZpZXJGbGFncyhpZCBzZWxmLCBTRUwgX2NtZCkKIHsKICAgICBh
dXRvIGN1cnJlbnRNb2RpZmllcnMgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmN1cnJlbnRTdGF0
ZU9mTW9kaWZpZXJLZXlzKCk7CkBAIC03MSw4ICs3MSwyNyBAQCBzdGF0aWMgTlNFdmVudE1vZGlm
aWVyRmxhZ3MgY3VycmVudE1vZGlmaWVyRmxhZ3MoaWQgc2VsZiwgU0VMIF9jbWQpCiAgICAgCiAg
ICAgcmV0dXJuIG1vZGlmaWVyczsKIH0KKwogI2VuZGlmCiAKK3N0YXRpYyBSZXRhaW5QdHI8TlNL
ZXllZFVuYXJjaGl2ZXI+IGNyZWF0ZVVuYXJjaGl2ZXIoY29uc3QgdW5zaWduZWQgY2hhciogYnl0
ZXMsIE5TVUludGVnZXIgbGVuZ3RoKQoreworICAgIGF1dG8gZGF0YSA9IGFkb3B0TlMoW1tOU0Rh
dGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx1bnNpZ25lZCBjaGFyKj4o
Ynl0ZXMpIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXSk7CisgICAgYXV0byB1bmFyY2hp
dmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zy
b21EYXRhOmRhdGEuZ2V0KCkgZXJyb3I6bnVsbHB0cl0pOworICAgIHVuYXJjaGl2ZXIuZ2V0KCku
ZGVjb2RpbmdGYWlsdXJlUG9saWN5ID0gTlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2Vw
dGlvbjsKKyAgICByZXR1cm4gdW5hcmNoaXZlcjsKK30KKworc3RhdGljIFJldGFpblB0cjxOU0tl
eWVkVW5hcmNoaXZlcj4gY3JlYXRlVW5hcmNoaXZlcihjb25zdCBBUEk6OkRhdGEmIGRhdGEpCit7
CisgICAgcmV0dXJuIGNyZWF0ZVVuYXJjaGl2ZXIoZGF0YS5ieXRlcygpLCBkYXRhLnNpemUoKSk7
Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8TlNLZXllZFVuYXJjaGl2ZXI+IGNyZWF0ZVVuYXJjaGl2
ZXIoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQoreworICAgIHJldHVybiBjcmVhdGVV
bmFyY2hpdmVyKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Cit9CisKIGJvb2wgSW5qZWN0ZWRC
dW5kbGU6OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFy
YW1ldGVycywgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7CiAgICAgaWYg
KG1fc2FuZGJveEV4dGVuc2lvbikgewpAQCAtMTIxLDEzICsxNDAsMTAgQEAgYm9vbCBJbmplY3Rl
ZEJ1bmRsZTo6aW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLAogICAgIH0KIAogICAgIGlmIChwYXJhbWV0ZXJzLmJ1bmRsZVBhcmFtZXRlckRh
dGEpIHsKLSAgICAgICAgYXV0byBidW5kbGVQYXJhbWV0ZXJEYXRhID0gYWRvcHROUyhbW05TRGF0
YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weTpjb25zdF9jYXN0PHZvaWQqPihzdGF0aWNfY2Fz
dDxjb25zdCB2b2lkKj4ocGFyYW1ldGVycy5idW5kbGVQYXJhbWV0ZXJEYXRhLT5ieXRlcygpKSkg
bGVuZ3RoOnBhcmFtZXRlcnMuYnVuZGxlUGFyYW1ldGVyRGF0YS0+c2l6ZSgpIGZyZWVXaGVuRG9u
ZTpOT10pOwotCi0gICAgICAgIGF1dG8gdW5hcmNoaXZlciA9IHNlY3VyZVVuYXJjaGl2ZXJGcm9t
RGF0YShidW5kbGVQYXJhbWV0ZXJEYXRhLmdldCgpKTsKLQogICAgICAgICBOU0RpY3Rpb25hcnkg
KmRpY3Rpb25hcnkgPSBuaWw7CisgICAgICAgIGF1dG8gdW5hcmNoaXZlciA9IGNyZWF0ZVVuYXJj
aGl2ZXIoKnBhcmFtZXRlcnMuYnVuZGxlUGFyYW1ldGVyRGF0YSk7CiAgICAgICAgIEB0cnkgewot
ICAgICAgICAgICAgZGljdGlvbmFyeSA9IFt1bmFyY2hpdmVyLmdldCgpIGRlY29kZU9iamVjdE9m
Q2xhc3M6W05TT2JqZWN0IGNsYXNzXSBmb3JLZXk6QCJwYXJhbWV0ZXJzIl07CisgICAgICAgICAg
ICBkaWN0aW9uYXJ5ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbTlNPYmplY3Qg
Y2xhc3NdIGZvcktleTpAInBhcmFtZXRlcnMiXTsKICAgICAgICAgICAgIEFTU0VSVChbZGljdGlv
bmFyeSBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSk7CiAgICAgICAgIH0gQGNh
dGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkZh
aWxlZCB0byBkZWNvZGUgYnVuZGxlIHBhcmFtZXRlcnM6ICVAIiwgZXhjZXB0aW9uKTsKQEAgLTIy
MiwxOCArMjM4LDE1IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmV4dGVuZENsYXNzZXNGb3JQYXJh
bWV0ZXJDb2RlcihBUEk6OkFycmF5JiBjbGFzc2VzKQogTlNTZXQqIEluamVjdGVkQnVuZGxlOjpj
bGFzc2VzRm9yQ29kZXIoKQogewogICAgIGlmICghbV9jbGFzc2VzRm9yQ29kZXIpCi0gICAgICAg
IG1fY2xhc3Nlc0ZvckNvZGVyID0gcmV0YWluUHRyKFtOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNB
cnJheSBjbGFzc10sIFtOU0RhdGEgY2xhc3NdLCBbTlNEYXRlIGNsYXNzXSwgW05TRGljdGlvbmFy
eSBjbGFzc10sIFtOU051bGwgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNTZXQgY2xhc3Nd
LCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNUaW1lWm9uZSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtO
U1VVSUQgY2xhc3NdLCBuaWxdKTsKKyAgICAgICAgbV9jbGFzc2VzRm9yQ29kZXIgPSBbTlNTZXQg
c2V0V2l0aE9iamVjdHM6W05TQXJyYXkgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TRGF0ZSBj
bGFzc10sIFtOU0RpY3Rpb25hcnkgY2xhc3NdLCBbTlNOdWxsIGNsYXNzXSwgW05TTnVtYmVyIGNs
YXNzXSwgW05TU2V0IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TVGltZVpvbmUgY2xhc3Nd
LCBbTlNVUkwgY2xhc3NdLCBbTlNVVUlEIGNsYXNzXSwgbmlsXTsKIAogICAgIHJldHVybiBtX2Ns
YXNzZXNGb3JDb2Rlci5nZXQoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0QnVuZGxl
UGFyYW1ldGVyKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHZh
bHVlKQogewotICAgIGF1dG8gYnVuZGxlUGFyYW1ldGVyRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEg
YWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8
Y29uc3Qgdm9pZCo+KHZhbHVlLmRhdGEoKSkpIGxlbmd0aDp2YWx1ZS5zaXplKCkgZnJlZVdoZW5E
b25lOk5PXSk7Ci0KLSAgICBhdXRvIHVuYXJjaGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURh
dGEoYnVuZGxlUGFyYW1ldGVyRGF0YS5nZXQoKSk7Ci0KICAgICBpZCBwYXJhbWV0ZXIgPSBuaWw7
CisgICAgYXV0byB1bmFyY2hpdmVyID0gY3JlYXRlVW5hcmNoaXZlcih2YWx1ZSk7CiAgICAgQHRy
eSB7CiAgICAgICAgIHBhcmFtZXRlciA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3Nl
czpjbGFzc2VzRm9yQ29kZXIoKSBmb3JLZXk6QCJwYXJhbWV0ZXIiXTsKICAgICB9IEBjYXRjaCAo
TlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewpAQCAtMjQ5LDExICsyNjIsOCBAQCB2b2lkIEluamVj
dGVkQnVuZGxlOjpzZXRCdW5kbGVQYXJhbWV0ZXIoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQYXJhbWV0ZXJz
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgdmFsdWUpCiB7Ci0gICAgYXV0byBidW5kbGVQYXJh
bWV0ZXJzRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXNOb0NvcHk6
Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KHZhbHVlLmRhdGEoKSkp
IGxlbmd0aDp2YWx1ZS5zaXplKCkgZnJlZVdoZW5Eb25lOk5PXSk7Ci0KLSAgICBhdXRvIHVuYXJj
aGl2ZXIgPSBzZWN1cmVVbmFyY2hpdmVyRnJvbURhdGEoYnVuZGxlUGFyYW1ldGVyc0RhdGEuZ2V0
KCkpOwotCiAgICAgTlNEaWN0aW9uYXJ5ICpwYXJhbWV0ZXJzID0gbmlsOworICAgIGF1dG8gdW5h
cmNoaXZlciA9IGNyZWF0ZVVuYXJjaGl2ZXIodmFsdWUpOwogICAgIEB0cnkgewogICAgICAgICBw
YXJhbWV0ZXJzID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzczpbTlNEaWN0aW9uYXJ5
IGNsYXNzXSBmb3JLZXk6QCJwYXJhbWV0ZXJzIl07CiAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9u
ICpleGNlcHRpb24pIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBhYTg3NGFhOGQ4ZDg2MTMwOTMyMGZmOWU3MGE4OWRlMmE2YjZlNDI4Li5jNmZh
NzVkN2E1YTczYzYxMGI2MjU2M2NkMTllZDUyMzMwNzI1ZjQ5IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDIt
MDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBOU0tl
eWVkQXJjaGl2ZXJTUEkuaCBub3cgdGhhdCBXZWJLaXQgb25seSB1c2VzIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MjAzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0FwcGxpY2F0aW9uTWFuaWZlc3QubW06IFJlbW92ZWQKKyAgICAgICAg
aW5jbHVkZSBvZiBOU0tleWVkQXJjaGl2ZXJTUEkuaCBhbmQgY2FsbCBtZXRob2RzIG9mIE5TS2V5
ZWRBcmNoaXZlciBkaXJlY3RseS4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NvZGluZy5tbTogRGl0dG8uCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvV0tXZWJWaWV3T3BhcXVlLm1tOiBEaXR0by4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9FYXJseUtWT0NyYXNoLm1tOiBEaXR0by4KKwogMjAyMC0wMi0wMSAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBDbG9zaW5nIGEgTWluaUJy
b3dzZXIgV0syIHdpbmRvdyBkb2VzIG5vdCByZWxlYXNlIHRoZSBXS1dlYlZpZXcKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGljYXRpb25NYW5p
ZmVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwbGljYXRp
b25NYW5pZmVzdC5tbQppbmRleCA2M2JlMmNhZjcxODc5YWYyNTgwNmY4MTE2ZmQ3ZGM3ZDdjZmMw
NzdiLi5iNWNkOGE2NjM1YmNlZTU2OGUwZjI4NzYxMzkxN2FjMTRiNThkMDlmIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcGxpY2F0aW9uTWFuaWZl
c3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBsaWNh
dGlvbk1hbmlmZXN0Lm1tCkBAIC0zNCw3ICszNCw2IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLQXBwbGljYXRpb25NYW5pZmVzdC5oPgotI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAogbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewogCkBAIC00Miw5ICs0MSwxMCBAQCBURVNUKFdlYktpdCwgQXBwbGljYXRpb25N
YW5pZmVzdENvZGluZykKIHsKICAgICBhdXRvIGpzb25TdHJpbmcgPSBAInsgXCJuYW1lXCI6IFwi
VGVzdE5hbWVcIiwgXCJzaG9ydF9uYW1lXCI6IFwiVGVzdFNob3J0TmFtZVwiLCBcImRlc2NyaXB0
aW9uXCI6IFwiVGVzdERlc2NyaXB0aW9uXCIsIFwic2NvcGVcIjogXCJodHRwczovL3Rlc3QuY29t
L2FwcFwiLCBcInN0YXJ0X3VybFwiOiBcImh0dHBzOi8vdGVzdC5jb20vYXBwL2luZGV4Lmh0bWxc
IiwgXCJkaXNwbGF5XCI6IFwibWluaW1hbC11aVwiIH0iOwogICAgIFJldGFpblB0cjxfV0tBcHBs
aWNhdGlvbk1hbmlmZXN0PiBtYW5pZmVzdCB7IFtfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGFwcGxp
Y2F0aW9uTWFuaWZlc3RGcm9tSlNPTjpqc29uU3RyaW5nIG1hbmlmZXN0VVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiaHR0cHM6Ly90ZXN0LmNvbS9tYW5pZmVzdC5qc29uIl0gZG9jdW1lbnRVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3Rlc3QuY29tLyJdXSB9OwotICAgIAotICAg
IG1hbmlmZXN0ID0gdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3Nlc0Zyb21EYXRhKFtOU1NldCBzZXRX
aXRoT2JqZWN0OltfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGNsYXNzXV0sIHNlY3VyZWx5QXJjaGl2
ZWREYXRhV2l0aFJvb3RPYmplY3QobWFuaWZlc3QuZ2V0KCkpKTsKLSAgICAKKworICAgIE5TRGF0
YSAqZGF0YSA9IFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6bWFu
aWZlc3QuZ2V0KCkgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFUyBlcnJvcjpudWxscHRyXTsKKyAg
ICBtYW5pZmVzdCA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2Vz
OltOU1NldCBzZXRXaXRoT2JqZWN0OltfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGNsYXNzXV0gZnJv
bURhdGE6ZGF0YSBlcnJvcjpudWxscHRyXTsKKwogICAgIEVYUEVDVF9UUlVFKFttYW5pZmVzdCBp
c0tpbmRPZkNsYXNzOltfV0tBcHBsaWNhdGlvbk1hbmlmZXN0IGNsYXNzXV0pOwogICAgIEVYUEVD
VF9TVFJFUSgiVGVzdE5hbWUiLCBtYW5pZmVzdC5nZXQoKS5uYW1lLlVURjhTdHJpbmcpOwogICAg
IEVYUEVDVF9TVFJFUSgiVGVzdFNob3J0TmFtZSIsIG1hbmlmZXN0LmdldCgpLnNob3J0TmFtZS5V
VEY4U3RyaW5nKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ29kaW5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9D
b2RpbmcubW0KaW5kZXggODZjOGY0NDM0NThiNjI0NWNhMDYyNGU0MjhkNDdlMGY4YWQ2YmE4NC4u
MjgxMzk4YmI3ODYyYWM0MDNhNjFhM2RmM2E2ZTgyZTljN2YwMWI1NiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db2RpbmcubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db2RpbmcubW0KQEAgLTI2LDE5ICsyNiwy
MCBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAKICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4K
ICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIFJldGFp
blB0cjxUPiBlbmNvZGVBbmREZWNvZGUoVCogdCkKIHsKICAgICBpZiAoW3QgY29uZm9ybXNUb1By
b3RvY29sOkBwcm90b2NvbChOU1NlY3VyZUNvZGluZyldKSB7Ci0gICAgICAgIGF1dG8gZGF0YSA9
IHNlY3VyZWx5QXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3QodCk7Ci0gICAgICAgIHJldHVybiB1
bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzRnJvbURhdGEoW05TU2V0IHNldFdpdGhPYmplY3RzOlt0
IGNsYXNzXSwgbmlsXSwgZGF0YSk7CisgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtOU0tleWVkQXJj
aGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6dCByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6
WUVTIGVycm9yOm51bGxwdHJdOworICAgICAgICByZXR1cm4gW05TS2V5ZWRVbmFyY2hpdmVyIHVu
YXJjaGl2ZWRPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6W3QgY2xhc3NdXSBm
cm9tRGF0YTpkYXRhIGVycm9yOm51bGxwdHJdOwogICAgIH0KIAotICAgIGF1dG8gZGF0YSA9IGlu
c2VjdXJlbHlBcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdCh0KTsKLSAgICByZXR1cm4gaW5zZWN1
cmVseVVuYXJjaGl2ZU9iamVjdEZyb21EYXRhKGRhdGEpOworICAgIE5TRGF0YSAqZGF0YSA9IFtO
U0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6dCByZXF1aXJpbmdTZWN1
cmVDb2Rpbmc6Tk8gZXJyb3I6bnVsbHB0cl07CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KKyAgICByZXR1cm4gW05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZU9iamVj
dFdpdGhEYXRhOmRhdGFdOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
fQogCiBURVNUKENvZGluZywgV0tQcmVmZXJlbmNlcykKQEAgLTE2NCwxMSArMTY1LDExIEBAIFRF
U1QoQ29kaW5nLCBXS1dlYlZpZXdfU2FtZUNvbmZpZ3VyYXRpb24pCiAgICAgICAgIGF1dG8gYSA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICAgICAgYXV0byBiID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCi0gICAgICAgIGRhdGEgPSBzZWN1cmVseUFyY2hp
dmVkRGF0YVdpdGhSb290T2JqZWN0KEBbYS5nZXQoKSwgYi5nZXQoKV0pOworICAgICAgICBkYXRh
ID0gW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDpAW2EuZ2V0KCks
IGIuZ2V0KCldIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJyb3I6bnVsbHB0cl07CiAgICAg
fQogCiAgICAgLy8gVGhlbiwgZGVjb2RlIGFuZCB2ZXJpZnkgdGhhdCB0aGUgaW1wb3J0YW50IGNv
bmZpZ3VyYXRpb24gcHJvcGVydGllcyBhcmUgdGhlIHNhbWUuCi0gICAgTlNBcnJheSAqYXJyYXkg
PSB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2VzRnJvbURhdGEoW05TU2V0IHNldFdpdGhPYmplY3Q6
W05TQXJyYXkgY2xhc3NdXSwgZGF0YS5nZXQoKSk7CisgICAgTlNBcnJheSAqYXJyYXkgPSBbTlNL
ZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9i
amVjdDpbTlNBcnJheSBjbGFzc11dIGZyb21EYXRhOmRhdGEuZ2V0KCkgZXJyb3I6bnVsbHB0cl07
CiAKICAgICBXS1dlYlZpZXcgKmFWaWV3ID0gYXJyYXlbMF07CiAgICAgV0tXZWJWaWV3ICpiVmll
dyA9IGFycmF5WzFdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
V0tXZWJWaWV3T3BhcXVlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tXZWJW
aWV3T3BhcXVlLm1tCmluZGV4IDc2ZWJkYzIxMmE0NjZkYjkwYjM4NDUyYTc2MDVjYjJkOTIyYTA5
YWQuLmQ1MGU5ZThmYjFkZGJiOTU1NmQ0OWM3NGU3NGYxNGMwMDQ3NjhiYjEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLV2ViVmlld09wYXF1ZS5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1dlYlZpZXdPcGFxdWUubW0KQEAgLTMwLDcg
KzMwLDYgQEAKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgotI2ltcG9ydCA8
cGFsL3NwaS9jb2NvYS9OU0tleWVkQXJjaGl2ZXJTUEkuaD4KIAogQGludGVyZmFjZSBPcGFxdWVU
ZXN0V0tXZWJWaWV3IDogVGVzdFdLV2ViVmlldwogQGVuZApAQCAtMTEyLDggKzExMSwxMCBAQCBU
RVNUKFdLV2ViVmlldywgSXNPcGFxdWVZZXNEZWNvZGVkRnJvbUFyY2hpdmUpCiAKICAgICBbd2Vi
VmlldyBzZXRPcGFxdWU6WUVTXTsKIAotICAgIGF1dG8gZGF0YSA9IGluc2VjdXJlbHlBcmNoaXZl
ZERhdGFXaXRoUm9vdE9iamVjdCh3ZWJWaWV3LmdldCgpKTsKLSAgICBUZXN0V0tXZWJWaWV3ICpk
ZWNvZGVkV2ViVmlldyA9IGluc2VjdXJlbHlVbmFyY2hpdmVPYmplY3RGcm9tRGF0YShkYXRhKTsK
KyAgICBOU0RhdGEgKmRhdGEgPSBbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdpdGhSb290
T2JqZWN0OndlYlZpZXcuZ2V0KCkgcmVxdWlyaW5nU2VjdXJlQ29kaW5nOk5PIGVycm9yOm51bGxw
dHJdOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgVGVzdFdL
V2ViVmlldyAqZGVjb2RlZFdlYlZpZXcgPSBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlT2Jq
ZWN0V2l0aERhdGE6ZGF0YV07CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAKICAgICBpc09wYXF1ZShkZWNvZGVkV2ViVmlldywgWUVTKTsKIH0KQEAgLTEyNCw4ICsxMjUs
MTAgQEAgVEVTVChXS1dlYlZpZXcsIElzT3BhcXVlTm9EZWNvZGVkRnJvbUFyY2hpdmUpCiAKICAg
ICBbd2ViVmlldyBzZXRPcGFxdWU6Tk9dOwogCi0gICAgYXV0byBkYXRhID0gaW5zZWN1cmVseUFy
Y2hpdmVkRGF0YVdpdGhSb290T2JqZWN0KHdlYlZpZXcuZ2V0KCkpOwotICAgIFRlc3RXS1dlYlZp
ZXcgKmRlY29kZWRXZWJWaWV3ID0gaW5zZWN1cmVseVVuYXJjaGl2ZU9iamVjdEZyb21EYXRhKGRh
dGEpOworICAgIE5TRGF0YSAqZGF0YSA9IFtOU0tleWVkQXJjaGl2ZXIgYXJjaGl2ZWREYXRhV2l0
aFJvb3RPYmplY3Q6d2ViVmlldy5nZXQoKSByZXF1aXJpbmdTZWN1cmVDb2Rpbmc6Tk8gZXJyb3I6
bnVsbHB0cl07CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICBU
ZXN0V0tXZWJWaWV3ICpkZWNvZGVkV2ViVmlldyA9IFtOU0tleWVkVW5hcmNoaXZlciB1bmFyY2hp
dmVPYmplY3RXaXRoRGF0YTpkYXRhXTsKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKIAogICAgIGlzT3BhcXVlKGRlY29kZWRXZWJWaWV3LCBOTyk7CiB9CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9FYXJseUtWT0NyYXNoLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRWFybHlLVk9DcmFzaC5tbQppbmRleCBkNjRmYWUxOTQz
NTE1N2Q2ZTI2OWQyYjkwNGZjZWFlM2I4MWEyNmMyLi4yMDU5ODc2MmI5MTFiOWNmM2Q2YjRmNjUz
MWFmNzA0ZGFiOWQ4OTk1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9FYXJseUtWT0NyYXNoLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Vh
cmx5S1ZPQ3Jhc2gubW0KQEAgLTI2LDcgKzI2LDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogCiAj
aW1wb3J0IDxXZWJLaXQvV2ViVmlldy5oPgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9OU0tleWVk
QXJjaGl2ZXJTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogQGludGVyZmFjZSBF
YXJseUtWT0NyYXNoUmVzcG9uZGVyIDogTlNSZXNwb25kZXIgewpAQCAtODYsMTIgKzg1LDE1IEBA
IFRFU1QoV2ViS2l0TGVnYWN5LCBFYXJseUtWT0NyYXNoKQogCiAgICAgW3dlYlZpZXcgc2V0TmV4
dFJlc3BvbmRlcjplYXJseUtWT0NyYXNoUmVzcG9uZGVyLmdldCgpXTsKIAotICAgIGF1dG8gZGF0
YSA9IHNlY3VyZWx5QXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3QoQFt3ZWJWaWV3LmdldCgpLCBl
YXJseUtWT0NyYXNoUmVzcG9uZGVyLmdldCgpXSk7CisgICAgTlNEYXRhICpkYXRhID0gW05TS2V5
ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9iamVjdDpAW3dlYlZpZXcuZ2V0KCksIGVh
cmx5S1ZPQ3Jhc2hSZXNwb25kZXIuZ2V0KCldIHJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVMgZXJy
b3I6bnVsbHB0cl07CiAKICAgICBpZiAoW3dlYlZpZXcgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90
b2NvbChOU1NlY3VyZUNvZGluZyldKQotICAgICAgICB1bmFyY2hpdmVkT2JqZWN0T2ZDbGFzc2Vz
RnJvbURhdGEoW05TU2V0IHNldFdpdGhPYmplY3RzOltOU0FycmF5IGNsYXNzXSwgW1dlYlZpZXcg
Y2xhc3NdLCBbRWFybHlLVk9DcmFzaFJlc3BvbmRlciBjbGFzc10sIG5pbF0sIGRhdGEpOwotICAg
IGVsc2UKLSAgICAgICAgaW5zZWN1cmVseVVuYXJjaGl2ZU9iamVjdEZyb21EYXRhKGRhdGEpOwor
ICAgICAgICBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlZE9iamVjdE9mQ2xhc3NlczpbTlNT
ZXQgc2V0V2l0aE9iamVjdHM6W05TQXJyYXkgY2xhc3NdLCBbV2ViVmlldyBjbGFzc10sIFtFYXJs
eUtWT0NyYXNoUmVzcG9uZGVyIGNsYXNzXSwgbmlsXSBmcm9tRGF0YTpkYXRhIGVycm9yOm51bGxw
dHJdOworICAgIGVsc2UgeworICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19C
RUdJTgorICAgICAgICBbTlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlT2JqZWN0V2l0aERhdGE6
ZGF0YV07CisgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorICAgIH0K
IH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>
<flag name="review"
          id="405323"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>