<?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>175428</bug_id>
          
          <creation_ts>2017-08-10 08:11:53 -0700</creation_ts>
          <short_desc>[GStreamer][GTK][WPE] Unify GStreamer JHBuild moduleset for both GTK+ and WPE</short_desc>
          <delta_ts>2017-08-11 01:18:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xabier Rodríguez Calvar">calvaris</reporter>
          <assigned_to name="Xabier Rodríguez Calvar">calvaris</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1337420</commentid>
    <comment_count>0</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2017-08-10 08:11:53 -0700</bug_when>
    <thetext>[GStreamer][GTK][WPE] Unify GStreamer JHBuild moduleset for both GTK+ and WPE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337422</commentid>
    <comment_count>1</comment_count>
      <attachid>317806</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2017-08-10 08:15:43 -0700</bug_when>
    <thetext>Created attachment 317806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337849</commentid>
    <comment_count>2</comment_count>
      <attachid>317806</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-11 01:15:45 -0700</bug_when>
    <thetext>Comment on attachment 317806
Patch

Clearing flags on attachment: 317806

Committed r220582: &lt;http://trac.webkit.org/changeset/220582&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337850</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-11 01:15:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337851</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-11 01:18:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/33844960&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317806</attachid>
            <date>2017-08-10 08:15:43 -0700</date>
            <delta_ts>2017-08-11 01:15:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175428-20170810171541.patch</filename>
            <type>text/plain</type>
            <size>202578</size>
            <attacher name="Xabier Rodríguez Calvar">calvaris</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMzk2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmRkMzAxOTlmNTlhZGNhMmY5ZTE1NGFmNDBkNDRjZGM0
YWY5M2RmNy4uNWM4OTNjMWYyYTViYzg4NDBjYzczNjI5ODhiYjI5NzU3MGU1YzQ3OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMz
IEBACisyMDE3LTA4LTEwICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl1bR1RLXVtXUEVdIFVuaWZ5IEdTdHJlYW1lciBK
SEJ1aWxkIG1vZHVsZXNldCBmb3IgYm90aCBHVEsrIGFuZCBXUEUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQyOAorCisgICAgICAgIEJvdGggcG9y
dHMgc2hhcmUgdGhlIEdTdHJlYW1lciBjb2RlIGFzIG11bHRpbWVkaWEgYmFja2VuZCBhbmQgdGls
bAorICAgICAgICBub3Qgc28gbG9uZyB0aGV5IHdlcmUgdXNpbmcgZGlmZmVyZW50IHZlcnNpb25z
LiBOb3cgdGhleSBkbyB1c2UKKyAgICAgICAgdGhlIHNhbWUgdmVyc2lvbnMgYW5kIGl0IGRvZXMg
bm90IG1ha2UgYW55IHNlbnNlIGFueW1vcmUgKGFuZAorICAgICAgICBuZWl0aGVyIGhhZCBzZW5z
ZSBiZWZvcmUpIHRvIGhhdmUgZGlmZmVyZW5jZXMgaW4gdGhlIG1vZHVsZXNldHMuCisKKyAgICAg
ICAgSW4gdGhpcyBwYXRjaCBJIGNyZWF0ZWQgYSBHU3RyZWFtZXIgbW9kdWxlc2V0IGFuZCByZWZl
cmVuY2VkIGl0CisgICAgICAgIGZyb20gYm90aCBHVEsrJ3MgYW5kIFdQRSdzLiBHU3RyZWFtZXIg
cGF0Y2hlcyB3ZXJlIGFsc28gbW92ZWQgdGhlcmUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBnc3RyZWFtZXIvamhidWlsZC5tb2R1bGVzOiBBZGRl
ZC4KKyAgICAgICAgKiBnc3RyZWFtZXIvcGF0Y2hlcy9nc3QtcGx1Z2lucy1nb29kLTAwMDMtcnRw
YmluLXJlY2VpdmUtYnVuZGxlLXN1cHBvcnQucGF0Y2g6IFJlbmFtZWQgZnJvbSBUb29scy9ndGsv
cGF0Y2hlcy9nc3QtcGx1Z2lucy1nb29kLTAwMDMtcnRwYmluLXJlY2VpdmUtYnVuZGxlLXN1cHBv
cnQucGF0Y2guCisgICAgICAgICogZ3N0cmVhbWVyL3BhdGNoZXMvZ3N0LXBsdWdpbnMtZ29vZC0w
MDA1LXNvdXBodHRwc3JjLWNvb2tpZS1qYXItYW5kLWNvbnRleHQtcXVlcnktc3VwcG9ydC5wYXRj
aDogUmVuYW1lZCBmcm9tIFRvb2xzL2d0ay9wYXRjaGVzL2dzdC1wbHVnaW5zLWdvb2QtMDAwNS1z
b3VwaHR0cHNyYy1jb29raWUtamFyLWFuZC1jb250ZXh0LXF1ZXJ5LXN1cHBvcnQucGF0Y2guCisg
ICAgICAgICogZ3N0cmVhbWVyL3BhdGNoZXMvZ3N0LXBsdWdpbnMtZ29vZC0wMDA2LXF0ZGVtdXgt
YWRkLWNvbnRleHQtZm9yLWEtcHJlZmVycmVkLXByb3RlY3Rpb24ucGF0Y2g6IFJlbmFtZWQgZnJv
bSBUb29scy9ndGsvcGF0Y2hlcy9nc3QtcGx1Z2lucy1nb29kLTAwMDYtcXRkZW11eC1hZGQtY29u
dGV4dC1mb3ItYS1wcmVmZXJyZWQtcHJvdGVjdGlvbi5wYXRjaC4KKyAgICAgICAgKiBnc3RyZWFt
ZXIvcGF0Y2hlcy9nc3QtcGx1Z2lucy1nb29kLTAwMDgtcXRkZW11eC1hbHNvLXB1c2gtYnVmZmVy
cy13aXRob3V0LWVuY3J5cHRpb24taW5mby1pbi5wYXRjaDogUmVuYW1lZCBmcm9tIFRvb2xzL2d0
ay9wYXRjaGVzL2dzdC1wbHVnaW5zLWdvb2QtMDAwOC1xdGRlbXV4LWFsc28tcHVzaC1idWZmZXJz
LXdpdGhvdXQtZW5jcnlwdGlvbi1pbmZvLWluLnBhdGNoLgorICAgICAgICAqIGdzdHJlYW1lci9w
YXRjaGVzL2dzdHJlYW1lci0wMDAxLXByb3RlY3Rpb24tYWRkZWQtZnVuY3Rpb24tdG8tZmlsdGVy
LXN5c3RlbS1pZHMucGF0Y2g6IFJlbmFtZWQgZnJvbSBUb29scy9ndGsvcGF0Y2hlcy9nc3RyZWFt
ZXItMDAwMS1wcm90ZWN0aW9uLWFkZGVkLWZ1bmN0aW9uLXRvLWZpbHRlci1zeXN0ZW0taWRzLnBh
dGNoLgorICAgICAgICAqIGdzdHJlYW1lci9wYXRjaGVzL29wZW5oMjY0LWNvbmZpZ3VyZS5wYXRj
aDogUmVuYW1lZCBmcm9tIFRvb2xzL2d0ay9wYXRjaGVzL29wZW5oMjY0LWNvbmZpZ3VyZS5wYXRj
aC4KKyAgICAgICAgKiBndGsvamhidWlsZC5tb2R1bGVzOgorICAgICAgICAqIHdwZS9qaGJ1aWxk
Lm1vZHVsZXM6CisgICAgICAgICogd3BlL3BhdGNoZXMvZ3N0LXBsdWdpbnMtZ29vZC0wMDAzLXJ0
cGJpbi1yZWNlaXZlLWJ1bmRsZS1zdXBwb3J0LnBhdGNoOiBSZW1vdmVkLgorICAgICAgICAqIHdw
ZS9wYXRjaGVzL2dzdC1wbHVnaW5zLWdvb2QtMDAwNS1zb3VwaHR0cHNyYy1jb29raWUtamFyLWFu
ZC1jb250ZXh0LXF1ZXJ5LXN1cHBvcnQucGF0Y2g6IFJlbW92ZWQuCisgICAgICAgICogd3BlL3Bh
dGNoZXMvZ3N0LXBsdWdpbnMtZ29vZC0wMDA2LXF0ZGVtdXgtYWRkLWNvbnRleHQtZm9yLWEtcHJl
ZmVycmVkLXByb3RlY3Rpb24ucGF0Y2g6IFJlbW92ZWQuCisgICAgICAgICogd3BlL3BhdGNoZXMv
Z3N0LXBsdWdpbnMtZ29vZC0wMDA4LXF0ZGVtdXgtYWxzby1wdXNoLWJ1ZmZlcnMtd2l0aG91dC1l
bmNyeXB0aW9uLWluZm8taW4ucGF0Y2g6IFJlbW92ZWQuCisgICAgICAgICogd3BlL3BhdGNoZXMv
Z3N0cmVhbWVyLTAwMDEtcHJvdGVjdGlvbi1hZGRlZC1mdW5jdGlvbi10by1maWx0ZXItc3lzdGVt
LWlkcy5wYXRjaDogUmVtb3ZlZC4KKwogMjAxNy0wOC0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gV0tXZWJWaWV3IHNjaGVkdWxl
cyBub25zdG9wIGxheW91dCBhZnRlciBwcmVzc2luZyBjbWIrYixpLHUgaW5zaWRlIGEgY29udGVu
dGVkaXRhYmxlIGRpdgpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3N0cmVhbWVyL2poYnVpbGQubW9kdWxl
cyBiL1Rvb2xzL2dzdHJlYW1lci9qaGJ1aWxkLm1vZHVsZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg3YzI3ZmNm
ZmM5NDM5ZjhkOWU4ZWQ4MmI4NjI5ZTc4Y2RhM2NiMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L2dzdHJlYW1lci9qaGJ1aWxkLm1vZHVsZXMKQEAgLTAsMCArMSwxMDMgQEAKKzw/eG1sIHZlcnNp
b249IjEuMCI/PgorPCFET0NUWVBFIG1vZHVsZXNldCBTWVNURU0gIm1vZHVsZXNldC5kdGQiPgor
PD94bWwtc3R5bGVzaGVldCB0eXBlPSJ0ZXh0L3hzbCIgaHJlZj0ibW9kdWxlc2V0LnhzbCI/Pgor
PG1vZHVsZXNldD4KKworICA8bWV0YW1vZHVsZSBpZD0id2Via2l0LWdzdHJlYW1lci10ZXN0aW5n
LWRlcGVuZGVuY2llcyI+CisgICAgPGRlcGVuZGVuY2llcz4KKyAgICAgIDxkZXAgcGFja2FnZT0i
Z3N0cmVhbWVyIi8+CisgICAgICA8ZGVwIHBhY2thZ2U9ImdzdC1wbHVnaW5zLWJhc2UiLz4KKyAg
ICAgIDxkZXAgcGFja2FnZT0iZ3N0LXBsdWdpbnMtZ29vZCIvPgorICAgICAgPGRlcCBwYWNrYWdl
PSJnc3QtcGx1Z2lucy1iYWQiLz4KKyAgICAgIDxkZXAgcGFja2FnZT0iZ3N0LWxpYmF2Ii8+Cisg
ICAgPC9kZXBlbmRlbmNpZXM+CisgIDwvbWV0YW1vZHVsZT4KKworICA8IS0tIFBsZWFzZSB1c2Ug
aHR0cC9odHRwcyB0byBhY2Nlc3MgcmVwb3NpdG9yaWVzIHRvIGJlIGZyaWVuZGx5IHRvIHVzZXJz
IHN0dWNrIGJlaGluZCBmaXJld2FsbHMuIC0tPgorICA8cmVwb3NpdG9yeSB0eXBlPSJ0YXJiYWxs
IiBuYW1lPSJnc3RyZWFtZXIiCisgICAgICBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNr
dG9wLm9yZy9zcmMvIi8+CisgIDxyZXBvc2l0b3J5IHR5cGU9InRhcmJhbGwiIG5hbWU9ImdpdGh1
Yi10YXJiYWxsIgorICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLyIvPgorICA8cmVwb3Np
dG9yeSB0eXBlPSJ0YXJiYWxsIiBuYW1lPSJkb3dubG9hZHMud2VibXByb2plY3Qub3JnIgorICAg
ICAgaHJlZj0iaHR0cDovL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VibS8i
Lz4KKworICA8YXV0b3Rvb2xzIGlkPSJvcmMiIGF1dG9nZW5hcmdzPSItLWRpc2FibGUtZ3RrLWRv
YyIgYXV0b2dlbi1zaD0iY29uZmlndXJlIj4KKyAgICA8YnJhbmNoIG1vZHVsZT0ib3JjL29yYy0w
LjQuMTcudGFyLmd6IiB2ZXJzaW9uPSIwLjQuMTciCisgICAgICAgICAgICByZXBvPSJnc3RyZWFt
ZXIiCisgICAgICAgICAgICBoYXNoPSJzaGEyNTY6NGZjN2NjYTQ4YzU5ZmZmMjNhZmVlNzhmYjY0
MmNkYmRlMDAxZjU2NDAxYzhmNDdiOTVhMTY1NzhkMWQ1ZDdlOCIKKyAgICAgICAgICAgIG1kNXN1
bT0iYWYxYmYzZGFiOWU2OWYzYzM2ZjM4OTI4NWUyYTEyYTEiLz4KKyAgPC9hdXRvdG9vbHM+CisK
KyAgPGF1dG90b29scyBpZD0ib3BlbmgyNjQiIHN1cHBvcnRzLW5vbi1zcmNkaXItYnVpbGRzPSJu
byIgYXV0b2dlbi1zaD0icHNldWRvLWNvbmZpZ3VyZSI+CisgICAgPGJyYW5jaCBtb2R1bGU9ImNp
c2NvL29wZW5oMjY0L2FyY2hpdmUvdiR7dmVyc2lvbn0udGFyLmd6IiB2ZXJzaW9uPSIxLjUuMCIK
KyAgICAgICAgICAgIGNoZWNrb3V0ZGlyPSJvcGVuaDI2NC0ke3ZlcnNpb259IiByZXBvPSJnaXRo
dWItdGFyYmFsbCI+CisgICAgICA8cGF0Y2ggZmlsZT0ib3BlbmgyNjQtY29uZmlndXJlLnBhdGNo
IiBzdHJpcD0iMCIvPgorICAgIDwvYnJhbmNoPgorICA8L2F1dG90b29scz4KKworICA8YXV0b3Rv
b2xzIGlkPSJsaWJ2cHgiCisgICAgYXV0b2dlbi10ZW1wbGF0ZT0iJShzcmNkaXIpcy9jb25maWd1
cmUgLS1wcmVmaXg9JShwcmVmaXgpcyAtLWVuYWJsZS1waWMgLS1hcz15YXNtIC0tZGlzYWJsZS11
bml0LXRlc3RzIC0tc2l6ZS1saW1pdD0xNjM4NHgxNjM4NCAtLWVuYWJsZS1wb3N0cHJvYyAtLWVu
YWJsZS1tdWx0aS1yZXMtZW5jb2RpbmcgLS1lbmFibGUtdGVtcG9yYWwtZGVub2lzaW5nIC0tZW5h
YmxlLXZwOS10ZW1wb3JhbC1kZW5vaXNpbmcgLS1lbmFibGUtdnA5LXBvc3Rwcm9jIC0tZW5hYmxl
LXNoYXJlZCI+CisgICAgPGJyYW5jaCB2ZXJzaW9uPSIxLjYuMCIKKyAgICAgICAgICAgIG1vZHVs
ZT0ibGlidnB4LSR7dmVyc2lvbn0udGFyLmJ6MiIKKyAgICAgICAgICAgIHJlcG89ImRvd25sb2Fk
cy53ZWJtcHJvamVjdC5vcmciCisgICAgICAgICAgICBoYXNoPSJzaGEyNTY6ZDBhZmJiNWViMWVj
YWU2OGY4ZDU3OGFiYWNlMTYwYTk3ZTJlOGEyMzBlMzAyOGNmNGRiMTE1ZDU5YTY5NWFhZCIvPgor
ICA8L2F1dG90b29scz4KKworICA8YXV0b3Rvb2xzIGlkPSJnc3RyZWFtZXIiIGF1dG9nZW4tc2g9
ImNvbmZpZ3VyZSIgYXV0b2dlbmFyZ3M9Ii0tZGlzYWJsZS1ndGstZG9jIC0tZGlzYWJsZS1pbnRy
b3NwZWN0aW9uIj4KKyAgICA8ZGVwZW5kZW5jaWVzPgorICAgICAgPGRlcCBwYWNrYWdlPSJvcmMi
Lz4KKyAgICA8L2RlcGVuZGVuY2llcz4KKyAgICA8YnJhbmNoIG1vZHVsZT0iZ3N0cmVhbWVyL2dz
dHJlYW1lci0ke3ZlcnNpb259LnRhci54eiIgdmVyc2lvbj0iMS4xMC41IgorICAgICAgICAgICAg
cmVwbz0iZ3N0cmVhbWVyIgorICAgICAgICAgICAgaGFzaD0ic2hhMjU2OmJjMDYyNDM2MDA4MTdm
NjM3MDI5ZGEyOWQwODlkNTkwOGQxZDI2NjU0MmY2OGJmNjYyNmExMGM1ZjA1ZjFmMWQiPgorICAg
ICAgPHBhdGNoIGZpbGU9ImdzdHJlYW1lci0wMDAxLXByb3RlY3Rpb24tYWRkZWQtZnVuY3Rpb24t
dG8tZmlsdGVyLXN5c3RlbS1pZHMucGF0Y2giIHN0cmlwPSIxIi8+CisgICAgPC9icmFuY2g+Cisg
IDwvYXV0b3Rvb2xzPgorCisgIDxhdXRvdG9vbHMgaWQ9ImdzdC1wbHVnaW5zLWJhc2UiCisgICAg
ICAgICAgICAgYXV0b2dlbi1zaD0iY29uZmlndXJlIgorICAgICAgICAgICAgIGF1dG9nZW5hcmdz
PSItLWRpc2FibGUtZXhhbXBsZXMgLS1kaXNhYmxlLWd0ay1kb2MgLS1kaXNhYmxlLWludHJvc3Bl
Y3Rpb24iPgorICAgIDxkZXBlbmRlbmNpZXM+CisgICAgICA8ZGVwIHBhY2thZ2U9ImdzdHJlYW1l
ciIvPgorICAgIDwvZGVwZW5kZW5jaWVzPgorICAgIDxicmFuY2ggbW9kdWxlPSJnc3QtcGx1Z2lu
cy1iYXNlL2dzdC1wbHVnaW5zLWJhc2UtJHt2ZXJzaW9ufS50YXIueHoiIHZlcnNpb249IjEuMTAu
NSIKKyAgICAgICAgICAgIHJlcG89ImdzdHJlYW1lciIKKyAgICAgICAgICAgIGhhc2g9InNoYTI1
NjoxYzQwMWE3OWJkMWU0NTIxYzZlZjFiNjY1NzliZGRlZGQ5MTM2ZTE2NGU1NDc5MmFhYjRiZmNm
MzQ4NWJmOWE3Ii8+CisgIDwvYXV0b3Rvb2xzPgorCisgIDxhdXRvdG9vbHMgaWQ9ImdzdC1wbHVn
aW5zLWdvb2QiIGF1dG9nZW4tc2g9ImNvbmZpZ3VyZSIgYXV0b2dlbmFyZ3M9Ii0tZGlzYWJsZS1l
eGFtcGxlcyAtLWRpc2FibGUtZ3RrLWRvYyAtLWRpc2FibGUtaW50cm9zcGVjdGlvbiI+CisgICAg
PGRlcGVuZGVuY2llcz4KKyAgICAgIDxkZXAgcGFja2FnZT0iZ3N0LXBsdWdpbnMtYmFzZSIvPgor
ICAgICAgPGRlcCBwYWNrYWdlPSJsaWJ2cHgiLz4KKyAgICA8L2RlcGVuZGVuY2llcz4KKworICAg
IDxicmFuY2ggbW9kdWxlPSJnc3QtcGx1Z2lucy1nb29kL2dzdC1wbHVnaW5zLWdvb2QtJHt2ZXJz
aW9ufS50YXIueHoiIHZlcnNpb249IjEuMTAuNSIKKyAgICAgICAgICAgIHJlcG89ImdzdHJlYW1l
ciIKKyAgICAgICAgICAgIGhhc2g9InNoYTI1NjpiZTA1M2Y2ZWQ3MTZlZWI1MTdjZWMxNDhjZWM2
MzdjZGNlNTcxYzZlMDRkNWMyMTQwOWUyODc2ZmI3NmM3NjM5Ij4KKyAgICAgIDxwYXRjaCBmaWxl
PSJnc3QtcGx1Z2lucy1nb29kLTAwMDMtcnRwYmluLXJlY2VpdmUtYnVuZGxlLXN1cHBvcnQucGF0
Y2giIHN0cmlwPSIxIi8+CisgICAgICA8cGF0Y2ggZmlsZT0iZ3N0LXBsdWdpbnMtZ29vZC0wMDA1
LXNvdXBodHRwc3JjLWNvb2tpZS1qYXItYW5kLWNvbnRleHQtcXVlcnktc3VwcG9ydC5wYXRjaCIg
c3RyaXA9IjEiLz4KKyAgICAgIDxwYXRjaCBmaWxlPSJnc3QtcGx1Z2lucy1nb29kLTAwMDYtcXRk
ZW11eC1hZGQtY29udGV4dC1mb3ItYS1wcmVmZXJyZWQtcHJvdGVjdGlvbi5wYXRjaCIgc3RyaXA9
IjEiLz4KKyAgICAgIDxwYXRjaCBmaWxlPSJnc3QtcGx1Z2lucy1nb29kLTAwMDgtcXRkZW11eC1h
bHNvLXB1c2gtYnVmZmVycy13aXRob3V0LWVuY3J5cHRpb24taW5mby1pbi5wYXRjaCIgc3RyaXA9
IjEiLz4KKyAgICA8L2JyYW5jaD4KKyAgPC9hdXRvdG9vbHM+CisKKyAgPGF1dG90b29scyBpZD0i
Z3N0LXBsdWdpbnMtYmFkIiBhdXRvZ2VuLXNoPSJjb25maWd1cmUiIGF1dG9nZW5hcmdzPSItLWRp
c2FibGUtZXhhbXBsZXMgLS1kaXNhYmxlLWd0ay1kb2MgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24i
PgorICAgIDxkZXBlbmRlbmNpZXM+CisgICAgICA8ZGVwIHBhY2thZ2U9ImdzdC1wbHVnaW5zLWJh
c2UiLz4KKyAgICAgIDxkZXAgcGFja2FnZT0ib3BlbmgyNjQiLz4KKyAgICA8L2RlcGVuZGVuY2ll
cz4KKyAgICA8YnJhbmNoIG1vZHVsZT0iZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0k
e3ZlcnNpb259LnRhci54eiIgdmVyc2lvbj0iMS4xMC41IgorICAgICAgICAgICAgcmVwbz0iZ3N0
cmVhbWVyIgorICAgICAgICAgICAgaGFzaD0ic2hhMjU2OmM1ODA2MDQwYmI4M2I0M2JlODZjZTU5
MmU2YTE5YzVkODNkNzc3NmY3ZDlmNDM0ZWI0YjkxMWM0ZWZmZjM1NzMiLz4KKyAgPC9hdXRvdG9v
bHM+CisKKyAgPGF1dG90b29scyBpZD0iZ3N0LWxpYmF2IiBhdXRvZ2VuLXNoPSJjb25maWd1cmUi
IGF1dG9nZW5hcmdzPSItLXdpdGgtbGliYXYtZXh0cmEtY29uZmlndXJlPSctLWRpc2FibGUteWFz
bScgLS1kaXNhYmxlLWd0ay1kb2MiPgorICAgIDxkZXBlbmRlbmNpZXM+CisgICAgICA8ZGVwIHBh
Y2thZ2U9ImdzdC1wbHVnaW5zLWJhc2UiLz4KKyAgICA8L2RlcGVuZGVuY2llcz4KKyAgICA8YnJh
bmNoIG1vZHVsZT0iZ3N0LWxpYmF2L2dzdC1saWJhdi0ke3ZlcnNpb259LnRhci54eiIgdmVyc2lv
bj0iMS4xMC41IgorICAgICAgICAgICAgcmVwbz0iZ3N0cmVhbWVyIgorICAgICAgICAgICAgaGFz
aD0ic2hhMjU2OmU0ZDJmMzE1ZjQ3OGQ0NzI4MWZiZmRmYmQ1OTBhNjNkMjM3MDRjYTM3OTExZDcx
NDJkNTk5MjYxNmY0YjI4ZDMiLz4KKyAgPC9hdXRvdG9vbHM+CisKKzwvbW9kdWxlc2V0PgpkaWZm
IC0tZ2l0IGEvVG9vbHMvZ3N0cmVhbWVyL3BhdGNoZXMvZ3N0LXBsdWdpbnMtZ29vZC0wMDAzLXJ0
cGJpbi1yZWNlaXZlLWJ1bmRsZS1zdXBwb3J0LnBhdGNoIGIvVG9vbHMvZ3N0cmVhbWVyL3BhdGNo
ZXMvZ3N0LXBsdWdpbnMtZ29vZC0wMDAzLXJ0cGJpbi1yZWNlaXZlLWJ1bmRsZS1zdXBwb3J0LnBh
dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZmODljODE5OThiZGNhNWRlODQ4MjM1ZjEwMzExZmE3MzljOTdiYTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9nc3RyZWFtZXIvcGF0Y2hlcy9nc3QtcGx1Z2lucy1n
b29kLTAwMDMtcnRwYmluLXJlY2VpdmUtYnVuZGxlLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwx
MDE4IEBACitGcm9tIGRjZDNjZTk3NTFjZGVmMGI1YWIxZmExMTgzNTVmOTJiZGZlODJjYjMgTW9u
IFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2Fs
aWEuY29tPgorRGF0ZTogV2VkLCAxNiBOb3YgMjAxNiAwODo1NjozNCArMDEwMAorU3ViamVjdDog
W1BBVENIXSBydHBiaW46IHJlY2VpdmUgYnVuZGxlIHN1cHBvcnQKKworQSBuZXcgc2lnbmFsIG5h
bWVkIG9uLWJ1bmRsZWQtc3NyYyBpcyBwcm92aWRlZCBhbmQgY2FuIGJlCit1c2VkIGJ5IHRoZSBh
cHBsaWNhdGlvbiB0byByZWRpcmVjdCBhIHN0cmVhbSB0byBhIGRpZmZlcmVudAorR3N0UnRwU2Vz
c2lvbiBvciB0byBrZWVwIHRoZSBSVFggc3RyZWFtIGdyb3VwZWQgd2l0aGluIHRoZQorR3N0UnRw
U2Vzc2lvbiBvZiB0aGUgc2FtZSBtZWRpYSB0eXBlLgorCitodHRwczovL2J1Z3ppbGxhLmdub21l
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcyNzQwCistLS0KKyBkb2NzL3BsdWdpbnMvZ3N0LXBsdWdp
bnMtZ29vZC1wbHVnaW5zLnNpZ25hbHMgfCAgIDggKworIGdzdC9ydHBtYW5hZ2VyL2dzdHJ0cGJp
bi5jICAgICAgICAgICAgICAgICAgICB8IDU2MiArKysrKysrKysrKysrKysrKystLS0tLS0tLQor
IGdzdC9ydHBtYW5hZ2VyL2dzdHJ0cGJpbi5oICAgICAgICAgICAgICAgICAgICB8ICAgMiArCisg
dGVzdHMvY2hlY2svTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKKyB0
ZXN0cy9jaGVjay9lbGVtZW50cy8uZ2l0aWdub3JlICAgICAgICAgICAgICAgfCAgIDEgKworIHRl
c3RzL2NoZWNrL2VsZW1lbnRzL3J0cGJ1bmRsZS5jICAgICAgICAgICAgICB8IDM5MCArKysrKysr
KysrKysrKysrKysKKyB0ZXN0cy9jaGVjay9tZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDEgKworIHRlc3RzL2V4YW1wbGVzL3J0cC8uZ2l0aWdub3JlICAgICAgICAgICAgICAg
ICB8ICAgMiArCisgdGVzdHMvZXhhbXBsZXMvcnRwL01ha2VmaWxlLmFtICAgICAgICAgICAgICAg
IHwgIDEwICstCisgdGVzdHMvZXhhbXBsZXMvcnRwL2NsaWVudC1ydHBidW5kbGUuYyAgICAgICAg
IHwgMjY2ICsrKysrKysrKysrKworIHRlc3RzL2V4YW1wbGVzL3J0cC9zZXJ2ZXItcnRwYnVuZGxl
LmMgICAgICAgICB8IDE3OSArKysrKysrKworIDExIGZpbGVzIGNoYW5nZWQsIDEyNjUgaW5zZXJ0
aW9ucygrKSwgMTYwIGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9jaGVj
ay9lbGVtZW50cy9ydHBidW5kbGUuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9leGFtcGxl
cy9ydHAvY2xpZW50LXJ0cGJ1bmRsZS5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2V4YW1w
bGVzL3J0cC9zZXJ2ZXItcnRwYnVuZGxlLmMKKworZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9n
c3QtcGx1Z2lucy1nb29kLXBsdWdpbnMuc2lnbmFscyBiL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lu
cy1nb29kLXBsdWdpbnMuc2lnbmFscworaW5kZXggM2RiMTdlOS4uNDRiYmRkYSAxMDA2NDQKKy0t
LSBhL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1nb29kLXBsdWdpbnMuc2lnbmFscworKysrIGIv
ZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWdvb2QtcGx1Z2lucy5zaWduYWxzCitAQCAtMzc1LDYg
KzM3NSwxNCBAQCBndWludCAgYXJnMQorIDwvU0lHTkFMPgorIAorIDxTSUdOQUw+CisrPE5BTUU+
R3N0UnRwQmluOjpvbi1idW5kbGVkLXNzcmM8L05BTUU+CisrPFJFVFVSTlM+Z3VpbnQ8L1JFVFVS
TlM+CisrPEZMQUdTPmw8L0ZMQUdTPgorK0dzdFJ0cEJpbiAqZ3N0cnRwYmluCisrZ3VpbnQgIGFy
ZzEKKys8L1NJR05BTD4KKysKKys8U0lHTkFMPgorIDxOQU1FPkdzdFJ0cEppdHRlckJ1ZmZlcjo6
Y2xlYXItcHQtbWFwPC9OQU1FPgorIDxSRVRVUk5TPnZvaWQ8L1JFVFVSTlM+CisgPEZMQUdTPmxh
PC9GTEFHUz4KK2RpZmYgLS1naXQgYS9nc3QvcnRwbWFuYWdlci9nc3RydHBiaW4uYyBiL2dzdC9y
dHBtYW5hZ2VyL2dzdHJ0cGJpbi5jCitpbmRleCA2NDhhZGI5Li5mNThkZTAxIDEwMDY0NAorLS0t
IGEvZ3N0L3J0cG1hbmFnZXIvZ3N0cnRwYmluLmMKKysrKyBiL2dzdC9ydHBtYW5hZ2VyL2dzdHJ0
cGJpbi5jCitAQCAtNTMsNiArNTMsMTMgQEAKKyAgKiBTU1JDIGluIHRoZSBSVFAgcGFja2V0cyB0
byBpdHMgb3duIFNTUkMgYW5kIHdpbCBmb3J3YXJkIHRoZSBwYWNrZXRzIG9uIHRoZQorICAqIHNl
bmRfcnRwX3NyY19cJXUgcGFkIGFmdGVyIHVwZGF0aW5nIGl0cyBpbnRlcm5hbCBzdGF0ZS4KKyAg
KgorKyAqICNHc3RSdHBCaW4gY2FuIGFsc28gZGVtdWx0aXBsZXggaW5jb21pbmcgYnVuZGxlZCBz
dHJlYW1zLiBUaGUgZmlyc3QKKysgKiAjR3N0UnRwU2Vzc2lvbiB3aWxsIGhhdmUgYSAjR3N0UnRw
U3NyY0RlbXV4IGVsZW1lbnQgc3BsaXR0aW5nIHRoZSBzdHJlYW1zCisrICogYmFzZWQgb24gdGhl
aXIgU1NSQyBhbmQgcG90ZW50aWFsbHkgZGlzcGF0Y2hlZCB0byBhIGRpZmZlcmVudCAjR3N0UnRw
U2Vzc2lvbi4KKysgKiBCZWNhdXNlIHJldHJhbnNtaXNzaW9uIFNTUkNzIG5lZWQgdG8gYmUgbWVy
Z2VkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgbWVkaWEKKysgKiBzdHJlYW0gdGhlICNHc3RSdHBC
aW46Om9uLWJ1bmRsZWQtc3NyYyBzaWduYWwgaXMgZW1pdHRlZCBzbyB0aGF0IHRoZQorKyAqIGFw
cGxpY2F0aW9uIGNhbiBmaW5kIG91dCB0byB3aGljaCBzZXNzaW9uIHRoZSBTU1JDIGJlbG9uZ3Mu
CisrICoKKyAgKiBUaGUgc2Vzc2lvbiBtYW5hZ2VyIG5lZWRzIHRoZSBjbG9jay1yYXRlIG9mIHRo
ZSBwYXlsb2FkIHR5cGVzIGl0IGlzIGhhbmRsaW5nCisgICogYW5kIHdpbGwgc2lnbmFsIHRoZSAj
R3N0UnRwU2Vzc2lvbjo6cmVxdWVzdC1wdC1tYXAgc2lnbmFsIHdoZW4gaXQgbmVlZHMgc3VjaCBh
CisgICogbWFwcGluZy4gT25lIGNhbiBjbGVhciB0aGUgY2FjaGVkIHZhbHVlcyB3aXRoIHRoZSAj
R3N0UnRwU2Vzc2lvbjo6Y2xlYXItcHQtbWFwCitAQCAtMjc2LDYgKzI4Myw4IEBAIGVudW0KKyAg
IFNJR05BTF9PTl9ORVdfU0VOREVSX1NTUkMsCisgICBTSUdOQUxfT05fU0VOREVSX1NTUkNfQUNU
SVZFLAorIAorKyAgU0lHTkFMX09OX0JVTkRMRURfU1NSQywKKysKKyAgIExBU1RfU0lHTkFMCisg
fTsKKyAKK0BAIC0zNjIsNiArMzcxLDE0IEBAIHN0YXRpYyB2b2lkIHJlbW92ZV9zZW5kX3J0cCAo
R3N0UnRwQmluICogcnRwYmluLCBHc3RSdHBCaW5TZXNzaW9uICogc2Vzc2lvbik7Cisgc3RhdGlj
IHZvaWQgcmVtb3ZlX3J0Y3AgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0UnRwQmluU2Vzc2lvbiAq
IHNlc3Npb24pOworIHN0YXRpYyB2b2lkIGZyZWVfY2xpZW50IChHc3RSdHBCaW5DbGllbnQgKiBj
bGllbnQsIEdzdFJ0cEJpbiAqIGJpbik7Cisgc3RhdGljIHZvaWQgZnJlZV9zdHJlYW0gKEdzdFJ0
cEJpblN0cmVhbSAqIHN0cmVhbSwgR3N0UnRwQmluICogYmluKTsKKytzdGF0aWMgR3N0UnRwQmlu
U2Vzc2lvbiAqY3JlYXRlX3Nlc3Npb24gKEdzdFJ0cEJpbiAqIHJ0cGJpbiwgZ2ludCBpZCk7Cisr
c3RhdGljIEdzdFBhZCAqY29tcGxldGVfc2Vzc2lvbl9zaW5rIChHc3RSdHBCaW4gKiBydHBiaW4s
CisrICAgIEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9uLCBnYm9vbGVhbiBidW5kbGVfZGVtdXhl
cl9uZWVkZWQpOworK3N0YXRpYyB2b2lkCisrY29tcGxldGVfc2Vzc2lvbl9yZWNlaXZlciAoR3N0
UnRwQmluICogcnRwYmluLCBHc3RSdHBCaW5TZXNzaW9uICogc2Vzc2lvbiwKKysgICAgZ3VpbnQg
c2Vzc2lkKTsKKytzdGF0aWMgR3N0UGFkICpjb21wbGV0ZV9zZXNzaW9uX3J0Y3AgKEdzdFJ0cEJp
biAqIHJ0cGJpbiwKKysgICAgR3N0UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24sIGd1aW50IHNlc3Np
ZCwgZ2Jvb2xlYW4gYnVuZGxlX2RlbXV4ZXJfbmVlZGVkKTsKKyAKKyAvKiBNYW5hZ2VzIHRoZSBS
VFAgc3RyZWFtIGZvciBvbmUgU1NSQy4KKyAgKgorQEAgLTQyOCw2ICs0NDUsMTIgQEAgc3RydWN0
IF9Hc3RSdHBCaW5TZXNzaW9uCisgICBndWxvbmcgZGVtdXhfbmV3cGFkX3NpZzsKKyAgIGd1bG9u
ZyBkZW11eF9wYWRyZW1vdmVkX3NpZzsKKyAKKysgIC8qIEJ1bmRsaW5nIHN1cHBvcnQgKi8KKysg
IEdzdEVsZW1lbnQgKnJ0cF9mdW5uZWw7CisrICBHc3RFbGVtZW50ICpydGNwX2Z1bm5lbDsKKysg
IEdzdEVsZW1lbnQgKmJ1bmRsZV9kZW11eDsKKysgIGd1bG9uZyBidW5kbGVfZGVtdXhfbmV3cGFk
X3NpZzsKKysKKyAgIEdNdXRleCBsb2NrOworIAorICAgLyogbGlzdCBvZiBHc3RSdHBCaW5TdHJl
YW0gKi8KK0BAIC02MjksNiArNjUyLDk2IEBAIHNzcmNfZGVtdXhfcGFkX3JlbW92ZWQgKEdzdEVs
ZW1lbnQgKiBlbGVtZW50LCBndWludCBzc3JjLCBHc3RQYWQgKiBwYWQsCisgICBHU1RfUlRQX0JJ
Tl9VTkxPQ0sgKHJ0cGJpbik7CisgfQorIAorK3N0YXRpYyB2b2lkCisrbmV3X2J1bmRsZWRfc3Ny
Y19wYWRfZm91bmQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBndWludCBzc3JjLCBHc3RQYWQgKiBw
YWQsCisrICAgIEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9uKQorK3sKKysgIEdWYWx1ZSByZXN1
bHQgPSBHX1ZBTFVFX0lOSVQ7CisrICBHVmFsdWUgcGFyYW1zWzJdID0geyBHX1ZBTFVFX0lOSVQs
IEdfVkFMVUVfSU5JVCB9OworKyAgZ3VpbnQgc2Vzc2lvbl9pZCA9IDA7CisrICBHc3RSdHBCaW5T
ZXNzaW9uICp0YXJnZXRfc2Vzc2lvbiA9IE5VTEw7CisrICBHc3RSdHBCaW4gKnJ0cGJpbiA9IHNl
c3Npb24tPmJpbjsKKysgIGdjaGFyICpuYW1lOworKyAgR3N0UGFkICpzcmNfcGFkOworKyAgR3N0
UGFkICpyZWN2X3J0cF9zaW5rID0gTlVMTDsKKysgIEdzdFBhZCAqcmVjdl9ydGNwX3NpbmsgPSBO
VUxMOworKyAgR3N0UGFkTGlua1JldHVybiByZXQ7CisrCisrICBHU1RfUlRQX0JJTl9EWU5fTE9D
SyAocnRwYmluKTsKKysgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGJpbiwgIm5ldyBidW5kbGVkIFNT
UkMgcGFkICUwOHgsICVzOiVzIiwgc3NyYywKKysgICAgICBHU1RfREVCVUdfUEFEX05BTUUgKHBh
ZCkpOworKworKyAgZ192YWx1ZV9pbml0ICgmcmVzdWx0LCBHX1RZUEVfVUlOVCk7CisrICBnX3Zh
bHVlX2luaXQgKCZwYXJhbXNbMF0sIEdTVF9UWVBFX0VMRU1FTlQpOworKyAgZ192YWx1ZV9zZXRf
b2JqZWN0ICgmcGFyYW1zWzBdLCBydHBiaW4pOworKyAgZ192YWx1ZV9pbml0ICgmcGFyYW1zWzFd
LCBHX1RZUEVfVUlOVCk7CisrICBnX3ZhbHVlX3NldF91aW50ICgmcGFyYW1zWzFdLCBzc3JjKTsK
KysKKysgIGdfc2lnbmFsX2VtaXR2IChwYXJhbXMsCisrICAgICAgZ3N0X3J0cF9iaW5fc2lnbmFs
c1tTSUdOQUxfT05fQlVORExFRF9TU1JDXSwgMCwgJnJlc3VsdCk7CisrICBnX3ZhbHVlX3Vuc2V0
ICgmcGFyYW1zWzBdKTsKKysKKysgIHNlc3Npb25faWQgPSBnX3ZhbHVlX2dldF91aW50ICgmcmVz
dWx0KTsKKysgIGlmIChzZXNzaW9uX2lkID09IDApIHsKKysgICAgdGFyZ2V0X3Nlc3Npb24gPSBz
ZXNzaW9uOworKyAgfSBlbHNlIHsKKysgICAgdGFyZ2V0X3Nlc3Npb24gPSBmaW5kX3Nlc3Npb25f
YnlfaWQgKHJ0cGJpbiwgKGdpbnQpIHNlc3Npb25faWQpOworKyAgICBpZiAoIXRhcmdldF9zZXNz
aW9uKSB7CisrICAgICAgdGFyZ2V0X3Nlc3Npb24gPSBjcmVhdGVfc2Vzc2lvbiAocnRwYmluLCBz
ZXNzaW9uX2lkKTsKKysgICAgfQorKyAgICBpZiAoIXRhcmdldF9zZXNzaW9uLT5yZWN2X3J0cF9z
aW5rKSB7CisrICAgICAgcmVjdl9ydHBfc2luayA9IGNvbXBsZXRlX3Nlc3Npb25fc2luayAocnRw
YmluLCB0YXJnZXRfc2Vzc2lvbiwgRkFMU0UpOworKyAgICB9CisrCisrICAgIGlmICghdGFyZ2V0
X3Nlc3Npb24tPnJlY3ZfcnRwX3NyYykKKysgICAgICBjb21wbGV0ZV9zZXNzaW9uX3JlY2VpdmVy
IChydHBiaW4sIHRhcmdldF9zZXNzaW9uLCBzZXNzaW9uX2lkKTsKKysKKysgICAgaWYgKCF0YXJn
ZXRfc2Vzc2lvbi0+cmVjdl9ydGNwX3NpbmspIHsKKysgICAgICByZWN2X3J0Y3Bfc2luayA9Cisr
ICAgICAgICAgIGNvbXBsZXRlX3Nlc3Npb25fcnRjcCAocnRwYmluLCB0YXJnZXRfc2Vzc2lvbiwg
c2Vzc2lvbl9pZCwgRkFMU0UpOworKyAgICB9CisrICB9CisrCisrICBHU1RfREVCVUdfT0JKRUNU
IChydHBiaW4sICJBc3NpZ25pbmcgYnVuZGxlZCBzc3JjICV1IHRvIHNlc3Npb24gJXUiLCBzc3Jj
LAorKyAgICAgIHNlc3Npb25faWQpOworKworKyAgaWYgKCFyZWN2X3J0cF9zaW5rKSB7CisrICAg
IHJlY3ZfcnRwX3NpbmsgPQorKyAgICAgICAgZ3N0X2VsZW1lbnRfZ2V0X3JlcXVlc3RfcGFkICh0
YXJnZXRfc2Vzc2lvbi0+cnRwX2Z1bm5lbCwgInNpbmtfJXUiKTsKKysgIH0KKysKKysgIGlmICgh
cmVjdl9ydGNwX3NpbmspIHsKKysgICAgcmVjdl9ydGNwX3NpbmsgPQorKyAgICAgICAgZ3N0X2Vs
ZW1lbnRfZ2V0X3JlcXVlc3RfcGFkICh0YXJnZXRfc2Vzc2lvbi0+cnRjcF9mdW5uZWwsICJzaW5r
XyV1Iik7CisrICB9CisrCisrICBuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgic3JjXyV1Iiwgc3Ny
Yyk7CisrICBzcmNfcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKGVsZW1lbnQsIG5h
bWUpOworKyAgcmV0ID0gZ3N0X3BhZF9saW5rIChzcmNfcGFkLCByZWN2X3J0cF9zaW5rKTsKKysg
IGdfZnJlZSAobmFtZSk7CisrICBnc3Rfb2JqZWN0X3VucmVmIChzcmNfcGFkKTsKKysgIGdzdF9v
YmplY3RfdW5yZWYgKHJlY3ZfcnRwX3NpbmspOworKyAgaWYgKHJldCAhPSBHU1RfUEFEX0xJTktf
T0spIHsKKysgICAgZ193YXJuaW5nCisrICAgICAgICAoInJ0cGJpbjogZmFpbGVkIHRvIGxpbmsg
YnVuZGxlIGRlbXV4ZXIgdG8gcmVjZWl2ZSBydHAgZnVubmVsIGZvciBzZXNzaW9uICV1IiwKKysg
ICAgICAgIHNlc3Npb25faWQpOworKyAgfQorKworKyAgbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAo
InJ0Y3Bfc3JjXyV1Iiwgc3NyYyk7CisrICBzcmNfcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRp
Y19wYWQgKGVsZW1lbnQsIG5hbWUpOworKyAgZ3N0X3BhZF9saW5rIChzcmNfcGFkLCByZWN2X3J0
Y3Bfc2luayk7CisrICBnX2ZyZWUgKG5hbWUpOworKyAgZ3N0X29iamVjdF91bnJlZiAoc3JjX3Bh
ZCk7CisrICBnc3Rfb2JqZWN0X3VucmVmIChyZWN2X3J0Y3Bfc2luayk7CisrICBpZiAocmV0ICE9
IEdTVF9QQURfTElOS19PSykgeworKyAgICBnX3dhcm5pbmcKKysgICAgICAgICgicnRwYmluOiBm
YWlsZWQgdG8gbGluayBidW5kbGUgZGVtdXhlciB0byByZWNlaXZlIHJ0Y3Agc2luayBwYWQgZm9y
IHNlc3Npb24gJXUiLAorKyAgICAgICAgc2Vzc2lvbl9pZCk7CisrICB9CisrCisrICBHU1RfUlRQ
X0JJTl9EWU5fVU5MT0NLIChydHBiaW4pOworK30KKysKKyAvKiBjcmVhdGUgYSBzZXNzaW9uIHdp
dGggdGhlIGdpdmVuIGlkLiAgTXVzdCBiZSBjYWxsZWQgd2l0aCBSVFBfQklOX0xPQ0sgKi8KKyBz
dGF0aWMgR3N0UnRwQmluU2Vzc2lvbiAqCisgY3JlYXRlX3Nlc3Npb24gKEdzdFJ0cEJpbiAqIHJ0
cGJpbiwgZ2ludCBpZCkKK0BAIC02NDksNiArNzYyLDEwIEBAIGNyZWF0ZV9zZXNzaW9uIChHc3RS
dHBCaW4gKiBydHBiaW4sIGdpbnQgaWQpCisgICBzZXNzLT5iaW4gPSBydHBiaW47CisgICBzZXNz
LT5zZXNzaW9uID0gc2Vzc2lvbjsKKyAgIHNlc3MtPmRlbXV4ID0gZGVtdXg7CisrCisrICBzZXNz
LT5ydHBfZnVubmVsID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZnVubmVsIiwgTlVMTCk7
CisrICBzZXNzLT5ydGNwX2Z1bm5lbCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImZ1bm5l
bCIsIE5VTEwpOworKworICAgc2Vzcy0+cHRtYXAgPSBnX2hhc2hfdGFibGVfbmV3X2Z1bGwgKE5V
TEwsIE5VTEwsIE5VTEwsCisgICAgICAgKEdEZXN0cm95Tm90aWZ5KSBnc3RfY2Fwc191bnJlZik7
CisgICBydHBiaW4tPnNlc3Npb25zID0gZ19zbGlzdF9wcmVwZW5kIChydHBiaW4tPnNlc3Npb25z
LCBzZXNzKTsKK0BAIC02OTYsNiArODEzLDggQEAgY3JlYXRlX3Nlc3Npb24gKEdzdFJ0cEJpbiAq
IHJ0cGJpbiwgZ2ludCBpZCkKKyAKKyAgIGdzdF9iaW5fYWRkIChHU1RfQklOX0NBU1QgKHJ0cGJp
biksIHNlc3Npb24pOworICAgZ3N0X2Jpbl9hZGQgKEdTVF9CSU5fQ0FTVCAocnRwYmluKSwgZGVt
dXgpOworKyAgZ3N0X2Jpbl9hZGQgKEdTVF9CSU5fQ0FTVCAocnRwYmluKSwgc2Vzcy0+cnRwX2Z1
bm5lbCk7CisrICBnc3RfYmluX2FkZCAoR1NUX0JJTl9DQVNUIChydHBiaW4pLCBzZXNzLT5ydGNw
X2Z1bm5lbCk7CisgCisgICBHU1RfT0JKRUNUX0xPQ0sgKHJ0cGJpbik7CisgICB0YXJnZXQgPSBH
U1RfU1RBVEVfVEFSR0VUIChydHBiaW4pOworQEAgLTcwNCw2ICs4MjMsOCBAQCBjcmVhdGVfc2Vz
c2lvbiAoR3N0UnRwQmluICogcnRwYmluLCBnaW50IGlkKQorICAgLyogY2hhbmdlIHN0YXRlIG9u
bHkgdG8gd2hhdCdzIG5lZWRlZCAqLworICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChkZW11eCwg
dGFyZ2V0KTsKKyAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoc2Vzc2lvbiwgdGFyZ2V0KTsKKysg
IGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoc2Vzcy0+cnRwX2Z1bm5lbCwgdGFyZ2V0KTsKKysgIGdz
dF9lbGVtZW50X3NldF9zdGF0ZSAoc2Vzcy0+cnRjcF9mdW5uZWwsIHRhcmdldCk7CisgCisgICBy
ZXR1cm4gc2VzczsKKyAKK0BAIC04MDcsNyArOTI4LDcgQEAgZ2V0X3B0X21hcCAoR3N0UnRwQmlu
U2Vzc2lvbiAqIHNlc3Npb24sIGd1aW50IHB0KQorICAgR1ZhbHVlIHJldCA9IHsgMCB9OworICAg
R1ZhbHVlIGFyZ3NbM10gPSB7IHswfSwgezB9LCB7MH0gfTsKKyAKKy0gIEdTVF9ERUJVRyAoInNl
YXJjaGluZyBwdCAlZCBpbiBjYWNoZSIsIHB0KTsKKysgIEdTVF9ERUJVRyAoInNlYXJjaGluZyBw
dCAldSBpbiBjYWNoZSIsIHB0KTsKKyAKKyAgIEdTVF9SVFBfU0VTU0lPTl9MT0NLIChzZXNzaW9u
KTsKKyAKK0BAIC04MjAsNyArOTQxLDcgQEAgZ2V0X3B0X21hcCAoR3N0UnRwQmluU2Vzc2lvbiAq
IHNlc3Npb24sIGd1aW50IHB0KQorIAorICAgYmluID0gc2Vzc2lvbi0+YmluOworIAorLSAgR1NU
X0RFQlVHICgiZW1pdGluZyBzaWduYWwgZm9yIHB0ICVkIGluIHNlc3Npb24gJWQiLCBwdCwgc2Vz
c2lvbi0+aWQpOworKyAgR1NUX0RFQlVHICgiZW1pdGluZyBzaWduYWwgZm9yIHB0ICV1IGluIHNl
c3Npb24gJXUiLCBwdCwgc2Vzc2lvbi0+aWQpOworIAorICAgLyogbm90IGluIGNhY2hlLCBzZW5k
IHNpZ25hbCB0byByZXF1ZXN0IGNhcHMgKi8KKyAgIGdfdmFsdWVfaW5pdCAoJmFyZ3NbMF0sIEdT
VF9UWVBFX0VMRU1FTlQpOworQEAgLTg1Niw3ICs5NzcsNyBAQCBnZXRfcHRfbWFwIChHc3RSdHBC
aW5TZXNzaW9uICogc2Vzc2lvbiwgZ3VpbnQgcHQpCisgICBpZiAoIWNhcHMpCisgICAgIGdvdG8g
bm9fY2FwczsKKyAKKy0gIEdTVF9ERUJVRyAoImNhY2hpbmcgcHQgJWQgYXMgJSIgR1NUX1BUUl9G
T1JNQVQsIHB0LCBjYXBzKTsKKysgIEdTVF9ERUJVRyAoImNhY2hpbmcgcHQgJXUgYXMgJSIgR1NU
X1BUUl9GT1JNQVQsIHB0LCBjYXBzKTsKKyAKKyAgIC8qIHN0b3JlIGluIGNhY2hlLCB0YWtlIGFk
ZGl0aW9uYWwgcmVmICovCisgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChzZXNzaW9uLT5wdG1hcCwg
R0lOVF9UT19QT0lOVEVSIChwdCksCitAQCAtOTQ3LDcgKzEwNjgsNyBAQCBnc3RfcnRwX2Jpbl9n
ZXRfc2Vzc2lvbiAoR3N0UnRwQmluICogYmluLCBndWludCBzZXNzaW9uX2lkKQorICAgR3N0RWxl
bWVudCAqcmV0ID0gTlVMTDsKKyAKKyAgIEdTVF9SVFBfQklOX0xPQ0sgKGJpbik7CistICBHU1Rf
REVCVUdfT0JKRUNUIChiaW4sICJyZXRyaWV2aW5nIEdzdFJ0cFNlc3Npb24sIGluZGV4OiAlZCIs
IHNlc3Npb25faWQpOworKyAgR1NUX0RFQlVHX09CSkVDVCAoYmluLCAicmV0cmlldmluZyBHc3RS
dHBTZXNzaW9uLCBpbmRleDogJXUiLCBzZXNzaW9uX2lkKTsKKyAgIHNlc3Npb24gPSBmaW5kX3Nl
c3Npb25fYnlfaWQgKGJpbiwgKGdpbnQpIHNlc3Npb25faWQpOworICAgaWYgKHNlc3Npb24pIHsK
KyAgICAgcmV0ID0gZ3N0X29iamVjdF9yZWYgKHNlc3Npb24tPnNlc3Npb24pOworQEAgLTk2NCw3
ICsxMDg1LDcgQEAgZ3N0X3J0cF9iaW5fZ2V0X2ludGVybmFsX3Nlc3Npb24gKEdzdFJ0cEJpbiAq
IGJpbiwgZ3VpbnQgc2Vzc2lvbl9pZCkKKyAgIEdzdFJ0cEJpblNlc3Npb24gKnNlc3Npb247Cisg
CisgICBHU1RfUlRQX0JJTl9MT0NLIChiaW4pOworLSAgR1NUX0RFQlVHX09CSkVDVCAoYmluLCAi
cmV0cmlldmluZyBpbnRlcm5hbCBSVFBTZXNzaW9uIG9iamVjdCwgaW5kZXg6ICVkIiwKKysgIEdT
VF9ERUJVR19PQkpFQ1QgKGJpbiwgInJldHJpZXZpbmcgaW50ZXJuYWwgUlRQU2Vzc2lvbiBvYmpl
Y3QsIGluZGV4OiAldSIsCisgICAgICAgc2Vzc2lvbl9pZCk7CisgICBzZXNzaW9uID0gZmluZF9z
ZXNzaW9uX2J5X2lkIChiaW4sIChnaW50KSBzZXNzaW9uX2lkKTsKKyAgIGlmIChzZXNzaW9uKSB7
CitAQCAtMjE5NCw2ICsyMzE1LDI5IEBAIGdzdF9ydHBfYmluX2NsYXNzX2luaXQgKEdzdFJ0cEJp
bkNsYXNzICoga2xhc3MpCisgICAgICAgICAgIG9uX3NlbmRlcl9zc3JjX2FjdGl2ZSksIE5VTEws
IE5VTEwsIGdfY2Nsb3N1cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgIEdfVFlQRV9OT05FLCAy
LCBHX1RZUEVfVUlOVCwgR19UWVBFX1VJTlQpOworIAorKworKyAgLyoqCisrICAgKiBHc3RSdHBC
aW46Om9uLWJ1bmRsZWQtc3NyYzoKKysgICAqIEBydHBiaW46IHRoZSBvYmplY3Qgd2hpY2ggcmVj
ZWl2ZWQgdGhlIHNpZ25hbAorKyAgICogQHNzcmM6IHRoZSBidW5kbGVkIFNTUkMKKysgICAqCisr
ICAgKiBOb3RpZnkgb2YgYSBuZXcgaW5jb21pbmcgYnVuZGxlZCBTU1JDLiBJZiBubyBoYW5kbGVy
IGlzIGNvbm5lY3RlZCB0byB0aGUKKysgICAqIHNpZ25hbCB0aGVuIHRoZSAjR3N0UnRwU2Vzc2lv
biBjcmVhdGVkIGZvciB0aGUgcmVjdl9ydHBfc2lua19cJXUKKysgICAqIHJlcXVlc3QgcGFkIHdp
bGwgYmUgbWFuYWdpbmcgdGhpcyBuZXcgU1NSQy4gSG93ZXZlciBpZiB0aGVyZSBpcyBhIGhhbmRs
ZXIKKysgICAqIGNvbm5lY3RlZCB0aGVuIHRoZSBhcHBsaWNhdGlvbiBjYW4gZGVjaWRlZCB0byBk
aXNwYXRjaCB0aGlzIG5ldyBzdHJlYW0gdG8KKysgICAqIGFub3RoZXIgc2Vzc2lvbiBieSBwcm92
aWRpbmcgaXRzIElEIGFzIHJldHVybiB2YWx1ZSBvZiB0aGUgaGFuZGxlci4gVGhpcworKyAgICog
Y2FuIGJlIHBhcnRpY3VsYXJseSB1c2VmdWwgdG8ga2VlcCByZXRyYW5zbWlzc2lvbiBTU1JDcyBn
cm91cGVkIHdpdGggdGhlCisrICAgKiBzZXNzaW9uIGZvciB3aGljaCB0aGV5IGhhbmRsZSByZXRy
YW5zbWlzc2lvbi4KKysgICAqCisrICAgKiBTaW5jZTogMS4xMgorKyAgICovCisrICBnc3RfcnRw
X2Jpbl9zaWduYWxzW1NJR05BTF9PTl9CVU5ETEVEX1NTUkNdID0KKysgICAgICBnX3NpZ25hbF9u
ZXcgKCJvbi1idW5kbGVkLXNzcmMiLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLAorKyAgICAg
IEdfU0lHTkFMX1JVTl9MQVNULCBHX1NUUlVDVF9PRkZTRVQgKEdzdFJ0cEJpbkNsYXNzLAorKyAg
ICAgICAgICBvbl9idW5kbGVkX3NzcmMpLCBOVUxMLCBOVUxMLAorKyAgICAgIGdfY2Nsb3N1cmVf
bWFyc2hhbF9nZW5lcmljLCBHX1RZUEVfVUlOVCwgMSwgR19UWVBFX1VJTlQpOworKworKworICAg
Z19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9TREVT
LAorICAgICAgIGdfcGFyYW1fc3BlY19ib3hlZCAoInNkZXMiLCAiU0RFUyIsCisgICAgICAgICAg
ICJUaGUgU0RFUyBpdGVtcyBvZiB0aGlzIHNlc3Npb24iLAorQEAgLTMwMjEsNyArMzE2NSw3IEBA
IG5ld19wYXlsb2FkX2ZvdW5kIChHc3RFbGVtZW50ICogZWxlbWVudCwgZ3VpbnQgcHQsIEdzdFBh
ZCAqIHBhZCwKKyAKKyAgIHJ0cGJpbiA9IHN0cmVhbS0+YmluOworIAorLSAgR1NUX0RFQlVHICgi
bmV3IHBheWxvYWQgcGFkICVkIiwgcHQpOworKyAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAi
bmV3IHBheWxvYWQgcGFkICV1IiwgcHQpOworIAorICAgR1NUX1JUUF9CSU5fU0hVVERPV05fTE9D
SyAocnRwYmluLCBzaHV0ZG93bik7CisgCitAQCAtMzA3OCw3ICszMjIyLDcgQEAgcHRfbWFwX3Jl
cXVlc3RlZCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIGd1aW50IHB0LCBHc3RSdHBCaW5TZXNzaW9u
ICogc2Vzc2lvbikKKyAKKyAgIHJ0cGJpbiA9IHNlc3Npb24tPmJpbjsKKyAKKy0gIEdTVF9ERUJV
R19PQkpFQ1QgKHJ0cGJpbiwgInBheWxvYWQgbWFwIHJlcXVlc3RlZCBmb3IgcHQgJWQgaW4gc2Vz
c2lvbiAlZCIsIHB0LAorKyAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAicGF5bG9hZCBtYXAg
cmVxdWVzdGVkIGZvciBwdCAldSBpbiBzZXNzaW9uICV1IiwgcHQsCisgICAgICAgc2Vzc2lvbi0+
aWQpOworIAorICAgY2FwcyA9IGdldF9wdF9tYXAgKHNlc3Npb24sIHB0KTsKK0BAIC0zMDk5LDcg
KzMyNDMsNyBAQCBzdGF0aWMgdm9pZAorIHBheWxvYWRfdHlwZV9jaGFuZ2UgKEdzdEVsZW1lbnQg
KiBlbGVtZW50LCBndWludCBwdCwgR3N0UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24pCisgeworICAg
R1NUX0RFQlVHX09CSkVDVCAoc2Vzc2lvbi0+YmluLAorLSAgICAgICJlbWl0aW5nIHNpZ25hbCBm
b3IgcHQgdHlwZSBjaGFuZ2VkIHRvICVkIGluIHNlc3Npb24gJWQiLCBwdCwKKysgICAgICAiZW1p
dGluZyBzaWduYWwgZm9yIHB0IHR5cGUgY2hhbmdlZCB0byAldSBpbiBzZXNzaW9uICV1IiwgcHQs
CisgICAgICAgc2Vzc2lvbi0+aWQpOworIAorICAgZ19zaWduYWxfZW1pdCAoc2Vzc2lvbi0+Ymlu
LCBnc3RfcnRwX2Jpbl9zaWduYWxzW1NJR05BTF9QQVlMT0FEX1RZUEVfQ0hBTkdFXSwKK0BAIC0z
MjQ2LDE1ICszMzkwLDQyIEBAIG5vX3N0cmVhbToKKyAgIH0KKyB9CisgCistc3RhdGljIGdib29s
ZWFuCistY29tcGxldGVfc2Vzc2lvbl9zaW5rIChHc3RSdHBCaW4gKiBydHBiaW4sIEdzdFJ0cEJp
blNlc3Npb24gKiBzZXNzaW9uKQorK3N0YXRpYyB2b2lkCisrc2Vzc2lvbl9tYXliZV9jcmVhdGVf
YnVuZGxlX2RlbXV4ZXIgKEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9uKQorK3sKKysgIEdzdFJ0
cEJpbiAqcnRwYmluOworKworKyAgaWYgKHNlc3Npb24tPmJ1bmRsZV9kZW11eCkKKysgICAgcmV0
dXJuOworKworKyAgcnRwYmluID0gc2Vzc2lvbi0+YmluOworKyAgaWYgKGdfc2lnbmFsX2hhc19o
YW5kbGVyX3BlbmRpbmcgKHJ0cGJpbiwKKysgICAgICAgICAgZ3N0X3J0cF9iaW5fc2lnbmFsc1tT
SUdOQUxfT05fQlVORExFRF9TU1JDXSwgMCwgVFJVRSkpIHsKKysgICAgR1NUX0RFQlVHX09CSkVD
VCAocnRwYmluLCAiQWRkaW5nIGEgYnVuZGxlIFNTUkMgZGVtdXhlciB0byBzZXNzaW9uICV1IiwK
KysgICAgICAgIHNlc3Npb24tPmlkKTsKKysgICAgc2Vzc2lvbi0+YnVuZGxlX2RlbXV4ID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgicnRwc3NyY2RlbXV4IiwgTlVMTCk7CisrICAgIHNlc3Np
b24tPmJ1bmRsZV9kZW11eF9uZXdwYWRfc2lnID0gZ19zaWduYWxfY29ubmVjdCAoc2Vzc2lvbi0+
YnVuZGxlX2RlbXV4LAorKyAgICAgICAgIm5ldy1zc3JjLXBhZCIsIChHQ2FsbGJhY2spIG5ld19i
dW5kbGVkX3NzcmNfcGFkX2ZvdW5kLCBzZXNzaW9uKTsKKysKKysgICAgZ3N0X2Jpbl9hZGQgKEdT
VF9CSU5fQ0FTVCAocnRwYmluKSwgc2Vzc2lvbi0+YnVuZGxlX2RlbXV4KTsKKysgICAgZ3N0X2Vs
ZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudCAoc2Vzc2lvbi0+YnVuZGxlX2RlbXV4KTsKKysg
IH0gZWxzZSB7CisrICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGJpbiwKKysgICAgICAgICJObyBo
YW5kbGVyIGZvciB0aGUgb24tYnVuZGxlZC1zc3JjIHNpZ25hbCBzbyBubyBuZWVkIGZvciBhIGJ1
bmRsZSBTU1JDIGRlbXV4ZXIgaW4gc2Vzc2lvbiAldSIsCisrICAgICAgICBzZXNzaW9uLT5pZCk7
CisrICB9CisrfQorKworK3N0YXRpYyBHc3RQYWQgKgorK2NvbXBsZXRlX3Nlc3Npb25fc2luayAo
R3N0UnRwQmluICogcnRwYmluLCBHc3RSdHBCaW5TZXNzaW9uICogc2Vzc2lvbiwKKysgICAgZ2Jv
b2xlYW4gYnVuZGxlX2RlbXV4ZXJfbmVlZGVkKQorIHsKKy0gIGdjaGFyICpnbmFtZTsKKyAgIGd1
aW50IHNlc3NpZCA9IHNlc3Npb24tPmlkOworICAgR3N0UGFkICpyZWN2X3J0cF9zaW5rOworKyAg
R3N0UGFkICpmdW5uZWxfc3JjOworICAgR3N0RWxlbWVudCAqZGVjb2RlcjsKKy0gIEdzdEVsZW1l
bnRDbGFzcyAqa2xhc3M7CistICBHc3RQYWRUZW1wbGF0ZSAqdGVtcGw7CisrCisrICBnX2Fzc2Vy
dCAoIXNlc3Npb24tPnJlY3ZfcnRwX3NpbmspOworIAorICAgLyogZ2V0IHJlY3ZfcnRwIHBhZCBh
bmQgc3RvcmUgKi8KKyAgIHNlc3Npb24tPnJlY3ZfcnRwX3NpbmsgPQorQEAgLTMyNjUsNiArMzQz
Niw5IEBAIGNvbXBsZXRlX3Nlc3Npb25fc2luayAoR3N0UnRwQmluICogcnRwYmluLCBHc3RSdHBC
aW5TZXNzaW9uICogc2Vzc2lvbikKKyAgIGdfc2lnbmFsX2Nvbm5lY3QgKHNlc3Npb24tPnJlY3Zf
cnRwX3NpbmssICJub3RpZnk6OmNhcHMiLAorICAgICAgIChHQ2FsbGJhY2spIGNhcHNfY2hhbmdl
ZCwgc2Vzc2lvbik7CisgCisrICBpZiAoYnVuZGxlX2RlbXV4ZXJfbmVlZGVkKQorKyAgICBzZXNz
aW9uX21heWJlX2NyZWF0ZV9idW5kbGVfZGVtdXhlciAoc2Vzc2lvbik7CisrCisgICBHU1RfREVC
VUdfT0JKRUNUIChydHBiaW4sICJyZXF1ZXN0aW5nIFJUUCBkZWNvZGVyIik7CisgICBkZWNvZGVy
ID0gc2Vzc2lvbl9yZXF1ZXN0X2VsZW1lbnQgKHNlc3Npb24sIFNJR05BTF9SRVFVRVNUX1JUUF9E
RUNPREVSKTsKKyAgIGlmIChkZWNvZGVyKSB7CitAQCAtMzI4Miw3ICszNDU2LDE0IEBAIGNvbXBs
ZXRlX3Nlc3Npb25fc2luayAoR3N0UnRwQmluICogcnRwYmluLCBHc3RSdHBCaW5TZXNzaW9uICog
c2Vzc2lvbikKKyAgICAgaWYgKGRlY3NyYyA9PSBOVUxMKQorICAgICAgIGdvdG8gZGVjX3NyY19m
YWlsZWQ7CisgCistICAgIHJldCA9IGdzdF9wYWRfbGluayAoZGVjc3JjLCBzZXNzaW9uLT5yZWN2
X3J0cF9zaW5rKTsKKysgICAgaWYgKHNlc3Npb24tPmJ1bmRsZV9kZW11eCkgeworKyAgICAgIEdz
dFBhZCAqZGVtdXhfc2luazsKKysgICAgICBkZW11eF9zaW5rID0gZ3N0X2VsZW1lbnRfZ2V0X3N0
YXRpY19wYWQgKHNlc3Npb24tPmJ1bmRsZV9kZW11eCwgInNpbmsiKTsKKysgICAgICByZXQgPSBn
c3RfcGFkX2xpbmsgKGRlY3NyYywgZGVtdXhfc2luayk7CisrICAgICAgZ3N0X29iamVjdF91bnJl
ZiAoZGVtdXhfc2luayk7CisrICAgIH0gZWxzZSB7CisrICAgICAgcmV0ID0gZ3N0X3BhZF9saW5r
IChkZWNzcmMsIHNlc3Npb24tPnJlY3ZfcnRwX3NpbmspOworKyAgICB9CisgICAgIGdzdF9vYmpl
Y3RfdW5yZWYgKGRlY3NyYyk7CisgCisgICAgIGlmIChyZXQgIT0gR1NUX1BBRF9MSU5LX09LKQor
QEAgLTMyOTAsODEgKzM0NzEsNTQgQEAgY29tcGxldGVfc2Vzc2lvbl9zaW5rIChHc3RSdHBCaW4g
KiBydHBiaW4sIEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9uKQorIAorICAgfSBlbHNlIHsKKyAg
ICAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAibm8gUlRQIGRlY29kZXIgZ2l2ZW4iKTsKKy0g
ICAgcmVjdl9ydHBfc2luayA9IGdzdF9vYmplY3RfcmVmIChzZXNzaW9uLT5yZWN2X3J0cF9zaW5r
KTsKKysgICAgaWYgKHNlc3Npb24tPmJ1bmRsZV9kZW11eCkgeworKyAgICAgIHJlY3ZfcnRwX3Np
bmsgPQorKyAgICAgICAgICBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAoc2Vzc2lvbi0+YnVu
ZGxlX2RlbXV4LCAic2luayIpOworKyAgICB9IGVsc2UgeworKyAgICAgIHJlY3ZfcnRwX3Npbmsg
PQorKyAgICAgICAgICBnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQgKHNlc3Npb24tPnJ0cF9m
dW5uZWwsICJzaW5rXyV1Iik7CisrICAgIH0KKyAgIH0KKyAKKy0gIEdTVF9ERUJVR19PQkpFQ1Qg
KHJ0cGJpbiwgImdob3N0aW5nIHNlc3Npb24gc2luayBwYWQiKTsKKy0gIGtsYXNzID0gR1NUX0VM
RU1FTlRfR0VUX0NMQVNTIChydHBiaW4pOworLSAgZ25hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJy
ZWN2X3J0cF9zaW5rXyV1Iiwgc2Vzc2lkKTsKKy0gIHRlbXBsID0gZ3N0X2VsZW1lbnRfY2xhc3Nf
Z2V0X3BhZF90ZW1wbGF0ZSAoa2xhc3MsICJyZWN2X3J0cF9zaW5rXyV1Iik7CistICBzZXNzaW9u
LT5yZWN2X3J0cF9zaW5rX2dob3N0ID0KKy0gICAgICBnc3RfZ2hvc3RfcGFkX25ld19mcm9tX3Rl
bXBsYXRlIChnbmFtZSwgcmVjdl9ydHBfc2luaywgdGVtcGwpOworLSAgZ3N0X29iamVjdF91bnJl
ZiAocmVjdl9ydHBfc2luayk7CistICBnc3RfcGFkX3NldF9hY3RpdmUgKHNlc3Npb24tPnJlY3Zf
cnRwX3NpbmtfZ2hvc3QsIFRSVUUpOworLSAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1F
TlRfQ0FTVCAocnRwYmluKSwgc2Vzc2lvbi0+cmVjdl9ydHBfc2lua19naG9zdCk7CistICBnX2Zy
ZWUgKGduYW1lKTsKKysgIGZ1bm5lbF9zcmMgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAo
c2Vzc2lvbi0+cnRwX2Z1bm5lbCwgInNyYyIpOworKyAgZ3N0X3BhZF9saW5rIChmdW5uZWxfc3Jj
LCBzZXNzaW9uLT5yZWN2X3J0cF9zaW5rKTsKKysgIGdzdF9vYmplY3RfdW5yZWYgKGZ1bm5lbF9z
cmMpOworIAorLSAgcmV0dXJuIFRSVUU7CisrICByZXR1cm4gcmVjdl9ydHBfc2luazsKKyAKKyAg
IC8qIEVSUk9SUyAqLworIHBhZF9mYWlsZWQ6CisgICB7CisgICAgIGdfd2FybmluZyAoInJ0cGJp
bjogZmFpbGVkIHRvIGdldCBzZXNzaW9uIHJlY3ZfcnRwX3NpbmsgcGFkIik7CistICAgIHJldHVy
biBGQUxTRTsKKysgICAgcmV0dXJuIE5VTEw7CisgICB9CisgZGVjX3NpbmtfZmFpbGVkOgorICAg
eworLSAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgZGVjb2RlciBzaW5rIHBh
ZCBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7CistICAgIHJldHVybiBGQUxTRTsKKysgICAgZ193
YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IGRlY29kZXIgc2luayBwYWQgZm9yIHNlc3Np
b24gJXUiLCBzZXNzaWQpOworKyAgICByZXR1cm4gTlVMTDsKKyAgIH0KKyBkZWNfc3JjX2ZhaWxl
ZDoKKyAgIHsKKy0gICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IGRlY29kZXIg
c3JjIHBhZCBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7CisrICAgIGdfd2FybmluZyAoInJ0cGJp
bjogZmFpbGVkIHRvIGdldCBkZWNvZGVyIHNyYyBwYWQgZm9yIHNlc3Npb24gJXUiLCBzZXNzaWQp
OworICAgICBnc3Rfb2JqZWN0X3VucmVmIChyZWN2X3J0cF9zaW5rKTsKKy0gICAgcmV0dXJuIEZB
TFNFOworKyAgICByZXR1cm4gTlVMTDsKKyAgIH0KKyBkZWNfbGlua19mYWlsZWQ6CisgICB7Cist
ICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGxpbmsgcnRwIGRlY29kZXIgZm9yIHNl
c3Npb24gJWQiLCBzZXNzaWQpOworKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBs
aW5rIHJ0cCBkZWNvZGVyIGZvciBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKKyAgICAgZ3N0X29iamVj
dF91bnJlZiAocmVjdl9ydHBfc2luayk7CistICAgIHJldHVybiBGQUxTRTsKKysgICAgcmV0dXJu
IE5VTEw7CisgICB9CisgfQorIAorLS8qIENyZWF0ZSBhIHBhZCBmb3IgcmVjZWl2aW5nIFJUUCBm
b3IgdGhlIHNlc3Npb24gaW4gQG5hbWUuIE11c3QgYmUgY2FsbGVkIHdpdGgKKy0gKiBSVFBfQklO
X0xPQ0suCistICovCistc3RhdGljIEdzdFBhZCAqCistY3JlYXRlX3JlY3ZfcnRwIChHc3RSdHBC
aW4gKiBydHBiaW4sIEdzdFBhZFRlbXBsYXRlICogdGVtcGwsIGNvbnN0IGdjaGFyICogbmFtZSkK
KytzdGF0aWMgdm9pZAorK2NvbXBsZXRlX3Nlc3Npb25fcmVjZWl2ZXIgKEdzdFJ0cEJpbiAqIHJ0
cGJpbiwgR3N0UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24sCisrICAgIGd1aW50IHNlc3NpZCkKKyB7
CistICBndWludCBzZXNzaWQ7CisgICBHc3RFbGVtZW50ICphdXg7CisgICBHc3RQYWQgKnJlY3Zf
cnRwX3NyYzsKKy0gIEdzdFJ0cEJpblNlc3Npb24gKnNlc3Npb247CistCistICAvKiBmaXJzdCBn
ZXQgdGhlIHNlc3Npb24gbnVtYmVyICovCistICBpZiAobmFtZSA9PSBOVUxMIHx8IHNzY2FuZiAo
bmFtZSwgInJlY3ZfcnRwX3NpbmtfJXUiLCAmc2Vzc2lkKSAhPSAxKQorLSAgICBnb3RvIG5vX25h
bWU7CistCistICBHU1RfREVCVUdfT0JKRUNUIChydHBiaW4sICJmaW5kaW5nIHNlc3Npb24gJWQi
LCBzZXNzaWQpOworIAorLSAgLyogZ2V0IG9yIGNyZWF0ZSBzZXNzaW9uICovCistICBzZXNzaW9u
ID0gZmluZF9zZXNzaW9uX2J5X2lkIChydHBiaW4sIHNlc3NpZCk7CistICBpZiAoIXNlc3Npb24p
IHsKKy0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAiY3JlYXRpbmcgc2Vzc2lvbiAlZCIs
IHNlc3NpZCk7CistICAgIC8qIGNyZWF0ZSBzZXNzaW9uIG5vdyAqLworLSAgICBzZXNzaW9uID0g
Y3JlYXRlX3Nlc3Npb24gKHJ0cGJpbiwgc2Vzc2lkKTsKKy0gICAgaWYgKHNlc3Npb24gPT0gTlVM
TCkKKy0gICAgICBnb3RvIGNyZWF0ZV9lcnJvcjsKKy0gIH0KKy0KKy0gIC8qIGNoZWNrIGlmIHBh
ZCB3YXMgcmVxdWVzdGVkICovCistICBpZiAoc2Vzc2lvbi0+cmVjdl9ydHBfc2lua19naG9zdCAh
PSBOVUxMKQorLSAgICByZXR1cm4gc2Vzc2lvbi0+cmVjdl9ydHBfc2lua19naG9zdDsKKy0KKy0g
IC8qIHNldHVwIHRoZSBzZXNzaW9uIHNpbmsgcGFkICovCistICBpZiAoIWNvbXBsZXRlX3Nlc3Np
b25fc2luayAocnRwYmluLCBzZXNzaW9uKSkKKy0gICAgZ290byBzZXNzaW9uX3NpbmtfZmFpbGVk
OworKyAgZ19hc3NlcnQgKCFzZXNzaW9uLT5yZWN2X3J0cF9zcmMpOworIAorICAgc2Vzc2lvbi0+
cmVjdl9ydHBfc3JjID0KKyAgICAgICBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAoc2Vzc2lv
bi0+c2Vzc2lvbiwgInJlY3ZfcnRwX3NyYyIpOworQEAgLTMzODEsNyArMzUzNSw3IEBAIGNyZWF0
ZV9yZWN2X3J0cCAoR3N0UnRwQmluICogcnRwYmluLCBHc3RQYWRUZW1wbGF0ZSAqIHRlbXBsLCBj
b25zdCBnY2hhciAqIG5hbWUpCisgCisgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGJpbiwgImxp
bmtpbmcgQVVYIHJlY2VpdmVyIik7CisgCistICAgIHBuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgi
c2lua18lZCIsIHNlc3NpZCk7CisrICAgIHBuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgic2lua18l
dSIsIHNlc3NpZCk7CisgICAgIGF1eHNpbmsgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAo
YXV4LCBwbmFtZSk7CisgICAgIGdfZnJlZSAocG5hbWUpOworICAgICBpZiAoYXV4c2luayA9PSBO
VUxMKQorQEAgLTMzOTQsNyArMzU0OCw3IEBAIGNyZWF0ZV9yZWN2X3J0cCAoR3N0UnRwQmluICog
cnRwYmluLCBHc3RQYWRUZW1wbGF0ZSAqIHRlbXBsLCBjb25zdCBnY2hhciAqIG5hbWUpCisgCisg
ICAgIC8qIHRoaXMgY2FuIGJlIE5VTEwgd2hlbiB0aGlzIEFVWCBlbGVtZW50IGlzIG5vdCB0byBi
ZSBsaW5rZWQgdG8KKyAgICAgICogYW4gU1NSQyBkZW11eGVyICovCistICAgIHBuYW1lID0gZ19z
dHJkdXBfcHJpbnRmICgic3JjXyVkIiwgc2Vzc2lkKTsKKysgICAgcG5hbWUgPSBnX3N0cmR1cF9w
cmludGYgKCJzcmNfJXUiLCBzZXNzaWQpOworICAgICByZWN2X3J0cF9zcmMgPSBnc3RfZWxlbWVu
dF9nZXRfc3RhdGljX3BhZCAoYXV4LCBwbmFtZSk7CisgICAgIGdfZnJlZSAocG5hbWUpOworICAg
fSBlbHNlIHsKK0BAIC0zNDA4LDggKzM1NjIsOCBAQCBjcmVhdGVfcmVjdl9ydHAgKEdzdFJ0cEJp
biAqIHJ0cGJpbiwgR3N0UGFkVGVtcGxhdGUgKiB0ZW1wbCwgY29uc3QgZ2NoYXIgKiBuYW1lKQor
ICAgICBzaW5rZHBhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChzZXNzaW9uLT5kZW11
eCwgInNpbmsiKTsKKyAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAibGlua2luZyBkZW11
eGVyIFJUUCBzaW5rIHBhZCIpOworICAgICBnc3RfcGFkX2xpbmtfZnVsbCAocmVjdl9ydHBfc3Jj
LCBzaW5rZHBhZCwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOworLSAgICBnc3Rfb2JqZWN0
X3VucmVmIChyZWN2X3J0cF9zcmMpOworICAgICBnc3Rfb2JqZWN0X3VucmVmIChzaW5rZHBhZCk7
CisrICAgIGdzdF9vYmplY3RfdW5yZWYgKHJlY3ZfcnRwX3NyYyk7CisgCisgICAgIC8qIGNvbm5l
Y3QgdG8gdGhlIG5ldy1zc3JjLXBhZCBzaWduYWwgb2YgdGhlIFNTUkMgZGVtdXhlciAqLworICAg
ICBzZXNzaW9uLT5kZW11eF9uZXdwYWRfc2lnID0gZ19zaWduYWxfY29ubmVjdCAoc2Vzc2lvbi0+
ZGVtdXgsCitAQCAtMzQxNyw2ICszNTcxLDcxIEBAIGNyZWF0ZV9yZWN2X3J0cCAoR3N0UnRwQmlu
ICogcnRwYmluLCBHc3RQYWRUZW1wbGF0ZSAqIHRlbXBsLCBjb25zdCBnY2hhciAqIG5hbWUpCisg
ICAgIHNlc3Npb24tPmRlbXV4X3BhZHJlbW92ZWRfc2lnID0gZ19zaWduYWxfY29ubmVjdCAoc2Vz
c2lvbi0+ZGVtdXgsCisgICAgICAgICAicmVtb3ZlZC1zc3JjLXBhZCIsIChHQ2FsbGJhY2spIHNz
cmNfZGVtdXhfcGFkX3JlbW92ZWQsIHNlc3Npb24pOworICAgfQorKworKyAgcmV0dXJuOworKwor
K3BhZF9mYWlsZWQ6CisrICB7CisrICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdl
dCBzZXNzaW9uIHJlY3ZfcnRwX3NyYyBwYWQiKTsKKysgICAgcmV0dXJuOworKyAgfQorK2F1eF9z
aW5rX2ZhaWxlZDoKKysgIHsKKysgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0
IEFVWCBzaW5rIHBhZCBmb3Igc2Vzc2lvbiAldSIsIHNlc3NpZCk7CisrICAgIHJldHVybjsKKysg
IH0KKythdXhfbGlua19mYWlsZWQ6CisrICB7CisrICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFp
bGVkIHRvIGxpbmsgQVVYIHBhZCB0byBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKKysgICAgcmV0dXJu
OworKyAgfQorK30KKysKKysvKiBDcmVhdGUgYSBwYWQgZm9yIHJlY2VpdmluZyBSVFAgZm9yIHRo
ZSBzZXNzaW9uIGluIEBuYW1lLiBNdXN0IGJlIGNhbGxlZCB3aXRoCisrICogUlRQX0JJTl9MT0NL
LgorKyAqLworK3N0YXRpYyBHc3RQYWQgKgorK2NyZWF0ZV9yZWN2X3J0cCAoR3N0UnRwQmluICog
cnRwYmluLCBHc3RQYWRUZW1wbGF0ZSAqIHRlbXBsLCBjb25zdCBnY2hhciAqIG5hbWUpCisrewor
KyAgZ3VpbnQgc2Vzc2lkOworKyAgR3N0UnRwQmluU2Vzc2lvbiAqc2Vzc2lvbjsKKysgIEdzdFBh
ZCAqcmVjdl9ydHBfc2luazsKKysKKysgIC8qIGZpcnN0IGdldCB0aGUgc2Vzc2lvbiBudW1iZXIg
Ki8KKysgIGlmIChuYW1lID09IE5VTEwgfHwgc3NjYW5mIChuYW1lLCAicmVjdl9ydHBfc2lua18l
dSIsICZzZXNzaWQpICE9IDEpCisrICAgIGdvdG8gbm9fbmFtZTsKKysKKysgIEdTVF9ERUJVR19P
QkpFQ1QgKHJ0cGJpbiwgImZpbmRpbmcgc2Vzc2lvbiAldSIsIHNlc3NpZCk7CisrCisrICAvKiBn
ZXQgb3IgY3JlYXRlIHNlc3Npb24gKi8KKysgIHNlc3Npb24gPSBmaW5kX3Nlc3Npb25fYnlfaWQg
KHJ0cGJpbiwgc2Vzc2lkKTsKKysgIGlmICghc2Vzc2lvbikgeworKyAgICBHU1RfREVCVUdfT0JK
RUNUIChydHBiaW4sICJjcmVhdGluZyBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKKysgICAgLyogY3Jl
YXRlIHNlc3Npb24gbm93ICovCisrICAgIHNlc3Npb24gPSBjcmVhdGVfc2Vzc2lvbiAocnRwYmlu
LCBzZXNzaWQpOworKyAgICBpZiAoc2Vzc2lvbiA9PSBOVUxMKQorKyAgICAgIGdvdG8gY3JlYXRl
X2Vycm9yOworKyAgfQorKworKyAgLyogY2hlY2sgaWYgcGFkIHdhcyByZXF1ZXN0ZWQgKi8KKysg
IGlmIChzZXNzaW9uLT5yZWN2X3J0cF9zaW5rX2dob3N0ICE9IE5VTEwpCisrICAgIHJldHVybiBz
ZXNzaW9uLT5yZWN2X3J0cF9zaW5rX2dob3N0OworKworKyAgLyogc2V0dXAgdGhlIHNlc3Npb24g
c2luayBwYWQgKi8KKysgIHJlY3ZfcnRwX3NpbmsgPSBjb21wbGV0ZV9zZXNzaW9uX3NpbmsgKHJ0
cGJpbiwgc2Vzc2lvbiwgVFJVRSk7CisrICBpZiAoIXJlY3ZfcnRwX3NpbmspCisrICAgIGdvdG8g
c2Vzc2lvbl9zaW5rX2ZhaWxlZDsKKysKKysKKysgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGJpbiwg
Imdob3N0aW5nIHNlc3Npb24gc2luayBwYWQiKTsKKysgIHNlc3Npb24tPnJlY3ZfcnRwX3Npbmtf
Z2hvc3QgPQorKyAgICAgIGdzdF9naG9zdF9wYWRfbmV3X2Zyb21fdGVtcGxhdGUgKG5hbWUsIHJl
Y3ZfcnRwX3NpbmssIHRlbXBsKTsKKysgIGdzdF9vYmplY3RfdW5yZWYgKHJlY3ZfcnRwX3Npbmsp
OworKyAgZ3N0X3BhZF9zZXRfYWN0aXZlIChzZXNzaW9uLT5yZWN2X3J0cF9zaW5rX2dob3N0LCBU
UlVFKTsKKysgIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UX0NBU1QgKHJ0cGJpbiks
IHNlc3Npb24tPnJlY3ZfcnRwX3NpbmtfZ2hvc3QpOworKworKyAgY29tcGxldGVfc2Vzc2lvbl9y
ZWNlaXZlciAocnRwYmluLCBzZXNzaW9uLCBzZXNzaWQpOworKworICAgcmV0dXJuIHNlc3Npb24t
PnJlY3ZfcnRwX3NpbmtfZ2hvc3Q7CisgCisgICAvKiBFUlJPUlMgKi8KK0BAIC0zNDM1LDIxICsz
NjU0LDYgQEAgc2Vzc2lvbl9zaW5rX2ZhaWxlZDoKKyAgICAgLyogd2FybmluZyBhbHJlYWR5IGRv
bmUgKi8KKyAgICAgcmV0dXJuIE5VTEw7CisgICB9CistcGFkX2ZhaWxlZDoKKy0gIHsKKy0gICAg
Z193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IHNlc3Npb24gcmVjdl9ydHBfc3JjIHBh
ZCIpOworLSAgICByZXR1cm4gTlVMTDsKKy0gIH0KKy1hdXhfc2lua19mYWlsZWQ6CistICB7Cist
ICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBBVVggc2luayBwYWQgZm9yIHNl
c3Npb24gJWQiLCBzZXNzaWQpOworLSAgICByZXR1cm4gTlVMTDsKKy0gIH0KKy1hdXhfbGlua19m
YWlsZWQ6CistICB7CistICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGxpbmsgQVVY
IHBhZCB0byBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKKy0gICAgcmV0dXJuIE5VTEw7CistICB9Cisg
fQorIAorIHN0YXRpYyB2b2lkCitAQCAtMzQ2Myw2ICszNjY3LDExIEBAIHJlbW92ZV9yZWN2X3J0
cCAoR3N0UnRwQmluICogcnRwYmluLCBHc3RSdHBCaW5TZXNzaW9uICogc2Vzc2lvbikKKyAgICAg
Z19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0IChzZXNzaW9uLT5kZW11eCwgc2Vzc2lvbi0+ZGVt
dXhfcGFkcmVtb3ZlZF9zaWcpOworICAgICBzZXNzaW9uLT5kZW11eF9wYWRyZW1vdmVkX3NpZyA9
IDA7CisgICB9CisrICBpZiAoc2Vzc2lvbi0+YnVuZGxlX2RlbXV4X25ld3BhZF9zaWcpIHsKKysg
ICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0IChzZXNzaW9uLT5idW5kbGVfZGVtdXgsCisr
ICAgICAgICBzZXNzaW9uLT5idW5kbGVfZGVtdXhfbmV3cGFkX3NpZyk7CisrICAgIHNlc3Npb24t
PmJ1bmRsZV9kZW11eF9uZXdwYWRfc2lnID0gMDsKKysgIH0KKyAgIGlmIChzZXNzaW9uLT5yZWN2
X3J0cF9zcmMpIHsKKyAgICAgZ3N0X29iamVjdF91bnJlZiAoc2Vzc2lvbi0+cmVjdl9ydHBfc3Jj
KTsKKyAgICAgc2Vzc2lvbi0+cmVjdl9ydHBfc3JjID0gTlVMTDsKK0BAIC0zNDgwLDM3ICszNjg5
LDE0IEBAIHJlbW92ZV9yZWN2X3J0cCAoR3N0UnRwQmluICogcnRwYmluLCBHc3RSdHBCaW5TZXNz
aW9uICogc2Vzc2lvbikKKyAgIH0KKyB9CisgCistLyogQ3JlYXRlIGEgcGFkIGZvciByZWNlaXZp
bmcgUlRDUCBmb3IgdGhlIHNlc3Npb24gaW4gQG5hbWUuIE11c3QgYmUgY2FsbGVkIHdpdGgKKy0g
KiBSVFBfQklOX0xPQ0suCistICovCisgc3RhdGljIEdzdFBhZCAqCistY3JlYXRlX3JlY3ZfcnRj
cCAoR3N0UnRwQmluICogcnRwYmluLCBHc3RQYWRUZW1wbGF0ZSAqIHRlbXBsLAorLSAgICBjb25z
dCBnY2hhciAqIG5hbWUpCisrY29tcGxldGVfc2Vzc2lvbl9ydGNwIChHc3RSdHBCaW4gKiBydHBi
aW4sIEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9uLAorKyAgICBndWludCBzZXNzaWQsIGdib29s
ZWFuIGJ1bmRsZV9kZW11eGVyX25lZWRlZCkKKyB7CistICBndWludCBzZXNzaWQ7CisgICBHc3RF
bGVtZW50ICpkZWNvZGVyOworLSAgR3N0UnRwQmluU2Vzc2lvbiAqc2Vzc2lvbjsKKy0gIEdzdFBh
ZCAqc2lua2RwYWQsICpkZWNzaW5rOworLQorLSAgLyogZmlyc3QgZ2V0IHRoZSBzZXNzaW9uIG51
bWJlciAqLworLSAgaWYgKG5hbWUgPT0gTlVMTCB8fCBzc2NhbmYgKG5hbWUsICJyZWN2X3J0Y3Bf
c2lua18ldSIsICZzZXNzaWQpICE9IDEpCistICAgIGdvdG8gbm9fbmFtZTsKKy0KKy0gIEdTVF9E
RUJVR19PQkpFQ1QgKHJ0cGJpbiwgImZpbmRpbmcgc2Vzc2lvbiAlZCIsIHNlc3NpZCk7CistCist
ICAvKiBnZXQgb3IgY3JlYXRlIHRoZSBzZXNzaW9uICovCistICBzZXNzaW9uID0gZmluZF9zZXNz
aW9uX2J5X2lkIChydHBiaW4sIHNlc3NpZCk7CistICBpZiAoIXNlc3Npb24pIHsKKy0gICAgR1NU
X0RFQlVHX09CSkVDVCAocnRwYmluLCAiY3JlYXRpbmcgc2Vzc2lvbiAlZCIsIHNlc3NpZCk7Cist
ICAgIC8qIGNyZWF0ZSBzZXNzaW9uIG5vdyAqLworLSAgICBzZXNzaW9uID0gY3JlYXRlX3Nlc3Np
b24gKHJ0cGJpbiwgc2Vzc2lkKTsKKy0gICAgaWYgKHNlc3Npb24gPT0gTlVMTCkKKy0gICAgICBn
b3RvIGNyZWF0ZV9lcnJvcjsKKy0gIH0KKy0KKy0gIC8qIGNoZWNrIGlmIHBhZCB3YXMgcmVxdWVz
dGVkICovCistICBpZiAoc2Vzc2lvbi0+cmVjdl9ydGNwX3NpbmtfZ2hvc3QgIT0gTlVMTCkKKy0g
ICAgcmV0dXJuIHNlc3Npb24tPnJlY3ZfcnRjcF9zaW5rX2dob3N0OworKyAgR3N0UGFkICpzaW5r
ZHBhZDsKKysgIEdzdFBhZCAqZGVjc2luayA9IE5VTEw7CisrICBHc3RQYWQgKmZ1bm5lbF9zcmM7
CisgCisgICAvKiBnZXQgcmVjdl9ydHAgcGFkIGFuZCBzdG9yZSAqLworICAgR1NUX0RFQlVHX09C
SkVDVCAocnRwYmluLCAiZ2V0dGluZyBSVENQIHNpbmsgcGFkIik7CitAQCAtMzUxOSw2ICszNzA1
LDkgQEAgY3JlYXRlX3JlY3ZfcnRjcCAoR3N0UnRwQmluICogcnRwYmluLCBHc3RQYWRUZW1wbGF0
ZSAqIHRlbXBsLAorICAgaWYgKHNlc3Npb24tPnJlY3ZfcnRjcF9zaW5rID09IE5VTEwpCisgICAg
IGdvdG8gcGFkX2ZhaWxlZDsKKyAKKysgIGlmIChidW5kbGVfZGVtdXhlcl9uZWVkZWQpCisrICAg
IHNlc3Npb25fbWF5YmVfY3JlYXRlX2J1bmRsZV9kZW11eGVyIChzZXNzaW9uKTsKKysKKyAgIEdT
VF9ERUJVR19PQkpFQ1QgKHJ0cGJpbiwgImdldHRpbmcgUlRDUCBkZWNvZGVyIik7CisgICBkZWNv
ZGVyID0gc2Vzc2lvbl9yZXF1ZXN0X2VsZW1lbnQgKHNlc3Npb24sIFNJR05BTF9SRVFVRVNUX1JU
Q1BfREVDT0RFUik7CisgICBpZiAoZGVjb2RlcikgeworQEAgLTM1MzUsMTQgKzM3MjQsMjYgQEAg
Y3JlYXRlX3JlY3ZfcnRjcCAoR3N0UnRwQmluICogcnRwYmluLCBHc3RQYWRUZW1wbGF0ZSAqIHRl
bXBsLAorICAgICBpZiAoZGVjc3JjID09IE5VTEwpCisgICAgICAgZ290byBkZWNfc3JjX2ZhaWxl
ZDsKKyAKKy0gICAgcmV0ID0gZ3N0X3BhZF9saW5rIChkZWNzcmMsIHNlc3Npb24tPnJlY3ZfcnRj
cF9zaW5rKTsKKysgICAgaWYgKHNlc3Npb24tPmJ1bmRsZV9kZW11eCkgeworKyAgICAgIEdzdFBh
ZCAqZGVtdXhfc2luazsKKysgICAgICBkZW11eF9zaW5rID0KKysgICAgICAgICAgZ3N0X2VsZW1l
bnRfZ2V0X3N0YXRpY19wYWQgKHNlc3Npb24tPmJ1bmRsZV9kZW11eCwgInJ0Y3Bfc2luayIpOwor
KyAgICAgIHJldCA9IGdzdF9wYWRfbGluayAoZGVjc3JjLCBkZW11eF9zaW5rKTsKKysgICAgICBn
c3Rfb2JqZWN0X3VucmVmIChkZW11eF9zaW5rKTsKKysgICAgfSBlbHNlIHsKKysgICAgICByZXQg
PSBnc3RfcGFkX2xpbmsgKGRlY3NyYywgc2Vzc2lvbi0+cmVjdl9ydGNwX3NpbmspOworKyAgICB9
CisgICAgIGdzdF9vYmplY3RfdW5yZWYgKGRlY3NyYyk7CisgCisgICAgIGlmIChyZXQgIT0gR1NU
X1BBRF9MSU5LX09LKQorICAgICAgIGdvdG8gZGVjX2xpbmtfZmFpbGVkOworICAgfSBlbHNlIHsK
KyAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAibm8gUlRDUCBkZWNvZGVyIGdpdmVuIik7
CistICAgIGRlY3NpbmsgPSBnc3Rfb2JqZWN0X3JlZiAoc2Vzc2lvbi0+cmVjdl9ydGNwX3Npbmsp
OworKyAgICBpZiAoc2Vzc2lvbi0+YnVuZGxlX2RlbXV4KSB7CisrICAgICAgZGVjc2luayA9IGdz
dF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChzZXNzaW9uLT5idW5kbGVfZGVtdXgsICJydGNwX3Np
bmsiKTsKKysgICAgfSBlbHNlIHsKKysgICAgICBkZWNzaW5rID0gZ3N0X2VsZW1lbnRfZ2V0X3Jl
cXVlc3RfcGFkIChzZXNzaW9uLT5ydGNwX2Z1bm5lbCwgInNpbmtfJXUiKTsKKysgICAgfQorICAg
fQorIAorICAgLyogZ2V0IHNyY3BhZCwgbGluayB0byBTU1JDRGVtdXggKi8KK0BAIC0zNTU2LDI2
ICszNzU3LDEyIEBAIGNyZWF0ZV9yZWN2X3J0Y3AgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0UGFk
VGVtcGxhdGUgKiB0ZW1wbCwKKyAgIGdzdF9wYWRfbGlua19mdWxsIChzZXNzaW9uLT5zeW5jX3Ny
Yywgc2lua2RwYWQsIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKKyAgIGdzdF9vYmplY3Rf
dW5yZWYgKHNpbmtkcGFkKTsKKyAKKy0gIHNlc3Npb24tPnJlY3ZfcnRjcF9zaW5rX2dob3N0ID0K
Ky0gICAgICBnc3RfZ2hvc3RfcGFkX25ld19mcm9tX3RlbXBsYXRlIChuYW1lLCBkZWNzaW5rLCB0
ZW1wbCk7CistICBnc3Rfb2JqZWN0X3VucmVmIChkZWNzaW5rKTsKKy0gIGdzdF9wYWRfc2V0X2Fj
dGl2ZSAoc2Vzc2lvbi0+cmVjdl9ydGNwX3NpbmtfZ2hvc3QsIFRSVUUpOworLSAgZ3N0X2VsZW1l
bnRfYWRkX3BhZCAoR1NUX0VMRU1FTlRfQ0FTVCAocnRwYmluKSwKKy0gICAgICBzZXNzaW9uLT5y
ZWN2X3J0Y3Bfc2lua19naG9zdCk7CisrICBmdW5uZWxfc3JjID0gZ3N0X2VsZW1lbnRfZ2V0X3N0
YXRpY19wYWQgKHNlc3Npb24tPnJ0Y3BfZnVubmVsLCAic3JjIik7CisrICBnc3RfcGFkX2xpbmsg
KGZ1bm5lbF9zcmMsIHNlc3Npb24tPnJlY3ZfcnRjcF9zaW5rKTsKKysgIGdzdF9vYmplY3RfdW5y
ZWYgKGZ1bm5lbF9zcmMpOworIAorLSAgcmV0dXJuIHNlc3Npb24tPnJlY3ZfcnRjcF9zaW5rX2do
b3N0OworKyAgcmV0dXJuIGRlY3Npbms7CisgCistICAvKiBFUlJPUlMgKi8KKy1ub19uYW1lOgor
LSAgeworLSAgICBnX3dhcm5pbmcgKCJydHBiaW46IGludmFsaWQgbmFtZSBnaXZlbiIpOworLSAg
ICByZXR1cm4gTlVMTDsKKy0gIH0KKy1jcmVhdGVfZXJyb3I6CistICB7CistICAgIC8qIGNyZWF0
ZV9zZXNzaW9uIGFscmVhZHkgd2FybmVkICovCistICAgIHJldHVybiBOVUxMOworLSAgfQorIHBh
ZF9mYWlsZWQ6CisgICB7CisgICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBz
ZXNzaW9uIHJ0Y3Bfc2luayBwYWQiKTsKK0BAIC0zNTgzLDI1ICszNzcwLDgyIEBAIHBhZF9mYWls
ZWQ6CisgICB9CisgZGVjX3NpbmtfZmFpbGVkOgorICAgeworLSAgICBnX3dhcm5pbmcgKCJydHBi
aW46IGZhaWxlZCB0byBnZXQgZGVjb2RlciBzaW5rIHBhZCBmb3Igc2Vzc2lvbiAlZCIsIHNlc3Np
ZCk7CisrICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBkZWNvZGVyIHNpbmsg
cGFkIGZvciBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKKyAgICAgcmV0dXJuIE5VTEw7CisgICB9Cisg
ZGVjX3NyY19mYWlsZWQ6CisgICB7CistICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRv
IGdldCBkZWNvZGVyIHNyYyBwYWQgZm9yIHNlc3Npb24gJWQiLCBzZXNzaWQpOworLSAgICBnc3Rf
b2JqZWN0X3VucmVmIChkZWNzaW5rKTsKKy0gICAgcmV0dXJuIE5VTEw7CisrICAgIGdfd2Fybmlu
ZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBkZWNvZGVyIHNyYyBwYWQgZm9yIHNlc3Npb24gJXUi
LCBzZXNzaWQpOworKyAgICBnb3RvIGNsZWFudXA7CisgICB9CisgZGVjX2xpbmtfZmFpbGVkOgor
ICAgeworLSAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBsaW5rIHJ0Y3AgZGVjb2Rl
ciBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7CistICAgIGdzdF9vYmplY3RfdW5yZWYgKGRlY3Np
bmspOworLSAgICByZXR1cm4gTlVMTDsKKysgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQg
dG8gbGluayBydGNwIGRlY29kZXIgZm9yIHNlc3Npb24gJXUiLCBzZXNzaWQpOworKyAgICBnb3Rv
IGNsZWFudXA7CisgICB9Cisgc3JjX3BhZF9mYWlsZWQ6CisgICB7CisgICAgIGdfd2FybmluZyAo
InJ0cGJpbjogZmFpbGVkIHRvIGdldCBzZXNzaW9uIHN5bmNfc3JjIHBhZCIpOworLSAgICBnc3Rf
b2JqZWN0X3VucmVmIChkZWNzaW5rKTsKKysgIH0KKysKKytjbGVhbnVwOgorKyAgZ3N0X29iamVj
dF91bnJlZiAoZGVjc2luayk7CisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrLyogQ3JlYXRlIGEg
cGFkIGZvciByZWNlaXZpbmcgUlRDUCBmb3IgdGhlIHNlc3Npb24gaW4gQG5hbWUuIE11c3QgYmUg
Y2FsbGVkIHdpdGgKKysgKiBSVFBfQklOX0xPQ0suCisrICovCisrc3RhdGljIEdzdFBhZCAqCisr
Y3JlYXRlX3JlY3ZfcnRjcCAoR3N0UnRwQmluICogcnRwYmluLCBHc3RQYWRUZW1wbGF0ZSAqIHRl
bXBsLAorKyAgICBjb25zdCBnY2hhciAqIG5hbWUpCisreworKyAgZ3VpbnQgc2Vzc2lkOworKyAg
R3N0UnRwQmluU2Vzc2lvbiAqc2Vzc2lvbjsKKysgIEdzdFBhZCAqZGVjc2luayA9IE5VTEw7Cisr
CisrICAvKiBmaXJzdCBnZXQgdGhlIHNlc3Npb24gbnVtYmVyICovCisrICBpZiAobmFtZSA9PSBO
VUxMIHx8IHNzY2FuZiAobmFtZSwgInJlY3ZfcnRjcF9zaW5rXyV1IiwgJnNlc3NpZCkgIT0gMSkK
KysgICAgZ290byBub19uYW1lOworKworKyAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAiZmlu
ZGluZyBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKKysKKysgIC8qIGdldCBvciBjcmVhdGUgdGhlIHNl
c3Npb24gKi8KKysgIHNlc3Npb24gPSBmaW5kX3Nlc3Npb25fYnlfaWQgKHJ0cGJpbiwgc2Vzc2lk
KTsKKysgIGlmICghc2Vzc2lvbikgeworKyAgICBHU1RfREVCVUdfT0JKRUNUIChydHBiaW4sICJj
cmVhdGluZyBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKKysgICAgLyogY3JlYXRlIHNlc3Npb24gbm93
ICovCisrICAgIHNlc3Npb24gPSBjcmVhdGVfc2Vzc2lvbiAocnRwYmluLCBzZXNzaWQpOworKyAg
ICBpZiAoc2Vzc2lvbiA9PSBOVUxMKQorKyAgICAgIGdvdG8gY3JlYXRlX2Vycm9yOworKyAgfQor
KworKyAgLyogY2hlY2sgaWYgcGFkIHdhcyByZXF1ZXN0ZWQgKi8KKysgIGlmIChzZXNzaW9uLT5y
ZWN2X3J0Y3Bfc2lua19naG9zdCAhPSBOVUxMKQorKyAgICByZXR1cm4gc2Vzc2lvbi0+cmVjdl9y
dGNwX3NpbmtfZ2hvc3Q7CisrCisrICBkZWNzaW5rID0gY29tcGxldGVfc2Vzc2lvbl9ydGNwIChy
dHBiaW4sIHNlc3Npb24sIHNlc3NpZCwgVFJVRSk7CisrICBpZiAoIWRlY3NpbmspCisrICAgIGdv
dG8gY3JlYXRlX2Vycm9yOworKworKyAgc2Vzc2lvbi0+cmVjdl9ydGNwX3NpbmtfZ2hvc3QgPQor
KyAgICAgIGdzdF9naG9zdF9wYWRfbmV3X2Zyb21fdGVtcGxhdGUgKG5hbWUsIGRlY3NpbmssIHRl
bXBsKTsKKysgIGdzdF9vYmplY3RfdW5yZWYgKGRlY3NpbmspOworKyAgZ3N0X3BhZF9zZXRfYWN0
aXZlIChzZXNzaW9uLT5yZWN2X3J0Y3Bfc2lua19naG9zdCwgVFJVRSk7CisrICBnc3RfZWxlbWVu
dF9hZGRfcGFkIChHU1RfRUxFTUVOVF9DQVNUIChydHBiaW4pLAorKyAgICAgIHNlc3Npb24tPnJl
Y3ZfcnRjcF9zaW5rX2dob3N0KTsKKysKKysgIHJldHVybiBzZXNzaW9uLT5yZWN2X3J0Y3Bfc2lu
a19naG9zdDsKKysKKysgIC8qIEVSUk9SUyAqLworK25vX25hbWU6CisrICB7CisrICAgIGdfd2Fy
bmluZyAoInJ0cGJpbjogaW52YWxpZCBuYW1lIGdpdmVuIik7CisrICAgIHJldHVybiBOVUxMOwor
KyAgfQorK2NyZWF0ZV9lcnJvcjoKKysgIHsKKysgICAgLyogY3JlYXRlX3Nlc3Npb24gYWxyZWFk
eSB3YXJuZWQgKi8KKyAgICAgcmV0dXJuIE5VTEw7CisgICB9CisgfQorQEAgLTM2NTEsNyArMzg5
NSw3IEBAIGNvbXBsZXRlX3Nlc3Npb25fc3JjIChHc3RSdHBCaW4gKiBydHBiaW4sIEdzdFJ0cEJp
blNlc3Npb24gKiBzZXNzaW9uKQorICAgICBHc3RQYWRMaW5rUmV0dXJuIHJldDsKKyAKKyAgICAg
R1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAibGlua2luZyBSVFAgZW5jb2RlciIpOworLSAgICBl
bmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInJ0cF9zcmNfJWQiLCBzZXNzaWQpOworKyAgICBlbmFt
ZSA9IGdfc3RyZHVwX3ByaW50ZiAoInJ0cF9zcmNfJXUiLCBzZXNzaWQpOworICAgICBlbmNzcmMg
PSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAoZW5jb2RlciwgZW5hbWUpOworICAgICBnX2Zy
ZWUgKGVuYW1lKTsKKyAKK0BAIC0zNjYwLDcgKzM5MDQsNyBAQCBjb21wbGV0ZV9zZXNzaW9uX3Ny
YyAoR3N0UnRwQmluICogcnRwYmluLCBHc3RSdHBCaW5TZXNzaW9uICogc2Vzc2lvbikKKyAKKyAg
ICAgc2VuZF9ydHBfc3JjID0gZW5jc3JjOworIAorLSAgICBlbmFtZSA9IGdfc3RyZHVwX3ByaW50
ZiAoInJ0cF9zaW5rXyVkIiwgc2Vzc2lkKTsKKysgICAgZW5hbWUgPSBnX3N0cmR1cF9wcmludGYg
KCJydHBfc2lua18ldSIsIHNlc3NpZCk7CisgICAgIGVuY3NpbmsgPSBnc3RfZWxlbWVudF9nZXRf
c3RhdGljX3BhZCAoZW5jb2RlciwgZW5hbWUpOworICAgICBnX2ZyZWUgKGVuYW1lKTsKKyAgICAg
aWYgKGVuY3NpbmsgPT0gTlVMTCkKK0BAIC0zNjk0LDIzICszOTM4LDIzIEBAIGNvbXBsZXRlX3Nl
c3Npb25fc3JjIChHc3RSdHBCaW4gKiBydHBiaW4sIEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9u
KQorICAgLyogRVJST1JTICovCisgbm9fc3JjcGFkOgorICAgeworLSAgICBnX3dhcm5pbmcgKCJy
dHBiaW46IGZhaWxlZCB0byBnZXQgcnRwIHNvdXJjZSBwYWQgZm9yIHNlc3Npb24gJWQiLCBzZXNz
aWQpOworKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgcnRwIHNvdXJjZSBw
YWQgZm9yIHNlc3Npb24gJXUiLCBzZXNzaWQpOworICAgICByZXR1cm4gRkFMU0U7CisgICB9Cisg
ZW5jX3NyY19mYWlsZWQ6CisgICB7CistICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRv
IGdldCBlbmNvZGVyIHNyYyBwYWQgZm9yIHNlc3Npb24gJWQiLCBzZXNzaWQpOworKyAgICBnX3dh
cm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgZW5jb2RlciBzcmMgcGFkIGZvciBzZXNzaW9u
ICV1Iiwgc2Vzc2lkKTsKKyAgICAgcmV0dXJuIEZBTFNFOworICAgfQorIGVuY19zaW5rX2ZhaWxl
ZDoKKyAgIHsKKy0gICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IGVuY29kZXIg
c2luayBwYWQgZm9yIHNlc3Npb24gJWQiLCBzZXNzaWQpOworKyAgICBnX3dhcm5pbmcgKCJydHBi
aW46IGZhaWxlZCB0byBnZXQgZW5jb2RlciBzaW5rIHBhZCBmb3Igc2Vzc2lvbiAldSIsIHNlc3Np
ZCk7CisgICAgIGdzdF9vYmplY3RfdW5yZWYgKHNlbmRfcnRwX3NyYyk7CisgICAgIHJldHVybiBG
QUxTRTsKKyAgIH0KKyBlbmNfbGlua19mYWlsZWQ6CisgICB7CistICAgIGdfd2FybmluZyAoInJ0
cGJpbjogZmFpbGVkIHRvIGxpbmsgcnRwIGVuY29kZXIgZm9yIHNlc3Npb24gJWQiLCBzZXNzaWQp
OworKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBsaW5rIHJ0cCBlbmNvZGVyIGZv
ciBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKKyAgICAgZ3N0X29iamVjdF91bnJlZiAoc2VuZF9ydHBf
c3JjKTsKKyAgICAgcmV0dXJuIEZBTFNFOworICAgfQorQEAgLTM3NzIsMjIgKzQwMTYsMjIgQEAg
Y3JlYXRlX2Vycm9yOgorICAgfQorIGV4aXN0aW5nX3Nlc3Npb246CisgICB7CistICAgIGdfd2Fy
bmluZyAoInJ0cGJpbjogc2Vzc2lvbiAlZCBpcyBhbHJlYWR5IGEgc2VuZGVyIiwgc2Vzc2lkKTsK
KysgICAgZ193YXJuaW5nICgicnRwYmluOiBzZXNzaW9uICV1IGlzIGFscmVhZHkgYSBzZW5kZXIi
LCBzZXNzaWQpOworICAgICByZXR1cm4gRkFMU0U7CisgICB9CisgcGFkX2ZhaWxlZDoKKyAgIHsK
Ky0gICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IHNlc3Npb24gcGFkIGZvciBz
ZXNzaW9uICVkIiwgc2Vzc2lkKTsKKysgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8g
Z2V0IHNlc3Npb24gcGFkIGZvciBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKKyAgICAgcmV0dXJuIEZB
TFNFOworICAgfQorIGF1eF9saW5rX2ZhaWxlZDoKKyAgIHsKKy0gICAgZ193YXJuaW5nICgicnRw
YmluOiBmYWlsZWQgdG8gbGluayBBVVggZm9yIHNlc3Npb24gJWQiLCBzZXNzaWQpOworKyAgICBn
X3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBsaW5rIEFVWCBmb3Igc2Vzc2lvbiAldSIsIHNl
c3NpZCk7CisgICAgIHJldHVybiBGQUxTRTsKKyAgIH0KKyBzZXNzaW9uX3NyY19mYWlsZWQ6Cisg
ICB7CistICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGNvbXBsZXRlIEFVWCBmb3Ig
c2Vzc2lvbiAlZCIsIHNlc3NpZCk7CisrICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRv
IGNvbXBsZXRlIEFVWCBmb3Igc2Vzc2lvbiAldSIsIHNlc3NpZCk7CisgICAgIHJldHVybiBGQUxT
RTsKKyAgIH0KKyB9CitAQCAtMzg0Nyw3ICs0MDkxLDcgQEAgY3JlYXRlX3NlbmRfcnRwIChHc3RS
dHBCaW4gKiBydHBiaW4sIEdzdFBhZFRlbXBsYXRlICogdGVtcGwsIGNvbnN0IGdjaGFyICogbmFt
ZSkKKyAgICAgaWYgKCFzZXR1cF9hdXhfc2VuZGVyIChydHBiaW4sIHNlc3Npb24sIGF1eCkpCisg
ICAgICAgZ290byBhdXhfc2Vzc2lvbl9mYWlsZWQ7CisgCistICAgIHBuYW1lID0gZ19zdHJkdXBf
cHJpbnRmICgic2lua18lZCIsIHNlc3NpZCk7CisrICAgIHBuYW1lID0gZ19zdHJkdXBfcHJpbnRm
ICgic2lua18ldSIsIHNlc3NpZCk7CisgICAgIHNlbmRfcnRwX3NpbmsgPSBnc3RfZWxlbWVudF9n
ZXRfc3RhdGljX3BhZCAoYXV4LCBwbmFtZSk7CisgICAgIGdfZnJlZSAocG5hbWUpOworIAorQEAg
LTM4ODcsMjcgKzQxMzEsMjcgQEAgY3JlYXRlX2Vycm9yOgorICAgfQorIGV4aXN0aW5nX3Nlc3Np
b246CisgICB7CistICAgIGdfd2FybmluZyAoInJ0cGJpbjogc2Vzc2lvbiAlZCBpcyBhbHJlYWR5
IGluIHVzZSIsIHNlc3NpZCk7CisrICAgIGdfd2FybmluZyAoInJ0cGJpbjogc2Vzc2lvbiAldSBp
cyBhbHJlYWR5IGluIHVzZSIsIHNlc3NpZCk7CisgICAgIHJldHVybiBOVUxMOworICAgfQorIGF1
eF9zZXNzaW9uX2ZhaWxlZDoKKyAgIHsKKy0gICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQg
dG8gZ2V0IEFVWCBzaW5rIHBhZCBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7CisrICAgIGdfd2Fy
bmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBBVVggc2luayBwYWQgZm9yIHNlc3Npb24gJXUi
LCBzZXNzaWQpOworICAgICByZXR1cm4gTlVMTDsKKyAgIH0KKyBhdXhfc2lua19mYWlsZWQ6Cisg
ICB7CistICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBBVVggc2luayBwYWQg
Zm9yIHNlc3Npb24gJWQiLCBzZXNzaWQpOworKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxl
ZCB0byBnZXQgQVVYIHNpbmsgcGFkIGZvciBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKKyAgICAgcmV0
dXJuIE5VTEw7CisgICB9CisgcGFkX2ZhaWxlZDoKKyAgIHsKKy0gICAgZ193YXJuaW5nICgicnRw
YmluOiBmYWlsZWQgdG8gZ2V0IHNlc3Npb24gcGFkIGZvciBzZXNzaW9uICVkIiwgc2Vzc2lkKTsK
KysgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IHNlc3Npb24gcGFkIGZvciBz
ZXNzaW9uICV1Iiwgc2Vzc2lkKTsKKyAgICAgcmV0dXJuIE5VTEw7CisgICB9Cisgc2Vzc2lvbl9z
cmNfZmFpbGVkOgorICAgeworLSAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBzZXR1
cCBzb3VyY2UgcGFkcyBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7CisrICAgIGdfd2FybmluZyAo
InJ0cGJpbjogZmFpbGVkIHRvIHNldHVwIHNvdXJjZSBwYWRzIGZvciBzZXNzaW9uICV1Iiwgc2Vz
c2lkKTsKKyAgICAgcmV0dXJuIE5VTEw7CisgICB9CisgfQorQEAgLTM5NzgsMTMgKzQyMjIsMTMg
QEAgY3JlYXRlX3J0Y3AgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0UGFkVGVtcGxhdGUgKiB0ZW1w
bCwgY29uc3QgZ2NoYXIgKiBuYW1lKQorIAorICAgICBHU1RfREVCVUdfT0JKRUNUIChydHBiaW4s
ICJsaW5raW5nIFJUQ1AgZW5jb2RlciIpOworIAorLSAgICBlbmFtZSA9IGdfc3RyZHVwX3ByaW50
ZiAoInJ0Y3Bfc3JjXyVkIiwgc2Vzc2lkKTsKKysgICAgZW5hbWUgPSBnX3N0cmR1cF9wcmludGYg
KCJydGNwX3NyY18ldSIsIHNlc3NpZCk7CisgICAgIGVuY3NyYyA9IGdzdF9lbGVtZW50X2dldF9z
dGF0aWNfcGFkIChlbmNvZGVyLCBlbmFtZSk7CisgICAgIGdfZnJlZSAoZW5hbWUpOworICAgICBp
ZiAoZW5jc3JjID09IE5VTEwpCisgICAgICAgZ290byBlbmNfc3JjX2ZhaWxlZDsKKyAKKy0gICAg
ZW5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJydGNwX3NpbmtfJWQiLCBzZXNzaWQpOworKyAgICBl
bmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInJ0Y3Bfc2lua18ldSIsIHNlc3NpZCk7CisgICAgIGVu
Y3NpbmsgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAoZW5jb2RlciwgZW5hbWUpOworICAg
ICBnX2ZyZWUgKGVuYW1lKTsKKyAgICAgaWYgKGVuY3NpbmsgPT0gTlVMTCkKK0BAIC00MDIxLDIz
ICs0MjY1LDIzIEBAIG5vX3Nlc3Npb246CisgICB9CisgcGFkX2ZhaWxlZDoKKyAgIHsKKy0gICAg
Z193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IHJ0Y3AgcGFkIGZvciBzZXNzaW9uICVk
Iiwgc2Vzc2lkKTsKKysgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IHJ0Y3Ag
cGFkIGZvciBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKKyAgICAgcmV0dXJuIE5VTEw7CisgICB9Cisg
ZW5jX3NyY19mYWlsZWQ6CisgICB7CistICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRv
IGdldCBlbmNvZGVyIHNyYyBwYWQgZm9yIHNlc3Npb24gJWQiLCBzZXNzaWQpOworKyAgICBnX3dh
cm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgZW5jb2RlciBzcmMgcGFkIGZvciBzZXNzaW9u
ICV1Iiwgc2Vzc2lkKTsKKyAgICAgcmV0dXJuIE5VTEw7CisgICB9CisgZW5jX3NpbmtfZmFpbGVk
OgorICAgeworLSAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgZW5jb2RlciBz
aW5rIHBhZCBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7CisrICAgIGdfd2FybmluZyAoInJ0cGJp
bjogZmFpbGVkIHRvIGdldCBlbmNvZGVyIHNpbmsgcGFkIGZvciBzZXNzaW9uICV1Iiwgc2Vzc2lk
KTsKKyAgICAgZ3N0X29iamVjdF91bnJlZiAoZW5jc3JjKTsKKyAgICAgcmV0dXJuIE5VTEw7Cisg
ICB9CisgZW5jX2xpbmtfZmFpbGVkOgorICAgeworLSAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZh
aWxlZCB0byBsaW5rIHJ0Y3AgZW5jb2RlciBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7CisrICAg
IGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGxpbmsgcnRjcCBlbmNvZGVyIGZvciBzZXNz
aW9uICV1Iiwgc2Vzc2lkKTsKKyAgICAgZ3N0X29iamVjdF91bnJlZiAoZW5jc3JjKTsKKyAgICAg
cmV0dXJuIE5VTEw7CisgICB9CitkaWZmIC0tZ2l0IGEvZ3N0L3J0cG1hbmFnZXIvZ3N0cnRwYmlu
LmggYi9nc3QvcnRwbWFuYWdlci9nc3RydHBiaW4uaAoraW5kZXggZmIxM2E0Ny4uMzg0Yjc2ZCAx
MDA2NDQKKy0tLSBhL2dzdC9ydHBtYW5hZ2VyL2dzdHJ0cGJpbi5oCisrKysgYi9nc3QvcnRwbWFu
YWdlci9nc3RydHBiaW4uaAorQEAgLTEyNyw2ICsxMjcsOCBAQCBzdHJ1Y3QgX0dzdFJ0cEJpbkNs
YXNzIHsKKyAKKyAgIHZvaWQgICAgICgqb25fbmV3X3NlbmRlcl9zc3JjKSAgICAgIChHc3RSdHBC
aW4gKnJ0cGJpbiwgZ3VpbnQgc2Vzc2lvbiwgZ3VpbnQzMiBzc3JjKTsKKyAgIHZvaWQgICAgICgq
b25fc2VuZGVyX3NzcmNfYWN0aXZlKSAgIChHc3RSdHBCaW4gKnJ0cGJpbiwgZ3VpbnQgc2Vzc2lv
biwgZ3VpbnQzMiBzc3JjKTsKKysKKysgIGd1aW50ICAgICgqb25fYnVuZGxlZF9zc3JjKSAgICAg
ICAgIChHc3RSdHBCaW4gKnJ0cGJpbiwgZ3VpbnQgc3NyYyk7CisgfTsKKyAKKyBHVHlwZSBnc3Rf
cnRwX2Jpbl9nZXRfdHlwZSAodm9pZCk7CmRpZmYgLS1naXQgYS9Ub29scy9nc3RyZWFtZXIvcGF0
Y2hlcy9nc3QtcGx1Z2lucy1nb29kLTAwMDUtc291cGh0dHBzcmMtY29va2llLWphci1hbmQtY29u
dGV4dC1xdWVyeS1zdXBwb3J0LnBhdGNoIGIvVG9vbHMvZ3N0cmVhbWVyL3BhdGNoZXMvZ3N0LXBs
dWdpbnMtZ29vZC0wMDA1LXNvdXBodHRwc3JjLWNvb2tpZS1qYXItYW5kLWNvbnRleHQtcXVlcnkt
c3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NGVkYmQ2ZjgzZWZlYjY0N2M3ZDJiYjNmYmFmNWE5
NWRjYzdlMGVhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvZ3N0cmVhbWVyL3BhdGNoZXMvZ3N0
LXBsdWdpbnMtZ29vZC0wMDA1LXNvdXBodHRwc3JjLWNvb2tpZS1qYXItYW5kLWNvbnRleHQtcXVl
cnktc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDEyMCBAQAorRnJvbSA4ZTAzYTYzZmQ1NWY1YWU0
NDc5OTQ1Nzk4OTBlODYzMGIyN2Y0YTFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTog
UGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4KK0RhdGU6IFdlZCwgMjggT2N0IDIw
MTUgMTI6MDA6MDkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIHNvdXBodHRwc3JjOiBjb29r
aWUgamFyIGFuZCBjb250ZXh0IHF1ZXJ5IHN1cHBvcnQKKworVXNlIGEgdm9sYXRpbGUgQ29va2ll
IGphciB0byBzdG9yZSBjb29raWVzIGFuZCBoYW5kbGUgdGhlIGNvbnRleHQKK3F1ZXJ5IHNvIHRo
YXQgc2Vzc2lvbiBkYXRhIGNhbiBiZSBzaGFyZWQgd2l0aCBvdGhlciBlbGVtZW50cyAobGlrZQor
YWRhcHRpdmVkZW11eCkuCisKK2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNn
aT9pZD03MjYzMTQKKy0tLQorIGV4dC9zb3VwL2dzdHNvdXBodHRwc3JjLmMgfCA0MSArKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQorIGV4dC9zb3VwL2dzdHNvdXBodHRw
c3JjLmggfCAgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0
aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZXh0L3NvdXAvZ3N0c291cGh0dHBzcmMuYyBiL2V4dC9z
b3VwL2dzdHNvdXBodHRwc3JjLmMKK2luZGV4IGZjN2NiYTcuLjBkM2U4ODYgMTAwNjQ0CistLS0g
YS9leHQvc291cC9nc3Rzb3VwaHR0cHNyYy5jCisrKysgYi9leHQvc291cC9nc3Rzb3VwaHR0cHNy
Yy5jCitAQCAtNDgyLDYgKzQ4Miw3IEBAIGdzdF9zb3VwX2h0dHBfc3JjX2luaXQgKEdzdFNvdXBI
VFRQU3JjICogc3JjKQorICAgc3JjLT5jb29raWVzID0gTlVMTDsKKyAgIHNyYy0+aXJhZGlvX21v
ZGUgPSBERUZBVUxUX0lSQURJT19NT0RFOworICAgc3JjLT5zZXNzaW9uID0gTlVMTDsKKysgIHNy
Yy0+Y29va2llX2phciA9IE5VTEw7CisgICBzcmMtPm1zZyA9IE5VTEw7CisgICBzcmMtPnRpbWVv
dXQgPSBERUZBVUxUX1RJTUVPVVQ7CisgICBzcmMtPmxvZ19sZXZlbCA9IERFRkFVTFRfU09VUF9M
T0dfTEVWRUw7CitAQCAtOTQzLDYgKzk0NCw5IEBAIGdzdF9zb3VwX2h0dHBfc3JjX3Nlc3Npb25f
b3BlbiAoR3N0U291cEhUVFBTcmMgKiBzcmMpCisgICAgIHNvdXBfc2Vzc2lvbl9yZW1vdmVfZmVh
dHVyZV9ieV90eXBlIChzcmMtPnNlc3Npb24sCisgICAgICAgICBTT1VQX1RZUEVfQ09OVEVOVF9E
RUNPREVSKTsKKyAKKysgIHNyYy0+Y29va2llX2phciA9IHNvdXBfY29va2llX2phcl9uZXcgKCk7
CisrICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUgKHNyYy0+c2Vzc2lvbiwKKysgICAgICBTT1VQ
X1NFU1NJT05fRkVBVFVSRSAoc3JjLT5jb29raWVfamFyKSk7CisgICByZXR1cm4gVFJVRTsKKyB9
CisgCitAQCAtOTU4LDYgKzk2MiwxMSBAQCBnc3Rfc291cF9odHRwX3NyY19zZXNzaW9uX2Nsb3Nl
IChHc3RTb3VwSFRUUFNyYyAqIHNyYykKKyAgICAgc3JjLT5tc2cgPSBOVUxMOworICAgfQorIAor
KyAgaWYgKHNyYy0+Y29va2llX2phcikgeworKyAgICBnX29iamVjdF91bnJlZiAoc3JjLT5jb29r
aWVfamFyKTsKKysgICAgc3JjLT5jb29raWVfamFyID0gTlVMTDsKKysgIH0KKysKKyAgIGlmIChz
cmMtPnNlc3Npb24pIHsKKyAgICAgc291cF9zZXNzaW9uX2Fib3J0IChzcmMtPnNlc3Npb24pOwor
ICAgICBnX29iamVjdF91bnJlZiAoc3JjLT5zZXNzaW9uKTsKK0BAIC0xNDI2LDExICsxNDM1LDEy
IEBAIGdzdF9zb3VwX2h0dHBfc3JjX2J1aWxkX21lc3NhZ2UgKEdzdFNvdXBIVFRQU3JjICogc3Jj
LCBjb25zdCBnY2hhciAqIG1ldGhvZCkKKyAgIH0KKyAgIGlmIChzcmMtPmNvb2tpZXMpIHsKKyAg
ICAgZ2NoYXIgKipjb29raWU7CisrICAgIFNvdXBVUkkgKnVyaSA9IHNvdXBfdXJpX25ldyAoc3Jj
LT5sb2NhdGlvbik7CisgCisgICAgIGZvciAoY29va2llID0gc3JjLT5jb29raWVzOyAqY29va2ll
ICE9IE5VTEw7IGNvb2tpZSsrKSB7CistICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5k
IChzcmMtPm1zZy0+cmVxdWVzdF9oZWFkZXJzLCAiQ29va2llIiwKKy0gICAgICAgICAgKmNvb2tp
ZSk7CisrICAgICAgc291cF9jb29raWVfamFyX3NldF9jb29raWUgKHNyYy0+Y29va2llX2phciwg
dXJpLCAqY29va2llKTsKKyAgICAgfQorKyAgICBzb3VwX3VyaV9mcmVlICh1cmkpOworICAgfQor
IAorICAgc291cF9tZXNzYWdlX3NldF9mbGFncyAoc3JjLT5tc2csIFNPVVBfTUVTU0FHRV9PVkVS
V1JJVEVfQ0hVTktTIHwKK0BAIC0xOTEwLDYgKzE5MjAsMTIgQEAgZ3N0X3NvdXBfaHR0cF9zcmNf
cXVlcnkgKEdzdEJhc2VTcmMgKiBic3JjLCBHc3RRdWVyeSAqIHF1ZXJ5KQorICAgZ2Jvb2xlYW4g
cmV0OworICAgR3N0U2NoZWR1bGluZ0ZsYWdzIGZsYWdzOworICAgZ2ludCBtaW5zaXplLCBtYXhz
aXplLCBhbGlnbjsKKysgIEdzdENvbnRleHQgKmNvbnRleHQ7CisrICBHc3RTdHJ1Y3R1cmUgKmNv
bnRleHRfc3RydWN0dXJlOworKyAgY2hhciAqY29va2llOworKyAgY29uc3QgZ2NoYXIgKmNvb2tp
ZXNbMl07CisrICBjb25zdCBnY2hhciAqY29udGV4dF90eXBlOworKyAgU291cFVSSSAqdXJpOwor
IAorICAgc3dpdGNoIChHU1RfUVVFUllfVFlQRSAocXVlcnkpKSB7CisgICAgIGNhc2UgR1NUX1FV
RVJZX1VSSToKK0BAIC0xOTIxLDYgKzE5MzcsMjcgQEAgZ3N0X3NvdXBfaHR0cF9zcmNfcXVlcnkg
KEdzdEJhc2VTcmMgKiBic3JjLCBHc3RRdWVyeSAqIHF1ZXJ5KQorICAgICAgIH0KKyAgICAgICBy
ZXQgPSBUUlVFOworICAgICAgIGJyZWFrOworKyAgICBjYXNlIEdTVF9RVUVSWV9DT05URVhUOgor
KyAgICAgIGlmIChnc3RfcXVlcnlfcGFyc2VfY29udGV4dF90eXBlIChxdWVyeSwgJmNvbnRleHRf
dHlwZSkKKysgICAgICAgICAgJiYgIWdfc3RyY21wMCAoY29udGV4dF90eXBlLCAiaHR0cC1oZWFk
ZXJzIikpIHsKKysgICAgICAgIHVyaSA9IHNvdXBfdXJpX25ldyAoc3JjLT5sb2NhdGlvbik7Cisr
ICAgICAgICBjb29raWUgPSBzb3VwX2Nvb2tpZV9qYXJfZ2V0X2Nvb2tpZXMgKHNyYy0+Y29va2ll
X2phciwgdXJpLCBUUlVFKTsKKysgICAgICAgIGNvbnRleHQgPSBnc3RfY29udGV4dF9uZXcgKCJo
dHRwLWhlYWRlcnMiLCBGQUxTRSk7CisrICAgICAgICBnc3RfY29udGV4dF9tYWtlX3dyaXRhYmxl
IChjb250ZXh0KTsKKysgICAgICAgIGNvbnRleHRfc3RydWN0dXJlID0gZ3N0X2NvbnRleHRfd3Jp
dGFibGVfc3RydWN0dXJlIChjb250ZXh0KTsKKysgICAgICAgIGlmIChjb29raWUgIT0gTlVMTCkg
eworKyAgICAgICAgICBjb29raWVzWzBdID0gY29va2llOworKyAgICAgICAgICBjb29raWVzWzFd
ID0gTlVMTDsKKysgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKGNvbnRleHRfc3RydWN0dXJl
LCAiY29va2llcyIsIEdfVFlQRV9TVFJWLCBjb29raWVzLAorKyAgICAgICAgICAgICAgTlVMTCk7
CisrICAgICAgICAgIGdfZnJlZSAoY29va2llKTsKKysgICAgICAgIH0KKysgICAgICAgIGdzdF9x
dWVyeV9zZXRfY29udGV4dCAocXVlcnksIGNvbnRleHQpOworKyAgICAgICAgc291cF91cmlfZnJl
ZSAodXJpKTsKKysgICAgICAgIHJldCA9IFRSVUU7CisrICAgICAgICBicmVhazsKKysgICAgICB9
CisrCisgICAgIGRlZmF1bHQ6CisgICAgICAgcmV0ID0gRkFMU0U7CisgICAgICAgYnJlYWs7Citk
aWZmIC0tZ2l0IGEvZXh0L3NvdXAvZ3N0c291cGh0dHBzcmMuaCBiL2V4dC9zb3VwL2dzdHNvdXBo
dHRwc3JjLmgKK2luZGV4IGRkMDE2NTYuLjljNmJiNWMgMTAwNjQ0CistLS0gYS9leHQvc291cC9n
c3Rzb3VwaHR0cHNyYy5oCisrKysgYi9leHQvc291cC9nc3Rzb3VwaHR0cHNyYy5oCitAQCAtNjAs
NiArNjAsNyBAQCBzdHJ1Y3QgX0dzdFNvdXBIVFRQU3JjIHsKKyAgIGdjaGFyICpwcm94eV9wdzsg
ICAgICAgICAgICAgLyogQXV0aGVudGljYXRpb24gdXNlciBwYXNzd29yZCBmb3IgcHJveHkgVVJJ
LiAqLworICAgZ2NoYXIgKipjb29raWVzOyAgICAgICAgICAgICAvKiBIVFRQIHJlcXVlc3QgY29v
a2llcy4gKi8KKyAgIFNvdXBTZXNzaW9uICpzZXNzaW9uOyAgICAgICAgLyogQXN5bmMgY29udGV4
dC4gKi8KKysgIFNvdXBDb29raWVKYXIgKmNvb2tpZV9qYXI7ICAgLyogVm9sYXRpbGUgSFRUUCBj
b29raWUgc3RvcmFnZSAqLworICAgU291cE1lc3NhZ2UgKm1zZzsgICAgICAgICAgICAvKiBSZXF1
ZXN0IG1lc3NhZ2UuICovCisgICBHc3RGbG93UmV0dXJuIHJldDsgICAgICAgICAgIC8qIFJldHVy
biBjb2RlIGZyb20gY2FsbGJhY2suICovCisgICBnaW50IHJldHJ5X2NvdW50OyAgICAgICAgICAg
IC8qIE51bWJlciBvZiByZXRyaWVzIHNpbmNlIHdlIHJlY2VpdmVkIGRhdGEgKi8KKy0tIAorMS44
LjMuMgorCmRpZmYgLS1naXQgYS9Ub29scy9nc3RyZWFtZXIvcGF0Y2hlcy9nc3QtcGx1Z2lucy1n
b29kLTAwMDYtcXRkZW11eC1hZGQtY29udGV4dC1mb3ItYS1wcmVmZXJyZWQtcHJvdGVjdGlvbi5w
YXRjaCBiL1Rvb2xzL2dzdHJlYW1lci9wYXRjaGVzL2dzdC1wbHVnaW5zLWdvb2QtMDAwNi1xdGRl
bXV4LWFkZC1jb250ZXh0LWZvci1hLXByZWZlcnJlZC1wcm90ZWN0aW9uLnBhdGNoCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBkZGZlY2U0MmYwN2Y1YWUwZmUyZDVlN2QyZGJmOTgyYzdmYTUzOTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9nc3RyZWFtZXIvcGF0Y2hlcy9nc3QtcGx1Z2lucy1nb29kLTAwMDYtcXRk
ZW11eC1hZGQtY29udGV4dC1mb3ItYS1wcmVmZXJyZWQtcHJvdGVjdGlvbi5wYXRjaApAQCAtMCww
ICsxLDMyOSBAQAorRnJvbSA5ZDcyMDFjYTc2ZTc4NzVjZGRkMTA2ZGYwNmI0ZDc2MzdjMDI1NDY1
IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIg
PGNhbHZhcmlzQGlnYWxpYS5jb20+CitEYXRlOiBXZWQsIDIxIEp1biAyMDE3IDE3OjU5OjIxICsw
MjAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBxdGRlbXV4OiBhZGQgY29udGV4dCBmb3IgYSBwcmVm
ZXJyZWQgcHJvdGVjdGlvbgorCitxdGRlbXV4IHNlbGVjdGVkIHRoZSBmaXJzdCBzeXN0ZW0gY29y
cmVzcG9uZGluZyB0byBhIHdvcmtpbmcgR1N0cmVhbWVyCitkZWNyeXB0b3IuIFdpdGggdGhpcyBj
aGFuZ2UsIGJlZm9yZSBzZWxlY3RpbmcgdGhhdCBkZWNyeXB0b3IsIHF0ZGVtdXgKK3dpbGwgY2hl
Y2sgaWYgaXQgaGFzIGNvbnRleHQgKGEgcHJlZmVycmVkIGRlY3J5cHRvciBpZCkgYW5kIGlmIG5v
dCwgaXQKK3dpbGwgcmVxdWVzdCBpdC4KKworVGhlIHJlcXVlc3QgaW5jbHVkZXMgdHJhY2staWQs
IGF2YWlsYWJsZSBrZXkgc3lzdGVtIGlkcyBmb3IgdGhlCithdmFpbGFibGUgZGVjcnlwdG9ycyBh
bmQgZXZlbiB0aGUgZXZlbnRzIHNvIHRoYXQgdGhlIGluaXQgZGF0YSBpcworYWNjZXNzaWJsZS4K
KworW2VvY2FuaGFAaWdhbGlhLmNvbTogc2VsZWN0IHRoZSBwcmVmZXJyZWQgcHJvdGVjdGlvbiBz
eXN0ZW0gZXZlbiBpZiBub3QgYXZhaWxhYmxlXQorCitUZXN0ICI0LiBDbGVhcktleVZpZGVvIiBp
biBZb3VUdWJlIGxlYW5iYWNrIEVNRSBjb25mb3JtYW5jZSB0ZXN0cyAyMDE2IGZvcgorSC4yNjRb
MV0gdXNlcyBhIG1lZGlhIGZpbGVbMl0gd2l0aCBjZW5jIGVuY3J5cHRpb24gd2hpY2ggZW1iZWRz
ICdwc3NoJyBib3hlcword2l0aCB0aGUgaW5pdCBkYXRhIGZvciB0aGUgUGxheXJlYWR5IGFuZCBX
aWRldmluZSBlbmNyeXB0aW9uIHN5c3RlbXMsIGJ1dCBub3QKK2ZvciB0aGUgQ2xlYXJLZXkgZW5j
cnlwdGlvbiBzeXN0ZW0gKGFzIGRlZmluZWQgYnkgdGhlIEVNRXYwLjFiIHNwZWNbM10gYW5kIHdp
dGgKK3RoZSBlbmNyeXB0aW9uIHN5c3RlbSBpZCBkZWZpbmVkIGluIFs0XSkuCisKK0luc3RlYWQs
IHRoZSBDbGVhcktleSBlbmNyeXB0aW9uIHN5c3RlbSBpcyBtYW51YWxseSBzZWxlY3RlZCBieSB0
aGUgd2ViIHBhZ2UKK2NvZGUgKGV2ZW4gaWYgbm90IG9yaWdpbmFsbHkgZGV0ZWN0ZWQgYnkgcXRk
ZW11eCkgYW5kIHRoZSBwcm9wZXIgZGVjcnlwdGlvbiBrZXkKK2lzIGRpc3BhdGNoZWQgdG8gdGhl
IGRlY3J5cHRvciwgd2hpY2ggY2FuIHRoZW4gZGVjcnlwdCB0aGUgdmlkZW8gc3VjY2Vzc2Z1bGx5
LgorCitbMV0gaHR0cDovL3l0LWRhc2gtbXNlLXRlc3QuY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xl
YXBpcy5jb20vdW5pdC10ZXN0cy8yMDE2Lmh0bWw/dGVzdF90eXBlPWVuY3J5cHRlZG1lZGlhLXRl
c3Qmd2VibT1mYWxzZQorWzJdIGh0dHA6Ly95dC1kYXNoLW1zZS10ZXN0LmNvbW1vbmRhdGFzdG9y
YWdlLmdvb2dsZWFwaXMuY29tL3VuaXQtdGVzdHMvbWVkaWEvY2FyX2NlbmMtMjAxMjA4MjctODYu
bXA0CitbM10gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2VtZS12
MC4xYi9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjc2ltcGxlLWRlY3J5cHRp
b24tY2xlYXIta2V5CitbNF0gaHR0cHM6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVn
LmNnaT9pZD0yNDAyNyNjMgorCitodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzcwMTA3CistLS0KKyBnc3QvaXNvbXA0L3F0ZGVtdXguYyB8IDIwMCArKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyBnc3QvaXNvbXA0L3F0
ZGVtdXguaCB8ICAgMSArCisgMiBmaWxlcyBjaGFuZ2VkLCAxOTUgaW5zZXJ0aW9ucygrKSwgNiBk
ZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dzdC9pc29tcDQvcXRkZW11eC5jIGIvZ3N0L2lz
b21wNC9xdGRlbXV4LmMKK2luZGV4IDBhNDFiMjZmMi4uYWU1N2JkZjliIDEwMDY0NAorLS0tIGEv
Z3N0L2lzb21wNC9xdGRlbXV4LmMKKysrKyBiL2dzdC9pc29tcDQvcXRkZW11eC5jCitAQCAtNTEz
LDYgKzUxMyw4IEBAIHN0YXRpYyBHc3RJbmRleCAqZ3N0X3F0ZGVtdXhfZ2V0X2luZGV4IChHc3RF
bGVtZW50ICogZWxlbWVudCk7CisgI2VuZGlmCisgc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJu
IGdzdF9xdGRlbXV4X2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCisgICAgIEdz
dFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pOworK3N0YXRpYyB2b2lkIGdzdF9xdGRlbXV4X3NldF9j
b250ZXh0IChHc3RFbGVtZW50ICogZWxlbWVudCwKKysgICAgR3N0Q29udGV4dCAqIGNvbnRleHQp
OworIHN0YXRpYyBnYm9vbGVhbiBxdGRlbXV4X3NpbmtfYWN0aXZhdGUgKEdzdFBhZCAqIHNpbmtw
YWQsIEdzdE9iamVjdCAqIHBhcmVudCk7Cisgc3RhdGljIGdib29sZWFuIHF0ZGVtdXhfc2lua19h
Y3RpdmF0ZV9tb2RlIChHc3RQYWQgKiBzaW5rcGFkLAorICAgICBHc3RPYmplY3QgKiBwYXJlbnQs
IEdzdFBhZE1vZGUgbW9kZSwgZ2Jvb2xlYW4gYWN0aXZlKTsKK0BAIC02MDIsNiArNjA0LDcgQEAg
Z3N0X3F0ZGVtdXhfY2xhc3NfaW5pdCAoR3N0UVREZW11eENsYXNzICoga2xhc3MpCisgICBnc3Rl
bGVtZW50X2NsYXNzLT5zZXRfaW5kZXggPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3F0ZGVtdXhf
c2V0X2luZGV4KTsKKyAgIGdzdGVsZW1lbnRfY2xhc3MtPmdldF9pbmRleCA9IEdTVF9ERUJVR19G
VU5DUFRSIChnc3RfcXRkZW11eF9nZXRfaW5kZXgpOworICNlbmRpZgorKyAgZ3N0ZWxlbWVudF9j
bGFzcy0+c2V0X2NvbnRleHQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3F0ZGVtdXhfc2V0X2Nv
bnRleHQpOworIAorICAgZ3N0X3RhZ19yZWdpc3Rlcl9tdXNpY2JyYWluel90YWdzICgpOworIAor
QEAgLTY2MCw2ICs2NjMsNyBAQCBnc3RfcXRkZW11eF9pbml0IChHc3RRVERlbXV4ICogcXRkZW11
eCkKKyAgIHF0ZGVtdXgtPmNlbmNfYXV4X2luZm9fc2l6ZXMgPSBOVUxMOworICAgcXRkZW11eC0+
Y2VuY19hdXhfc2FtcGxlX2NvdW50ID0gMDsKKyAgIHF0ZGVtdXgtPnByb3RlY3Rpb25fc3lzdGVt
X2lkcyA9IE5VTEw7CisrICBxdGRlbXV4LT5wcmVmZXJyZWRfcHJvdGVjdGlvbl9zeXN0ZW1faWQg
PSBOVUxMOworICAgZ19xdWV1ZV9pbml0ICgmcXRkZW11eC0+cHJvdGVjdGlvbl9ldmVudF9xdWV1
ZSk7CisgICBnc3Rfc2VnbWVudF9pbml0ICgmcXRkZW11eC0+c2VnbWVudCwgR1NUX0ZPUk1BVF9U
SU1FKTsKKyAgIHF0ZGVtdXgtPnRhZ19saXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsK
K0BAIC0yMTEzLDYgKzIxMTcsMTAgQEAgZ3N0X3F0ZGVtdXhfcmVzZXQgKEdzdFFURGVtdXggKiBx
dGRlbXV4LCBnYm9vbGVhbiBoYXJkKQorICAgICAgIGdfcHRyX2FycmF5X2ZyZWUgKHF0ZGVtdXgt
PnByb3RlY3Rpb25fc3lzdGVtX2lkcywgVFJVRSk7CisgICAgICAgcXRkZW11eC0+cHJvdGVjdGlv
bl9zeXN0ZW1faWRzID0gTlVMTDsKKyAgICAgfQorKyAgICBpZiAocXRkZW11eC0+cHJlZmVycmVk
X3Byb3RlY3Rpb25fc3lzdGVtX2lkKSB7CisrICAgICAgZ19mcmVlIChxdGRlbXV4LT5wcmVmZXJy
ZWRfcHJvdGVjdGlvbl9zeXN0ZW1faWQpOworKyAgICAgIHF0ZGVtdXgtPnByZWZlcnJlZF9wcm90
ZWN0aW9uX3N5c3RlbV9pZCA9IE5VTEw7CisrICAgIH0KKyAgIH0gZWxzZSBpZiAocXRkZW11eC0+
bXNzX21vZGUpIHsKKyAgICAgZ3N0X2Zsb3dfY29tYmluZXJfcmVzZXQgKHF0ZGVtdXgtPmZsb3dj
b21iaW5lcik7CisgICAgIGZvciAobiA9IDA7IG4gPCBxdGRlbXV4LT5uX3N0cmVhbXM7IG4rKykK
K0BAIC0yNTkwLDYgKzI1OTgsMjggQEAgZ3N0X3F0ZGVtdXhfY2hhbmdlX3N0YXRlIChHc3RFbGVt
ZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKKyB9CisgCisgc3RhdGlj
IHZvaWQKKytnc3RfcXRkZW11eF9zZXRfY29udGV4dCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdz
dENvbnRleHQgKiBjb250ZXh0KQorK3sKKysgIEdzdFFURGVtdXggKnF0ZGVtdXggPSBHU1RfUVRE
RU1VWCAoZWxlbWVudCk7CisrCisrICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfQ09OVEVYVCAo
Y29udGV4dCkpOworKworKyAgaWYgKGdzdF9jb250ZXh0X2hhc19jb250ZXh0X3R5cGUgKGNvbnRl
eHQsCisrICAgICAgICAgICJkcm0tcHJlZmVycmVkLWRlY3J5cHRpb24tc3lzdGVtLWlkIikpIHsK
KysgICAgY29uc3QgR3N0U3RydWN0dXJlICpzOworKworKyAgICBzID0gZ3N0X2NvbnRleHRfZ2V0
X3N0cnVjdHVyZSAoY29udGV4dCk7CisrICAgIGdfZnJlZSAocXRkZW11eC0+cHJlZmVycmVkX3By
b3RlY3Rpb25fc3lzdGVtX2lkKTsKKysgICAgcXRkZW11eC0+cHJlZmVycmVkX3Byb3RlY3Rpb25f
c3lzdGVtX2lkID0KKysgICAgICAgIGdfc3RyZHVwIChnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcg
KHMsICJkZWNyeXB0aW9uLXN5c3RlbS1pZCIpKTsKKysgICAgR1NUX0RFQlVHX09CSkVDVCAoZWxl
bWVudCwgInNldCBwcmVmZXJyZWQgZGVjcnlwdGlvbiBzeXN0ZW0gdG8gJXMiLAorKyAgICAgICAg
cXRkZW11eC0+cHJlZmVycmVkX3Byb3RlY3Rpb25fc3lzdGVtX2lkKTsKKysgIH0KKysKKysgIEdT
VF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dCAoZWxlbWVudCwgY29u
dGV4dCk7CisrfQorKworK3N0YXRpYyB2b2lkCisgcXRkZW11eF9wYXJzZV9mdHlwIChHc3RRVERl
bXV4ICogcXRkZW11eCwgY29uc3QgZ3VpbnQ4ICogYnVmZmVyLCBnaW50IGxlbmd0aCkKKyB7Cisg
ICAvKiBjb3VudHMgYXMgaGVhZGVyIGRhdGEgKi8KK0BAIC0zODE5LDYgKzM4NDksOCBAQCBxdGRl
bXV4X3BhcnNlX3Bzc2ggKEdzdFFURGVtdXggKiBxdGRlbXV4LCBHTm9kZSAqIG5vZGUpCisgICBl
dmVudCA9IGdzdF9ldmVudF9uZXdfcHJvdGVjdGlvbiAoc3lzaWRfc3RyaW5nLCBwc3NoLAorICAg
ICAgIChwYXJlbnRfYm94X3R5cGUgPT0gRk9VUkNDX21vb3YpID8gImlzb2JtZmYvbW9vdiIgOiAi
aXNvYm1mZi9tb29mIik7CisgICBmb3IgKGkgPSAwOyBpIDwgcXRkZW11eC0+bl9zdHJlYW1zOyAr
K2kpIHsKKysgICAgR1NUX1RSQUNFX09CSkVDVCAocXRkZW11eCwKKysgICAgICAgICJhZGRpbmcg
cHJvdGVjdGlvbiBldmVudCBmb3Igc3RyZWFtICVkIGFuZCBzeXN0ZW0gJXMiLCBpLCBzeXNpZF9z
dHJpbmcpOworICAgICBnX3F1ZXVlX3B1c2hfdGFpbCAoJnF0ZGVtdXgtPnN0cmVhbXNbaV0tPnBy
b3RlY3Rpb25fc2NoZW1lX2V2ZW50X3F1ZXVlLAorICAgICAgICAgZ3N0X2V2ZW50X3JlZiAoZXZl
bnQpKTsKKyAgIH0KK0BAIC01NTI5LDYgKzU1NjEsOCBAQCBnc3RfcXRkZW11eF9kZWNvcmF0ZV9h
bmRfcHVzaF9idWZmZXIgKEdzdFFURGVtdXggKiBxdGRlbXV4LAorICAgICBHc3RFdmVudCAqZXZl
bnQ7CisgCisgICAgIHdoaWxlICgoZXZlbnQgPSBnX3F1ZXVlX3BvcF9oZWFkICgmc3RyZWFtLT5w
cm90ZWN0aW9uX3NjaGVtZV9ldmVudF9xdWV1ZSkpKSB7CisrICAgICAgR1NUX1RSQUNFX09CSkVD
VCAoc3RyZWFtLT5wYWQsICJwdXNoaW5nIHByb3RlY3Rpb24gZXZlbnQ6ICUiCisrICAgICAgICAg
IEdTVF9QVFJfRk9STUFULCBldmVudCk7CisgICAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChzdHJl
YW0tPnBhZCwgZXZlbnQpOworICAgICB9CisgCitAQCAtNzY4OCwxMSArNzcyMiwxNDEgQEAgcXRk
ZW11eF9kb19hbGxvY2F0aW9uIChHc3RRVERlbXV4ICogcXRkZW11eCwgUXREZW11eFN0cmVhbSAq
IHN0cmVhbSkKKyB9CisgCisgc3RhdGljIGdib29sZWFuCisrcGFkX3F1ZXJ5IChjb25zdCBHVmFs
dWUgKiBpdGVtLCBHVmFsdWUgKiB2YWx1ZSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQorK3sKKysgIEdz
dFBhZCAqcGFkID0gZ192YWx1ZV9nZXRfb2JqZWN0IChpdGVtKTsKKysgIEdzdFF1ZXJ5ICpxdWVy
eSA9IHVzZXJfZGF0YTsKKysgIGdib29sZWFuIHJlczsKKysKKysgIHJlcyA9IGdzdF9wYWRfcGVl
cl9xdWVyeSAocGFkLCBxdWVyeSk7CisrCisrICBpZiAocmVzKSB7CisrICAgIGdfdmFsdWVfc2V0
X2Jvb2xlYW4gKHZhbHVlLCBUUlVFKTsKKysgICAgcmV0dXJuIEZBTFNFOworKyAgfQorKworKyAg
R1NUX0lORk9fT0JKRUNUIChwYWQsICJwYWQgcGVlciBxdWVyeSBmYWlsZWQiKTsKKysgIHJldHVy
biBUUlVFOworK30KKysKKytzdGF0aWMgZ2Jvb2xlYW4KKytnc3RfcXRkZW11eF9ydW5fcXVlcnkg
KEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RRdWVyeSAqIHF1ZXJ5LAorKyAgICBHc3RQYWREaXJl
Y3Rpb24gZGlyZWN0aW9uKQorK3sKKysgIEdzdEl0ZXJhdG9yICppdDsKKysgIEdzdEl0ZXJhdG9y
Rm9sZEZ1bmN0aW9uIGZ1bmMgPSBwYWRfcXVlcnk7CisrICBHVmFsdWUgcmVzID0geyAwLCB9Owor
KworKyAgZ192YWx1ZV9pbml0ICgmcmVzLCBHX1RZUEVfQk9PTEVBTik7CisrICBnX3ZhbHVlX3Nl
dF9ib29sZWFuICgmcmVzLCBGQUxTRSk7CisrCisrICAvKiBBc2sgbmVpZ2hib3IgKi8KKysgIGlm
IChkaXJlY3Rpb24gPT0gR1NUX1BBRF9TUkMpCisrICAgIGl0ID0gZ3N0X2VsZW1lbnRfaXRlcmF0
ZV9zcmNfcGFkcyAoZWxlbWVudCk7CisrICBlbHNlCisrICAgIGl0ID0gZ3N0X2VsZW1lbnRfaXRl
cmF0ZV9zaW5rX3BhZHMgKGVsZW1lbnQpOworKworKyAgd2hpbGUgKGdzdF9pdGVyYXRvcl9mb2xk
IChpdCwgZnVuYywgJnJlcywgcXVlcnkpID09IEdTVF9JVEVSQVRPUl9SRVNZTkMpCisrICAgIGdz
dF9pdGVyYXRvcl9yZXN5bmMgKGl0KTsKKysKKysgIGdzdF9pdGVyYXRvcl9mcmVlIChpdCk7Cisr
CisrICByZXR1cm4gZ192YWx1ZV9nZXRfYm9vbGVhbiAoJnJlcyk7CisrfQorKworK3N0YXRpYyB2
b2lkCisrZ3N0X3F0ZGVtdXhfcmVxdWVzdF9wcm90ZWN0aW9uX2NvbnRleHQgKEdzdFFURGVtdXgg
KiBxdGRlbXV4LAorKyAgICBRdERlbXV4U3RyZWFtICogc3RyZWFtKQorK3sKKysgIEdzdFF1ZXJ5
ICpxdWVyeTsKKysgIEdzdENvbnRleHQgKmN0eHQ7CisrICBHc3RFbGVtZW50ICplbGVtZW50ID0g
R1NUX0VMRU1FTlQgKHF0ZGVtdXgpOworKyAgR3N0U3RydWN0dXJlICpzdDsKKysgIGdjaGFyICoq
ZmlsdGVyZWRfc3lzX2lkczsKKysgIEdWYWx1ZSBldmVudF9saXN0ID0gR19WQUxVRV9JTklUOwor
KyAgR0xpc3QgKndhbGs7CisrCisrICAvKiAxLiBDaGVjayBpZiB3ZSBhbHJlYWR5IGhhdmUgdGhl
IGNvbnRleHQuICovCisrICBpZiAocXRkZW11eC0+cHJlZmVycmVkX3Byb3RlY3Rpb25fc3lzdGVt
X2lkICE9IE5VTEwpIHsKKysgICAgR1NUX0xPR19PQkpFQ1QgKGVsZW1lbnQsCisrICAgICAgICAi
YWxyZWFkeSBoYXZlIHRoZSBwcm90ZWN0aW9uIGNvbnRleHQsIG5vIG5lZWQgdG8gcmVxdWVzdCBp
dCBhZ2FpbiIpOworKyAgICByZXR1cm47CisrICB9CisrCisrICBnX3B0cl9hcnJheV9hZGQgKHF0
ZGVtdXgtPnByb3RlY3Rpb25fc3lzdGVtX2lkcywgTlVMTCk7CisrICBmaWx0ZXJlZF9zeXNfaWRz
ID0gZ3N0X3Byb3RlY3Rpb25fZmlsdGVyX3N5c3RlbXNfYnlfYXZhaWxhYmxlX2RlY3J5cHRvcnMg
KAorKyAgICAgIChjb25zdCBnY2hhciAqKikgcXRkZW11eC0+cHJvdGVjdGlvbl9zeXN0ZW1faWRz
LT5wZGF0YSk7CisrICBnX3B0cl9hcnJheV9yZW1vdmVfaW5kZXggKHF0ZGVtdXgtPnByb3RlY3Rp
b25fc3lzdGVtX2lkcywKKysgICAgICBxdGRlbXV4LT5wcm90ZWN0aW9uX3N5c3RlbV9pZHMtPmxl
biAtIDEpOworKyAgR1NUX1RSQUNFX09CSkVDVCAocXRkZW11eCwgImRldGVjdGVkICV1IHByb3Rl
Y3Rpb24gc3lzdGVtcywgd2UgaGF2ZSAiCisrICAgICAgImRlY3J5cHRvcnMgZm9yICV1IG9mIHRo
ZW0sIHJ1bm5pbmcgY29udGV4dCByZXF1ZXN0IiwKKysgICAgICBxdGRlbXV4LT5wcm90ZWN0aW9u
X3N5c3RlbV9pZHMtPmxlbiwgZ19zdHJ2X2xlbmd0aCAoZmlsdGVyZWRfc3lzX2lkcykpOworKwor
KyAgaWYgKHN0cmVhbS0+cHJvdGVjdGlvbl9zY2hlbWVfZXZlbnRfcXVldWUubGVuZ3RoKSB7Cisr
ICAgIEdTVF9UUkFDRV9PQkpFQ1QgKHF0ZGVtdXgsICJ1c2luZyBzdHJlYW0gZXZlbnQgcXVldWUs
IGxlbmd0aCAldSIsCisrICAgICAgICBzdHJlYW0tPnByb3RlY3Rpb25fc2NoZW1lX2V2ZW50X3F1
ZXVlLmxlbmd0aCk7CisrICAgIHdhbGsgPSBzdHJlYW0tPnByb3RlY3Rpb25fc2NoZW1lX2V2ZW50
X3F1ZXVlLnRhaWw7CisrICB9IGVsc2UgeworKyAgICBHU1RfVFJBQ0VfT0JKRUNUIChxdGRlbXV4
LCAidXNpbmcgZGVtdXhlciBldmVudCBxdWV1ZSwgbGVuZ3RoICV1IiwKKysgICAgICAgIHF0ZGVt
dXgtPnByb3RlY3Rpb25fZXZlbnRfcXVldWUubGVuZ3RoKTsKKysgICAgd2FsayA9IHF0ZGVtdXgt
PnByb3RlY3Rpb25fZXZlbnRfcXVldWUudGFpbDsKKysgIH0KKysKKysgIGdfdmFsdWVfaW5pdCAo
JmV2ZW50X2xpc3QsIEdTVF9UWVBFX0xJU1QpOworKyAgZm9yICg7IHdhbGs7IHdhbGsgPSBnX2xp
c3RfcHJldmlvdXMgKHdhbGspKSB7CisrICAgIEdWYWx1ZSAqZXZlbnRfdmFsdWUgPSBnX25ldzAg
KEdWYWx1ZSwgMSk7CisrICAgIGdfdmFsdWVfaW5pdCAoZXZlbnRfdmFsdWUsIEdTVF9UWVBFX0VW
RU5UKTsKKysgICAgZ192YWx1ZV9zZXRfYm94ZWQgKGV2ZW50X3ZhbHVlLCB3YWxrLT5kYXRhKTsK
KysgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX2FuZF90YWtlX3ZhbHVlICgmZXZlbnRfbGlzdCwg
ZXZlbnRfdmFsdWUpOworKyAgfQorKworKyAgLyogIDJhKSBRdWVyeSBkb3duc3RyZWFtIHdpdGgg
R1NUX1FVRVJZX0NPTlRFWFQgZm9yIHRoZSBjb250ZXh0IGFuZAorKyAgICogICAgICBjaGVjayBp
ZiBkb3duc3RyZWFtIGFscmVhZHkgaGFzIGEgY29udGV4dCBvZiB0aGUgc3BlY2lmaWMgdHlwZQor
KyAgICogIDJiKSBRdWVyeSB1cHN0cmVhbSBhcyBhYm92ZS4KKysgICAqLworKyAgcXVlcnkgPSBn
c3RfcXVlcnlfbmV3X2NvbnRleHQgKCJkcm0tcHJlZmVycmVkLWRlY3J5cHRpb24tc3lzdGVtLWlk
Iik7CisrICBzdCA9IGdzdF9xdWVyeV93cml0YWJsZV9zdHJ1Y3R1cmUgKHF1ZXJ5KTsKKysgIGdz
dF9zdHJ1Y3R1cmVfc2V0IChzdCwgInRyYWNrLWlkIiwgR19UWVBFX1VJTlQsIHN0cmVhbS0+dHJh
Y2tfaWQsCisrICAgICAgInN0cmVhbS1lbmNyeXB0aW9uLXN5c3RlbXMiLCBHX1RZUEVfU1RSViwg
ZmlsdGVyZWRfc3lzX2lkcywgTlVMTCk7CisrICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAoc3Qs
ICJzdHJlYW0tZW5jcnlwdGlvbi1ldmVudHMiLCAmZXZlbnRfbGlzdCk7CisrICBpZiAoZ3N0X3F0
ZGVtdXhfcnVuX3F1ZXJ5IChlbGVtZW50LCBxdWVyeSwgR1NUX1BBRF9TUkMpKSB7CisrICAgIGdz
dF9xdWVyeV9wYXJzZV9jb250ZXh0IChxdWVyeSwgJmN0eHQpOworKyAgICBHU1RfSU5GT19PQkpF
Q1QgKGVsZW1lbnQsICJmb3VuZCBjb250ZXh0ICglcCkgaW4gZG93bnN0cmVhbSBxdWVyeSIsIGN0
eHQpOworKyAgICBnc3RfZWxlbWVudF9zZXRfY29udGV4dCAoZWxlbWVudCwgY3R4dCk7CisrICB9
IGVsc2UgaWYgKGdzdF9xdGRlbXV4X3J1bl9xdWVyeSAoZWxlbWVudCwgcXVlcnksIEdTVF9QQURf
U0lOSykpIHsKKysgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmY3R4dCk7Cisr
ICAgIEdTVF9JTkZPX09CSkVDVCAoZWxlbWVudCwgImZvdW5kIGNvbnRleHQgKCVwKSBpbiB1cHN0
cmVhbSBxdWVyeSIsIGN0eHQpOworKyAgICBnc3RfZWxlbWVudF9zZXRfY29udGV4dCAoZWxlbWVu
dCwgY3R4dCk7CisrICB9IGVsc2UgeworKyAgICAvKiAzKSBQb3N0IGEgR1NUX01FU1NBR0VfTkVF
RF9DT05URVhUIG1lc3NhZ2Ugb24gdGhlIGJ1cyB3aXRoCisrICAgICAqICAgIHRoZSByZXF1aXJl
ZCBjb250ZXh0IHR5cGUgYW5kIGFmdGVyd2FyZHMgY2hlY2sgaWYgYQorKyAgICAgKiAgICB1c2Fi
bGUgY29udGV4dCB3YXMgc2V0IG5vdyBhcyBpbiAxKS4gVGhlIG1lc3NhZ2UgY291bGQKKysgICAg
ICogICAgYmUgaGFuZGxlZCBieSB0aGUgcGFyZW50IGJpbnMgb2YgdGhlIGVsZW1lbnQgYW5kIHRo
ZQorKyAgICAgKiAgICBhcHBsaWNhdGlvbi4KKysgICAgICovCisrICAgIEdzdE1lc3NhZ2UgKm1z
ZzsKKysKKysgICAgR1NUX0lORk9fT0JKRUNUIChlbGVtZW50LCAicG9zdGluZyBuZWVkIGNvbnRl
eHQgbWVzc2FnZSIpOworKyAgICBtc2cgPSBnc3RfbWVzc2FnZV9uZXdfbmVlZF9jb250ZXh0IChH
U1RfT0JKRUNUX0NBU1QgKGVsZW1lbnQpLAorKyAgICAgICAgImRybS1wcmVmZXJyZWQtZGVjcnlw
dGlvbi1zeXN0ZW0taWQiKTsKKysgICAgc3QgPSAoR3N0U3RydWN0dXJlICopIGdzdF9tZXNzYWdl
X2dldF9zdHJ1Y3R1cmUgKG1zZyk7CisrICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzdCwgInRyYWNr
LWlkIiwgR19UWVBFX1VJTlQsIHN0cmVhbS0+dHJhY2tfaWQsCisrICAgICAgICAic3RyZWFtLWVu
Y3J5cHRpb24tc3lzdGVtcyIsIEdfVFlQRV9TVFJWLCBmaWx0ZXJlZF9zeXNfaWRzLCBOVUxMKTsK
KysgICAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFsdWUgKHN0LCAic3RyZWFtLWVuY3J5cHRpb24tZXZl
bnRzIiwgJmV2ZW50X2xpc3QpOworKyAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKGVsZW1l
bnQsIG1zZyk7CisrICB9CisrCisrICBnX3N0cmZyZWV2IChmaWx0ZXJlZF9zeXNfaWRzKTsKKysg
IGdfdmFsdWVfdW5zZXQgKCZldmVudF9saXN0KTsKKysgIGdzdF9xdWVyeV91bnJlZiAocXVlcnkp
OworK30KKysKKytzdGF0aWMgZ2Jvb2xlYW4KKyBnc3RfcXRkZW11eF9jb25maWd1cmVfcHJvdGVj
dGVkX2NhcHMgKEdzdFFURGVtdXggKiBxdGRlbXV4LAorICAgICBRdERlbXV4U3RyZWFtICogc3Ry
ZWFtKQorIHsKKyAgIEdzdFN0cnVjdHVyZSAqczsKKy0gIGNvbnN0IGdjaGFyICpzZWxlY3RlZF9z
eXN0ZW07CisrICBjb25zdCBnY2hhciAqc2VsZWN0ZWRfc3lzdGVtID0gTlVMTDsKKyAKKyAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsIChxdGRlbXV4ICE9IE5VTEwsIEZBTFNFKTsKKyAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsIChzdHJlYW0gIT0gTlVMTCwgRkFMU0UpOworQEAgLTc3MDgsMTcgKzc4NzIs
NDEgQEAgZ3N0X3F0ZGVtdXhfY29uZmlndXJlX3Byb3RlY3RlZF9jYXBzIChHc3RRVERlbXV4ICog
cXRkZW11eCwKKyAgICAgICAgICJjZW5jIHByb3RlY3Rpb24gc3lzdGVtIGluZm9ybWF0aW9uIGhh
cyBiZWVuIGZvdW5kIik7CisgICAgIHJldHVybiBGQUxTRTsKKyAgIH0KKy0gIGdfcHRyX2FycmF5
X2FkZCAocXRkZW11eC0+cHJvdGVjdGlvbl9zeXN0ZW1faWRzLCBOVUxMKTsKKy0gIHNlbGVjdGVk
X3N5c3RlbSA9IGdzdF9wcm90ZWN0aW9uX3NlbGVjdF9zeXN0ZW0gKChjb25zdCBnY2hhciAqKikK
Ky0gICAgICBxdGRlbXV4LT5wcm90ZWN0aW9uX3N5c3RlbV9pZHMtPnBkYXRhKTsKKy0gIGdfcHRy
X2FycmF5X3JlbW92ZV9pbmRleCAocXRkZW11eC0+cHJvdGVjdGlvbl9zeXN0ZW1faWRzLAorLSAg
ICAgIHF0ZGVtdXgtPnByb3RlY3Rpb25fc3lzdGVtX2lkcy0+bGVuIC0gMSk7CisrCisrICBnc3Rf
cXRkZW11eF9yZXF1ZXN0X3Byb3RlY3Rpb25fY29udGV4dCAocXRkZW11eCwgc3RyZWFtKTsKKysg
IGlmIChxdGRlbXV4LT5wcmVmZXJyZWRfcHJvdGVjdGlvbl9zeXN0ZW1faWQgIT0gTlVMTCkgewor
KyAgICBjb25zdCBnY2hhciAqcHJlZmVycmVkX3N5c3RlbV9hcnJheVtdID0KKysgICAgICAgIHsg
cXRkZW11eC0+cHJlZmVycmVkX3Byb3RlY3Rpb25fc3lzdGVtX2lkLCBOVUxMIH07CisrCisrICAg
IHNlbGVjdGVkX3N5c3RlbSA9IGdzdF9wcm90ZWN0aW9uX3NlbGVjdF9zeXN0ZW0gKHByZWZlcnJl
ZF9zeXN0ZW1fYXJyYXkpOworKworKyAgICBpZiAoc2VsZWN0ZWRfc3lzdGVtKSB7CisrICAgICAg
R1NUX1RSQUNFX09CSkVDVCAocXRkZW11eCwgInNlbGVjdGVkIHByZWZlcnJlZCBzeXN0ZW0gJXMi
LAorKyAgICAgICAgICBxdGRlbXV4LT5wcmVmZXJyZWRfcHJvdGVjdGlvbl9zeXN0ZW1faWQpOwor
KyAgICB9IGVsc2UgeworKyAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAocXRkZW11eCwgImNvdWxk
IG5vdCBzZWxlY3QgcHJlZmVycmVkIHN5c3RlbSAlcyAiCisrICAgICAgICAgICJiZWNhdXNlIHRo
ZXJlIGlzIG5vIGF2YWlsYWJsZSBkZWNyeXB0b3IiLAorKyAgICAgICAgICBxdGRlbXV4LT5wcmVm
ZXJyZWRfcHJvdGVjdGlvbl9zeXN0ZW1faWQpOworKyAgICB9CisrICB9CisrCisrICBpZiAoIXNl
bGVjdGVkX3N5c3RlbSkgeworKyAgICBnX3B0cl9hcnJheV9hZGQgKHF0ZGVtdXgtPnByb3RlY3Rp
b25fc3lzdGVtX2lkcywgTlVMTCk7CisrICAgIHNlbGVjdGVkX3N5c3RlbSA9IGdzdF9wcm90ZWN0
aW9uX3NlbGVjdF9zeXN0ZW0gKChjb25zdCBnY2hhciAqKikKKysgICAgICAgIHF0ZGVtdXgtPnBy
b3RlY3Rpb25fc3lzdGVtX2lkcy0+cGRhdGEpOworKyAgICBnX3B0cl9hcnJheV9yZW1vdmVfaW5k
ZXggKHF0ZGVtdXgtPnByb3RlY3Rpb25fc3lzdGVtX2lkcywKKysgICAgICAgIHF0ZGVtdXgtPnBy
b3RlY3Rpb25fc3lzdGVtX2lkcy0+bGVuIC0gMSk7CisrICB9CisrCisgICBpZiAoIXNlbGVjdGVk
X3N5c3RlbSkgeworICAgICBHU1RfRVJST1JfT0JKRUNUIChxdGRlbXV4LCAic3RyZWFtIGlzIHBy
b3RlY3RlZCwgYnV0IG5vICIKKyAgICAgICAgICJzdWl0YWJsZSBkZWNyeXB0b3IgZWxlbWVudCBo
YXMgYmVlbiBmb3VuZCIpOworICAgICByZXR1cm4gRkFMU0U7CisgICB9CisgCisrICBHU1RfREVC
VUdfT0JKRUNUIChxdGRlbXV4LCAic2VsZWN0ZWQgcHJvdGVjdGlvbiBzeXN0ZW0gaXMgJXMiLAor
KyAgICAgIHNlbGVjdGVkX3N5c3RlbSk7CisrCisgICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVy
ZSAoc3RyZWFtLT5jYXBzLCAwKTsKKyAgIGlmICghZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZSAocywg
ImFwcGxpY2F0aW9uL3gtY2VuYyIpKSB7CisgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLAorZGlm
ZiAtLWdpdCBhL2dzdC9pc29tcDQvcXRkZW11eC5oIGIvZ3N0L2lzb21wNC9xdGRlbXV4LmgKK2lu
ZGV4IGViZDcyNTg3MS4uYjNkNjRhNGU4IDEwMDY0NAorLS0tIGEvZ3N0L2lzb21wNC9xdGRlbXV4
LmgKKysrKyBiL2dzdC9pc29tcDQvcXRkZW11eC5oCitAQCAtMTU0LDYgKzE1NCw3IEBAIHN0cnVj
dCBfR3N0UVREZW11eCB7CisgICBndWludDY0IGNlbmNfYXV4X2luZm9fb2Zmc2V0OworICAgZ3Vp
bnQ4ICpjZW5jX2F1eF9pbmZvX3NpemVzOworICAgZ3VpbnQzMiBjZW5jX2F1eF9zYW1wbGVfY291
bnQ7CisrICBnY2hhciAqcHJlZmVycmVkX3Byb3RlY3Rpb25fc3lzdGVtX2lkOworIAorIAorICAg
LyoKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL1Rvb2xzL2dzdHJlYW1lci9wYXRjaGVzL2dz
dC1wbHVnaW5zLWdvb2QtMDAwOC1xdGRlbXV4LWFsc28tcHVzaC1idWZmZXJzLXdpdGhvdXQtZW5j
cnlwdGlvbi1pbmZvLWluLnBhdGNoIGIvVG9vbHMvZ3N0cmVhbWVyL3BhdGNoZXMvZ3N0LXBsdWdp
bnMtZ29vZC0wMDA4LXF0ZGVtdXgtYWxzby1wdXNoLWJ1ZmZlcnMtd2l0aG91dC1lbmNyeXB0aW9u
LWluZm8taW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUwMjFjY2JjMDRlMTBjNjRlYjFlNGFiOTY2OTNi
YmYwODg4MDk2ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2dzdHJlYW1lci9wYXRjaGVzL2dz
dC1wbHVnaW5zLWdvb2QtMDAwOC1xdGRlbXV4LWFsc28tcHVzaC1idWZmZXJzLXdpdGhvdXQtZW5j
cnlwdGlvbi1pbmZvLWluLnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK0Zyb20gNzg1NTliYzVkYjM0
OTVmMTJiMDI4NGU0YmU1ZmM4YmZjZDcwNDFlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy
b206ID0/VVRGLTg/cT9FbnJpcXVlPTIwT2NhPUMzPUIxYT0yMEdvbno9QzM9QTFsZXo/PSA8ZW9j
YW5oYUBpZ2FsaWEuY29tPgorRGF0ZTogTW9uLCAyNCBBcHIgMjAxNyAxNzoyMjowMiArMDAwMAor
U3ViamVjdDogW1BBVENIXSBxdGRlbXV4OiBhbHNvIHB1c2ggYnVmZmVycyB3aXRob3V0IGVuY3J5
cHRpb24gaW5mbyBpbnN0ZWFkIG9mCisgZHJvcHBpbmcgdGhlbQorCistLS0KKyBnc3QvaXNvbXA0
L3F0ZGVtdXguYyB8IDI2ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5n
ZWQsIDEyIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ3N0
L2lzb21wNC9xdGRlbXV4LmMgYi9nc3QvaXNvbXA0L3F0ZGVtdXguYworaW5kZXggNmIwYzgyMC4u
N2I3MTIzNyAxMDA2NDQKKy0tLSBhL2dzdC9pc29tcDQvcXRkZW11eC5jCisrKysgYi9nc3QvaXNv
bXA0L3F0ZGVtdXguYworQEAgLTU0MjEsMjAgKzU0MjEsMTggQEAgZ3N0X3F0ZGVtdXhfZGVjb3Jh
dGVfYW5kX3B1c2hfYnVmZmVyIChHc3RRVERlbXV4ICogcXRkZW11eCwKKyAgICAgICAgIGdzdF9w
YWRfcHVzaF9ldmVudCAoc3RyZWFtLT5wYWQsIGV2ZW50KTsKKyAgICAgfQorIAorLSAgICBpZiAo
aW5mby0+Y3J5cHRvX2luZm8gPT0gTlVMTCkgeworLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHF0
ZGVtdXgsICJjZW5jIG1ldGFkYXRhIGhhc24ndCBiZWVuIHBhcnNlZCB5ZXQiKTsKKy0gICAgICBn
c3RfYnVmZmVyX3VucmVmIChidWYpOworLSAgICAgIGdvdG8gZXhpdDsKKy0gICAgfQorLQorLSAg
ICBpbmRleCA9IHN0cmVhbS0+c2FtcGxlX2luZGV4IC0gKHN0cmVhbS0+bl9zYW1wbGVzIC0gaW5m
by0+Y3J5cHRvX2luZm8tPmxlbik7CistICAgIGlmIChHX0xJS0VMWSAoaW5kZXggPj0gMCAmJiBp
bmRleCA8IGluZm8tPmNyeXB0b19pbmZvLT5sZW4pKSB7CistICAgICAgLyogc3RlYWwgc3RydWN0
dXJlIGZyb20gYXJyYXkgKi8KKy0gICAgICBjcnlwdG9faW5mbyA9IGdfcHRyX2FycmF5X2luZGV4
IChpbmZvLT5jcnlwdG9faW5mbywgaW5kZXgpOworLSAgICAgIGdfcHRyX2FycmF5X2luZGV4IChp
bmZvLT5jcnlwdG9faW5mbywgaW5kZXgpID0gTlVMTDsKKy0gICAgICBHU1RfTE9HX09CSkVDVCAo
cXRkZW11eCwgImF0dGFjaGluZyBjZW5jIG1ldGFkYXRhIFsldV0iLCBpbmRleCk7CistICAgICAg
aWYgKCFjcnlwdG9faW5mbyB8fCAhZ3N0X2J1ZmZlcl9hZGRfcHJvdGVjdGlvbl9tZXRhIChidWYs
IGNyeXB0b19pbmZvKSkKKy0gICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHF0ZGVtdXgsICJmYWls
ZWQgdG8gYXR0YWNoIGNlbmMgbWV0YWRhdGEgdG8gYnVmZmVyIik7CisrICAgIGlmIChpbmZvLT5j
cnlwdG9faW5mbyA9PSBOVUxMKQorKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHF0ZGVtdXgsICJj
ZW5jIG1ldGFkYXRhIGhhc24ndCBiZWVuIHBhcnNlZCB5ZXQsIHB1c2hpbmcgYnVmZmVyIGFzIGlm
IGl0IHdhc24ndCBlbmNyeXB0ZWQiKTsKKysgICAgZWxzZSB7CisrICAgICAgaW5kZXggPSBzdHJl
YW0tPnNhbXBsZV9pbmRleCAtIChzdHJlYW0tPm5fc2FtcGxlcyAtIGluZm8tPmNyeXB0b19pbmZv
LT5sZW4pOworKyAgICAgIGlmIChHX0xJS0VMWSAoaW5kZXggPj0gMCAmJiBpbmRleCA8IGluZm8t
PmNyeXB0b19pbmZvLT5sZW4pKSB7CisrICAgICAgICAvKiBzdGVhbCBzdHJ1Y3R1cmUgZnJvbSBh
cnJheSAqLworKyAgICAgICAgY3J5cHRvX2luZm8gPSBnX3B0cl9hcnJheV9pbmRleCAoaW5mby0+
Y3J5cHRvX2luZm8sIGluZGV4KTsKKysgICAgICAgIGdfcHRyX2FycmF5X2luZGV4IChpbmZvLT5j
cnlwdG9faW5mbywgaW5kZXgpID0gTlVMTDsKKysgICAgICAgIEdTVF9MT0dfT0JKRUNUIChxdGRl
bXV4LCAiYXR0YWNoaW5nIGNlbmMgbWV0YWRhdGEgWyV1XSIsIGluZGV4KTsKKysgICAgICAgIGlm
ICghY3J5cHRvX2luZm8gfHwgIWdzdF9idWZmZXJfYWRkX3Byb3RlY3Rpb25fbWV0YSAoYnVmLCBj
cnlwdG9faW5mbykpCisrICAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHF0ZGVtdXgsICJmYWls
ZWQgdG8gYXR0YWNoIGNlbmMgbWV0YWRhdGEgdG8gYnVmZmVyIik7CisrICAgICAgfQorICAgICB9
CisgICB9CisgCistLSAKKzEuOC4zLjIKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3N0cmVhbWVyL3Bh
dGNoZXMvZ3N0cmVhbWVyLTAwMDEtcHJvdGVjdGlvbi1hZGRlZC1mdW5jdGlvbi10by1maWx0ZXIt
c3lzdGVtLWlkcy5wYXRjaCBiL1Rvb2xzL2dzdHJlYW1lci9wYXRjaGVzL2dzdHJlYW1lci0wMDAx
LXByb3RlY3Rpb24tYWRkZWQtZnVuY3Rpb24tdG8tZmlsdGVyLXN5c3RlbS1pZHMucGF0Y2gKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTcyZWY2YzEzMmM2MzE0MDIyNDRmNzI2MjczMGQ2ZGI0MTM4MWQ4YQotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL2dzdHJlYW1lci9wYXRjaGVzL2dzdHJlYW1lci0wMDAxLXByb3Rl
Y3Rpb24tYWRkZWQtZnVuY3Rpb24tdG8tZmlsdGVyLXN5c3RlbS1pZHMucGF0Y2gKQEAgLTAsMCAr
MSw3NyBAQAorRnJvbSA3NzcyZWIzNTA1OTE2ODJiNmEzMTVjOGE4N2E1ODEzMWY3MzFmMWQ0IE1v
biBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgPGNh
bHZhcmlzQGlnYWxpYS5jb20+CitEYXRlOiBXZWQsIDE5IE9jdCAyMDE2IDE2OjQ0OjE2ICswMjAw
CitTdWJqZWN0OiBbUEFUQ0hdIHByb3RlY3Rpb246IGFkZGVkIGZ1bmN0aW9uIHRvIGZpbHRlciBz
eXN0ZW0gaWRzCisKK2dzdF9wcm90ZWN0aW9uX2ZpbHRlcl9zeXN0ZW1zX2J5X2F2YWlsYWJsZV9k
ZWNyeXB0b3JzIHRha2VzIGFuIGFycmF5IG9mCitzdHJpbmdzIGFuZCByZXR1cm5zIGEgbmV3IGFy
cmF5IG9mIHN0cmluZ3MgZmlsdGVyZWQgYnkgdGhlIGF2YWlibGUKK2RlY3J5cHRvcnMgZm9yIHRo
ZW0gc28gdGhlIG9uZXMgeW91IGdldCBhcmUgdGhlIG9uZXMgdGhhdCB5b3Ugc2hvdWxkIGJlCith
YmxlIHRvIGRlY3J5cHQuCistLS0KKyBnc3QvZ3N0cHJvdGVjdGlvbi5jIHwgMzYgKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrCisgZ3N0L2dzdHByb3RlY3Rpb24uaCB8ICAyICsr
CisgMiBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nc3Qv
Z3N0cHJvdGVjdGlvbi5jIGIvZ3N0L2dzdHByb3RlY3Rpb24uYworaW5kZXggOGVlNTJlYS4uMmQ3
ZTVlMCAxMDA2NDQKKy0tLSBhL2dzdC9nc3Rwcm90ZWN0aW9uLmMKKysrKyBiL2dzdC9nc3Rwcm90
ZWN0aW9uLmMKK0BAIC0xOTEsNiArMTkxLDQyIEBAIGdzdF9wcm90ZWN0aW9uX3NlbGVjdF9zeXN0
ZW0gKGNvbnN0IGdjaGFyICoqIHN5c3RlbV9pZGVudGlmaWVycykKKyAgIHJldHVybiByZXR2YWw7
CisgfQorIAorK2djaGFyICoqCisrZ3N0X3Byb3RlY3Rpb25fZmlsdGVyX3N5c3RlbXNfYnlfYXZh
aWxhYmxlX2RlY3J5cHRvcnMgKGNvbnN0IGdjaGFyICoqCisrICAgIHN5c3RlbV9pZGVudGlmaWVy
cykKKyt7CisrICBHTGlzdCAqZGVjcnlwdG9ycywgKndhbGs7CisrICBnY2hhciAqKnJldHZhbDsK
KysgIGd1aW50IGkgPSAwLCBkZWNyeXB0b3JzX251bWJlcjsKKysKKysgIGRlY3J5cHRvcnMgPQor
KyAgICAgIGdzdF9lbGVtZW50X2ZhY3RvcnlfbGlzdF9nZXRfZWxlbWVudHMgKEdTVF9FTEVNRU5U
X0ZBQ1RPUllfVFlQRV9ERUNSWVBUT1IsCisrICAgICAgR1NUX1JBTktfTUFSR0lOQUwpOworKwor
KyAgZGVjcnlwdG9yc19udW1iZXIgPSBnX2xpc3RfbGVuZ3RoIChkZWNyeXB0b3JzKTsKKysgIHJl
dHZhbCA9IGdfbmV3IChnY2hhciAqLCBkZWNyeXB0b3JzX251bWJlciArIDEpOworKworKyAgR1NU
X1RSQUNFICgiZm91bmQgJXUgZGVjcnl0b3JzIiwgZGVjcnlwdG9yc19udW1iZXIpOworKworKyAg
Zm9yICh3YWxrID0gZGVjcnlwdG9yczsgd2Fsazsgd2FsayA9IGdfbGlzdF9uZXh0ICh3YWxrKSkg
eworKyAgICBHc3RFbGVtZW50RmFjdG9yeSAqZmFjdCA9IChHc3RFbGVtZW50RmFjdG9yeSAqKSB3
YWxrLT5kYXRhOworKworKyAgICBjb25zdCBjaGFyICpmb3VuZF9zeXNfaWQgPQorKyAgICAgICAg
Z3N0X3Byb3RlY3Rpb25fZmFjdG9yeV9jaGVjayAoZmFjdCwgc3lzdGVtX2lkZW50aWZpZXJzKTsK
KysgICAgR1NUX1RSQUNFICgiZmFjdG9yeSAlcyBpcyB2YWxpZCBmb3IgJXMiLCBHU1RfT0JKRUNU
X05BTUUgKGZhY3QpLAorKyAgICAgICAgZm91bmRfc3lzX2lkKTsKKysKKysgICAgaWYgKGZvdW5k
X3N5c19pZCkgeworKyAgICAgIHJldHZhbFtpKytdID0gZ19zdHJkdXAgKGZvdW5kX3N5c19pZCk7
CisrICAgIH0KKysgIH0KKysgIHJldHZhbFtpXSA9IE5VTEw7CisrCisrICBnc3RfcGx1Z2luX2Zl
YXR1cmVfbGlzdF9mcmVlIChkZWNyeXB0b3JzKTsKKysKKysgIHJldHVybiByZXR2YWw7CisrfQor
KworIHN0YXRpYyBjb25zdCBnY2hhciAqCisgZ3N0X3Byb3RlY3Rpb25fZmFjdG9yeV9jaGVjayAo
R3N0RWxlbWVudEZhY3RvcnkgKiBmYWN0LAorICAgICBjb25zdCBnY2hhciAqKiBzeXN0ZW1faWRl
bnRpZmllcnMpCitkaWZmIC0tZ2l0IGEvZ3N0L2dzdHByb3RlY3Rpb24uaCBiL2dzdC9nc3Rwcm90
ZWN0aW9uLmgKK2luZGV4IGYyZjU0YzQuLjk1OTc2YzUgMTAwNjQ0CistLS0gYS9nc3QvZ3N0cHJv
dGVjdGlvbi5oCisrKysgYi9nc3QvZ3N0cHJvdGVjdGlvbi5oCitAQCAtNjYsNiArNjYsOCBAQCBH
c3RQcm90ZWN0aW9uTWV0YSAqZ3N0X2J1ZmZlcl9hZGRfcHJvdGVjdGlvbl9tZXRhIChHc3RCdWZm
ZXIgKiBidWZmZXIsCisgICAgIEdzdFN0cnVjdHVyZSAqIGluZm8pOworIAorIGNvbnN0IGdjaGFy
ICpnc3RfcHJvdGVjdGlvbl9zZWxlY3Rfc3lzdGVtIChjb25zdCBnY2hhciAqKiBzeXN0ZW1faWRl
bnRpZmllcnMpOworK2djaGFyICoqIGdzdF9wcm90ZWN0aW9uX2ZpbHRlcl9zeXN0ZW1zX2J5X2F2
YWlsYWJsZV9kZWNyeXB0b3JzICgKKysgICAgY29uc3QgZ2NoYXIgKiogc3lzdGVtX2lkZW50aWZp
ZXJzKTsKKyAKKyBHX0VORF9ERUNMUworICNlbmRpZiAvKiBfX0dTVF9QUk9URUNUSU9OX01FVEFf
SF9fICovCistLSAKKzIuMTAuMgorCmRpZmYgLS1naXQgYS9Ub29scy9nc3RyZWFtZXIvcGF0Y2hl
cy9vcGVuaDI2NC1jb25maWd1cmUucGF0Y2ggYi9Ub29scy9nc3RyZWFtZXIvcGF0Y2hlcy9vcGVu
aDI2NC1jb25maWd1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2JmMWJkNWExZWEwYzk0MDZhYTQxMDI2
N2ZkOGZmOTRiZDJlMjkzYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2dzdHJlYW1lci9wYXRj
aGVzL29wZW5oMjY0LWNvbmZpZ3VyZS5wYXRjaApAQCAtMCwwICsxLDEyIEBACistLS0gL2Rldi9u
dWxsCTIwMTUtMDYtMDUgMTU6MjA6MzQuMDAwMDAwMDAwICsxMDAwCisrKysgcHNldWRvLWNvbmZp
Z3VyZQkyMDE1LTA2LTA1IDE1OjIwOjM3LjAwMDAwMDAwMCArMTAwMAorQEAgLTAsMCArMSw4IEBA
CisrIyEvYmluL3NoCisrCisrWD1NYWtlZmlsZQorK3NlZCAtZSAiczpeUFJFRklYPS4qOlBSRUZJ
WD0kSkhCVUlMRF9QUkVGSVg6IiAke1h9ID4gJHtYfS50bXAgJiYgbXYgJHtYfS50bXAgJHtYfQor
K3NlZCAtZSAiczpeU0hBUkVETElCX0RJUj0uKjpTSEFSRURMSUJfRElSPSRDTUFLRV9MSUJSQVJZ
X1BBVEg6IiAke1h9ID4gJHtYfS50bXAgJiYgbXYgJHtYfS50bXAgJHtYfQorKworK1g9YnVpbGQv
eDg2LWNvbW1vbi5taworK3NlZCAtZSAiczpeQVNNID0uKjpBU00gPSB5YXNtOiIgJFggPiAke1h9
LnRtcCAmJiBtdiAke1h9LnRtcCAkWAorCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvamhidWlsZC5t
b2R1bGVzIGIvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwppbmRleCBlOTMxNzMwZGJkNTkxN2Rl
N2Q4M2YyZjZjNWI1MDIxYWM0MTQwMmIzLi5kZjY1NGVlOWE4ZDQ2NjE3ODY2MTM5MzFmNzEzYjYx
Y2MyNTQ0YWY5IDEwMDY0NAotLS0gYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCisrKyBiL1Rv
b2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKQEAgLTMsNiArMyw4IEBACiA8P3htbC1zdHlsZXNoZWV0
IHR5cGU9InRleHQveHNsIiBocmVmPSJtb2R1bGVzZXQueHNsIj8+CiA8bW9kdWxlc2V0PgogCisg
IDxpbmNsdWRlIGhyZWY9Ii4uL2dzdHJlYW1lci9qaGJ1aWxkLm1vZHVsZXMiLz4KKwogICA8bWV0
YW1vZHVsZSBpZD0id2Via2l0Z3RrLXRlc3RpbmctZGVwZW5kZW5jaWVzIj4KICAgICA8ZGVwZW5k
ZW5jaWVzPgogICAgICAgPGRlcCBwYWNrYWdlPSJjYWlybyIvPgpAQCAtMjEsMTEgKzIzLDcgQEAK
ICAgICAgIDxkZXAgcGFja2FnZT0iaWN1Ii8+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImxpYnNvdXAi
Lz4KICAgICAgIDxkZXAgcGFja2FnZT0iYXRrIi8+Ci0gICAgICA8ZGVwIHBhY2thZ2U9ImdzdHJl
YW1lciIvPgotICAgICAgPGRlcCBwYWNrYWdlPSJnc3QtcGx1Z2lucy1iYXNlIi8+Ci0gICAgICA8
ZGVwIHBhY2thZ2U9ImdzdC1wbHVnaW5zLWdvb2QiLz4KLSAgICAgIDxkZXAgcGFja2FnZT0iZ3N0
LXBsdWdpbnMtYmFkIi8+Ci0gICAgICA8ZGVwIHBhY2thZ2U9ImdzdC1saWJhdiIvPgorICAgICAg
PGRlcCBwYWNrYWdlPSJ3ZWJraXQtZ3N0cmVhbWVyLXRlc3RpbmctZGVwZW5kZW5jaWVzIi8+CiAg
ICAgICA8ZGVwIHBhY2thZ2U9Im9wZW53ZWJydGMiLz4KICAgICAgIDxkZXAgcGFja2FnZT0icGFu
Z28iLz4KICAgICAgIDxkZXAgcGFja2FnZT0ibGx2bSIvPgpAQCAtNjQsOCArNjIsNiBAQAogICAg
ICAgaHJlZj0iaHR0cDovL3hvcmcuZnJlZWRlc2t0b3Aub3JnIi8+CiAgIDxyZXBvc2l0b3J5IHR5
cGU9InRhcmJhbGwiIG5hbWU9InhtbHNvZnQub3JnIgogICAgICAgaHJlZj0iaHR0cDovL3htbHNv
ZnQub3JnIi8+Ci0gIDxyZXBvc2l0b3J5IHR5cGU9InRhcmJhbGwiIG5hbWU9ImdzdHJlYW1lciIK
LSAgICAgIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8iLz4KICAg
PHJlcG9zaXRvcnkgdHlwZT0idGFyYmFsbCIgbmFtZT0ic2F2YW5uYWguZ251Lm9yZyIKICAgICAg
IGhyZWY9Imh0dHA6Ly9kb3dubG9hZC5zYXZhbm5haC5nbnUub3JnL3JlbGVhc2VzLyIvPgogICA8
cmVwb3NpdG9yeSB0eXBlPSJnaXQiIG5hbWU9ImZyZWVkZXNrdG9wLWdpdCIKQEAgLTgwLDggKzc2
LDYgQEAKICAgICAgIGhyZWY9Imh0dHA6Ly9sbHZtLm9yZyIvPgogICA8cmVwb3NpdG9yeSB0eXBl
PSJ0YXJiYWxsIiBuYW1lPSJ3ZWJraXRndGstamhidWlsZC1taXJyb3IiCiAgICAgICBocmVmPSJo
dHRwOi8vd2Via2l0Z3RrLm9yZy9qaGJ1aWxkX21pcnJvci8iLz4KLSAgPHJlcG9zaXRvcnkgdHlw
ZT0idGFyYmFsbCIgbmFtZT0iZG93bmxvYWRzLndlYm1wcm9qZWN0Lm9yZyIKLSAgICAgIGhyZWY9
Imh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYm0vIi8+CiAgIDxy
ZXBvc2l0b3J5IHR5cGU9InRhcmJhbGwiIG5hbWU9ImdudXBnLm9yZyIKICAgICAgIGhyZWY9Imh0
dHBzOi8vd3d3LmdudXBnLm9yZy9mdHAvZ2NyeXB0LyIvPgogCkBAIC0zMTAsNzUgKzMwNCw2IEBA
CiAgICAgICAgICAgICBtZDVzdW09IjljMGNmZWYyODVkNWM0YTVjODBkMDA5MDRkZGFiMzgwIi8+
CiAgIDwvYXV0b3Rvb2xzPgogCi0gIDxhdXRvdG9vbHMgaWQ9ImdzdHJlYW1lciIgYXV0b2dlbi1z
aD0iY29uZmlndXJlIiBhdXRvZ2VuYXJncz0iLS1kaXNhYmxlLWd0ay1kb2MiPgotICAgIDxpZiBj
b25kaXRpb24tc2V0PSJtYWNvcyI+Ci0gICAgICA8YXV0b2dlbmFyZ3MgdmFsdWU9Ii0tZGlzYWJs
ZS1pbnRyb3NwZWN0aW9uIi8+Ci0gICAgPC9pZj4KLSAgICA8ZGVwZW5kZW5jaWVzPgotICAgICAg
PGRlcCBwYWNrYWdlPSJvcmMiLz4KLSAgICA8L2RlcGVuZGVuY2llcz4KLSAgICA8YnJhbmNoIG1v
ZHVsZT0iZ3N0cmVhbWVyL2dzdHJlYW1lci0ke3ZlcnNpb259LnRhci54eiIgdmVyc2lvbj0iMS4x
MC41IgotICAgICAgICAgICAgcmVwbz0iZ3N0cmVhbWVyIgotICAgICAgICAgICAgaGFzaD0ic2hh
MjU2OmJjMDYyNDM2MDA4MTdmNjM3MDI5ZGEyOWQwODlkNTkwOGQxZDI2NjU0MmY2OGJmNjYyNmEx
MGM1ZjA1ZjFmMWQiPgotICAgICAgPHBhdGNoIGZpbGU9ImdzdHJlYW1lci0wMDAxLXByb3RlY3Rp
b24tYWRkZWQtZnVuY3Rpb24tdG8tZmlsdGVyLXN5c3RlbS1pZHMucGF0Y2giIHN0cmlwPSIxIi8+
Ci0gICAgPC9icmFuY2g+Ci0gIDwvYXV0b3Rvb2xzPgotCi0gIDxhdXRvdG9vbHMgaWQ9ImdzdC1w
bHVnaW5zLWJhc2UiCi0gICAgICAgICAgICAgYXV0b2dlbi1zaD0iY29uZmlndXJlIgotICAgICAg
ICAgICAgIGF1dG9nZW5hcmdzPSItLWRpc2FibGUtZXhhbXBsZXMgLS1kaXNhYmxlLWd0ay1kb2Mi
PgotICAgIDxpZiBjb25kaXRpb24tc2V0PSJtYWNvcyI+Ci0gICAgICA8YXV0b2dlbmFyZ3MgdmFs
dWU9Ii0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uIi8+Ci0gICAgPC9pZj4KLSAgICA8ZGVwZW5kZW5j
aWVzPgotICAgICAgPGRlcCBwYWNrYWdlPSJnc3RyZWFtZXIiLz4KLSAgICA8L2RlcGVuZGVuY2ll
cz4KLSAgICA8YnJhbmNoIG1vZHVsZT0iZ3N0LXBsdWdpbnMtYmFzZS9nc3QtcGx1Z2lucy1iYXNl
LSR7dmVyc2lvbn0udGFyLnh6IiB2ZXJzaW9uPSIxLjEwLjUiCi0gICAgICAgICAgICByZXBvPSJn
c3RyZWFtZXIiCi0gICAgICAgICAgICBoYXNoPSJzaGEyNTY6MWM0MDFhNzliZDFlNDUyMWM2ZWYx
YjY2NTc5YmRkZWRkOTEzNmUxNjRlNTQ3OTJhYWI0YmZjZjM0ODViZjlhNyIvPgotICA8L2F1dG90
b29scz4KLQotICA8YXV0b3Rvb2xzIGlkPSJnc3QtcGx1Z2lucy1nb29kIiBhdXRvZ2VuLXNoPSJj
b25maWd1cmUiIGF1dG9nZW5hcmdzPSItLWRpc2FibGUtZXhhbXBsZXMgLS1kaXNhYmxlLWd0ay1k
b2MiPgotICAgIDxpZiBjb25kaXRpb24tc2V0PSJtYWNvcyI+Ci0gICAgICA8YXV0b2dlbmFyZ3Mg
dmFsdWU9Ii0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uIi8+Ci0gICAgPC9pZj4KLSAgICA8ZGVwZW5k
ZW5jaWVzPgotICAgICAgPGRlcCBwYWNrYWdlPSJnc3QtcGx1Z2lucy1iYXNlIi8+Ci0gICAgICA8
ZGVwIHBhY2thZ2U9ImxpYnZweCIvPgotICAgIDwvZGVwZW5kZW5jaWVzPgotCi0gICAgPGJyYW5j
aCBtb2R1bGU9ImdzdC1wbHVnaW5zLWdvb2QvZ3N0LXBsdWdpbnMtZ29vZC0ke3ZlcnNpb259LnRh
ci54eiIgdmVyc2lvbj0iMS4xMC41IgotICAgICAgICAgICAgcmVwbz0iZ3N0cmVhbWVyIgotICAg
ICAgICAgICAgaGFzaD0ic2hhMjU2OmJlMDUzZjZlZDcxNmVlYjUxN2NlYzE0OGNlYzYzN2NkY2U1
NzFjNmUwNGQ1YzIxNDA5ZTI4NzZmYjc2Yzc2MzkiPgotICAgICAgPHBhdGNoIGZpbGU9ImdzdC1w
bHVnaW5zLWdvb2QtMDAwMy1ydHBiaW4tcmVjZWl2ZS1idW5kbGUtc3VwcG9ydC5wYXRjaCIgc3Ry
aXA9IjEiLz4KLSAgICAgIDxwYXRjaCBmaWxlPSJnc3QtcGx1Z2lucy1nb29kLTAwMDUtc291cGh0
dHBzcmMtY29va2llLWphci1hbmQtY29udGV4dC1xdWVyeS1zdXBwb3J0LnBhdGNoIiBzdHJpcD0i
MSIvPgotICAgICAgPHBhdGNoIGZpbGU9ImdzdC1wbHVnaW5zLWdvb2QtMDAwNi1xdGRlbXV4LWFk
ZC1jb250ZXh0LWZvci1hLXByZWZlcnJlZC1wcm90ZWN0aW9uLnBhdGNoIiBzdHJpcD0iMSIvPgot
ICAgICAgPHBhdGNoIGZpbGU9ImdzdC1wbHVnaW5zLWdvb2QtMDAwOC1xdGRlbXV4LWFsc28tcHVz
aC1idWZmZXJzLXdpdGhvdXQtZW5jcnlwdGlvbi1pbmZvLWluLnBhdGNoIiBzdHJpcD0iMSIvPgot
ICAgIDwvYnJhbmNoPgotICA8L2F1dG90b29scz4KLQotICA8YXV0b3Rvb2xzIGlkPSJnc3QtcGx1
Z2lucy1iYWQiIGF1dG9nZW4tc2g9ImNvbmZpZ3VyZSIgYXV0b2dlbmFyZ3M9Ii0tZGlzYWJsZS1l
eGFtcGxlcyAtLWRpc2FibGUtZ3RrLWRvYyI+Ci0gICAgPGlmIGNvbmRpdGlvbi1zZXQ9Im1hY29z
Ij4KLSAgICAgIDxhdXRvZ2VuYXJncyB2YWx1ZT0iLS1kaXNhYmxlLWludHJvc3BlY3Rpb24iLz4K
LSAgICA8L2lmPgotICAgIDxkZXBlbmRlbmNpZXM+Ci0gICAgICA8ZGVwIHBhY2thZ2U9ImdzdC1w
bHVnaW5zLWJhc2UiLz4KLSAgICAgIDxkZXAgcGFja2FnZT0ib3BlbmgyNjQiLz4KLSAgICA8L2Rl
cGVuZGVuY2llcz4KLSAgICA8YnJhbmNoIG1vZHVsZT0iZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVn
aW5zLWJhZC0ke3ZlcnNpb259LnRhci54eiIgdmVyc2lvbj0iMS4xMC41IgotICAgICAgICAgICAg
cmVwbz0iZ3N0cmVhbWVyIgotICAgICAgICAgICAgaGFzaD0ic2hhMjU2OmM1ODA2MDQwYmI4M2I0
M2JlODZjZTU5MmU2YTE5YzVkODNkNzc3NmY3ZDlmNDM0ZWI0YjkxMWM0ZWZmZjM1NzMiLz4KLSAg
PC9hdXRvdG9vbHM+Ci0KLSAgPGF1dG90b29scyBpZD0iZ3N0LWxpYmF2IiBhdXRvZ2VuLXNoPSJj
b25maWd1cmUiIGF1dG9nZW5hcmdzPSItLXdpdGgtbGliYXYtZXh0cmEtY29uZmlndXJlPSctLWRp
c2FibGUteWFzbScgLS1kaXNhYmxlLWd0ay1kb2MiPgotICAgIDxkZXBlbmRlbmNpZXM+Ci0gICAg
ICA8ZGVwIHBhY2thZ2U9ImdzdC1wbHVnaW5zLWJhc2UiLz4KLSAgICA8L2RlcGVuZGVuY2llcz4K
LSAgICA8YnJhbmNoIG1vZHVsZT0iZ3N0LWxpYmF2L2dzdC1saWJhdi0ke3ZlcnNpb259LnRhci54
eiIgdmVyc2lvbj0iMS4xMC41IgotICAgICAgICAgICAgcmVwbz0iZ3N0cmVhbWVyIgotICAgICAg
ICAgICAgaGFzaD0ic2hhMjU2OmU0ZDJmMzE1ZjQ3OGQ0NzI4MWZiZmRmYmQ1OTBhNjNkMjM3MDRj
YTM3OTExZDcxNDJkNTk5MjYxNmY0YjI4ZDMiLz4KLSAgPC9hdXRvdG9vbHM+Ci0KICAgPGF1dG90
b29scyBpZD0ieHNlcnZlciIgYXV0b2dlbmFyZ3M9Ii0tZGlzYWJsZS14aW5lcmFtYSAtLWVuYWJs
ZS1nbHggLS1lbmFibGUtY29tcG9zaXRlIC0tZGlzYWJsZS14b3JnIC0tZGlzYWJsZS1kbXggLS1k
aXNhYmxlLXhuZXN0IC0tZGlzYWJsZS14cXVhcnR6IC0tZGlzYWJsZS14d2luIC0tZGlzYWJsZS14
ZXBoeXIgLS1kaXNhYmxlLXhmYWtlIC0tZGlzYWJsZS14ZmJkZXYgLS1kaXNhYmxlLWluc3RhbGwt
c2V0dWlkIC0tZGlzYWJsZS11bml0LXRlc3RzIC0tZGlzYWJsZS1wcmVzZW50IC0tZW5hYmxlLXVu
aXgtdHJhbnNwb3J0IC0tZW5hYmxlLXRjcC10cmFuc3BvcnQgLS1kaXNhYmxlLWxvY2FsLXRyYW5z
cG9ydCAtLXdpdGgteGtiLXBhdGg9L3Vzci9zaGFyZS9YMTEveGtiIC0td2l0aC14a2Itb3V0cHV0
PS92YXIvbGliL3hrYiAtLXdpdGgteGtiLWJpbi1kaXJlY3Rvcnk9L3Vzci9iaW4gLS13aXRob3V0
LWR0cmFjZSI+CiAgICAgPGRlcGVuZGVuY2llcz4KICAgICAgIDxkZXAgcGFja2FnZT0icGl4bWFu
Ii8+CkBAIC00NjYsMjEgKzM5MSw2IEBACiAgICAgPGJyYW5jaCByZXBvPSJnaXRodWIuY29tIiBt
b2R1bGU9InNjdHBsYWIvdXNyc2N0cC5naXQiIGNoZWNrb3V0ZGlyPSJ1c3JzY3RwIiB0YWc9IjA3
OGZmMzI1MmY3MzMyN2UwYWMxMWQ2ZmQ1ZWZmNjIwMTFmNjY0NmUiLz4KICAgPC9hdXRvdG9vbHM+
CiAKLSAgPGF1dG90b29scyBpZD0ib3BlbmgyNjQiIHN1cHBvcnRzLW5vbi1zcmNkaXItYnVpbGRz
PSJubyIgYXV0b2dlbi1zaD0icHNldWRvLWNvbmZpZ3VyZSI+Ci0gICAgPGJyYW5jaCBtb2R1bGU9
ImNpc2NvL29wZW5oMjY0L2FyY2hpdmUvdiR7dmVyc2lvbn0udGFyLmd6IiB2ZXJzaW9uPSIxLjUu
MCIKLSAgICAgICAgICAgIGNoZWNrb3V0ZGlyPSJvcGVuaDI2NC0ke3ZlcnNpb259IiByZXBvPSJn
aXRodWItdGFyYmFsbCI+Ci0gICAgICA8cGF0Y2ggZmlsZT0ib3BlbmgyNjQtY29uZmlndXJlLnBh
dGNoIiBzdHJpcD0iMCIvPgotICAgIDwvYnJhbmNoPgotICA8L2F1dG90b29scz4KLQotICA8YXV0
b3Rvb2xzIGlkPSJsaWJ2cHgiCi0gICAgYXV0b2dlbi10ZW1wbGF0ZT0iJShzcmNkaXIpcy9jb25m
aWd1cmUgLS1wcmVmaXg9JShwcmVmaXgpcyAtLWVuYWJsZS1waWMgLS1hcz15YXNtIC0tZGlzYWJs
ZS11bml0LXRlc3RzIC0tc2l6ZS1saW1pdD0xNjM4NHgxNjM4NCAtLWVuYWJsZS1wb3N0cHJvYyAt
LWVuYWJsZS1tdWx0aS1yZXMtZW5jb2RpbmcgLS1lbmFibGUtdGVtcG9yYWwtZGVub2lzaW5nIC0t
ZW5hYmxlLXZwOS10ZW1wb3JhbC1kZW5vaXNpbmcgLS1lbmFibGUtdnA5LXBvc3Rwcm9jIC0tZW5h
YmxlLXNoYXJlZCI+Ci0gICAgPGJyYW5jaCB2ZXJzaW9uPSIxLjYuMCIKLSAgICAgICAgICAgIG1v
ZHVsZT0ibGlidnB4LSR7dmVyc2lvbn0udGFyLmJ6MiIKLSAgICAgICAgICAgIHJlcG89ImRvd25s
b2Fkcy53ZWJtcHJvamVjdC5vcmciCi0gICAgICAgICAgICBoYXNoPSJzaGEyNTY6ZDBhZmJiNWVi
MWVjYWU2OGY4ZDU3OGFiYWNlMTYwYTk3ZTJlOGEyMzBlMzAyOGNmNGRiMTE1ZDU5YTY5NWFhZCIv
PgotICA8L2F1dG90b29scz4KLQogICAgPGF1dG90b29scyBpZD0iZ3N0LXBsdWdpbnMtb3Blbndl
YnJ0YyIgc3VwcG9ydHMtcGFyYWxsZWwtYnVpbGRzPSJubyIgc3VwcG9ydHMtbm9uLXNyY2Rpci1i
dWlsZHM9Im5vIiBhdXRvZ2VuLXNoPSIuL2F1dG9nZW4uc2g7IC4vY29uZmlndXJlIj4KICAgICAg
PGRlcGVuZGVuY2llcz4KICAgICAgICA8ZGVwIHBhY2thZ2U9ImdzdC1wbHVnaW5zLWJhc2UiLz4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9wYXRjaGVzL2dzdC1wbHVnaW5zLWdvb2QtMDAwMy1ydHBi
aW4tcmVjZWl2ZS1idW5kbGUtc3VwcG9ydC5wYXRjaCBiL1Rvb2xzL2d0ay9wYXRjaGVzL2dzdC1w
bHVnaW5zLWdvb2QtMDAwMy1ydHBiaW4tcmVjZWl2ZS1idW5kbGUtc3VwcG9ydC5wYXRjaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY4OWM4MTk5OGJkY2E1ZGU4NDgyMzVmMTAzMTFm
YTczOWM5N2JhNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Ub29scy9ndGsvcGF0Y2hlcy9nc3QtcGx1Z2lucy1nb29kLTAwMDMtcnRwYmluLXJlY2VpdmUt
YnVuZGxlLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDE4ICswLDAgQEAKLUZy
b20gZGNkM2NlOTc1MWNkZWYwYjVhYjFmYTExODM1NWY5MmJkZmU4MmNiMyBNb24gU2VwIDE3IDAw
OjAwOjAwIDIwMDEKLUZyb206IFBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+Ci1E
YXRlOiBXZWQsIDE2IE5vdiAyMDE2IDA4OjU2OjM0ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJ0
cGJpbjogcmVjZWl2ZSBidW5kbGUgc3VwcG9ydAotCi1BIG5ldyBzaWduYWwgbmFtZWQgb24tYnVu
ZGxlZC1zc3JjIGlzIHByb3ZpZGVkIGFuZCBjYW4gYmUKLXVzZWQgYnkgdGhlIGFwcGxpY2F0aW9u
IHRvIHJlZGlyZWN0IGEgc3RyZWFtIHRvIGEgZGlmZmVyZW50Ci1Hc3RSdHBTZXNzaW9uIG9yIHRv
IGtlZXAgdGhlIFJUWCBzdHJlYW0gZ3JvdXBlZCB3aXRoaW4gdGhlCi1Hc3RSdHBTZXNzaW9uIG9m
IHRoZSBzYW1lIG1lZGlhIHR5cGUuCi0KLWh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3df
YnVnLmNnaT9pZD03NzI3NDAKLS0tLQotIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1nb29kLXBs
dWdpbnMuc2lnbmFscyB8ICAgOCArCi0gZ3N0L3J0cG1hbmFnZXIvZ3N0cnRwYmluLmMgICAgICAg
ICAgICAgICAgICAgIHwgNTYyICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tCi0gZ3N0L3J0cG1h
bmFnZXIvZ3N0cnRwYmluLmggICAgICAgICAgICAgICAgICAgIHwgICAyICsKLSB0ZXN0cy9jaGVj
ay9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwotIHRlc3RzL2NoZWNr
L2VsZW1lbnRzLy5naXRpZ25vcmUgICAgICAgICAgICAgICB8ICAgMSArCi0gdGVzdHMvY2hlY2sv
ZWxlbWVudHMvcnRwYnVuZGxlLmMgICAgICAgICAgICAgIHwgMzkwICsrKysrKysrKysrKysrKysr
KwotIHRlc3RzL2NoZWNrL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr
Ci0gdGVzdHMvZXhhbXBsZXMvcnRwLy5naXRpZ25vcmUgICAgICAgICAgICAgICAgIHwgICAyICsK
LSB0ZXN0cy9leGFtcGxlcy9ydHAvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgfCAgMTAgKy0K
LSB0ZXN0cy9leGFtcGxlcy9ydHAvY2xpZW50LXJ0cGJ1bmRsZS5jICAgICAgICAgfCAyNjYgKysr
KysrKysrKysrCi0gdGVzdHMvZXhhbXBsZXMvcnRwL3NlcnZlci1ydHBidW5kbGUuYyAgICAgICAg
IHwgMTc5ICsrKysrKysrCi0gMTEgZmlsZXMgY2hhbmdlZCwgMTI2NSBpbnNlcnRpb25zKCspLCAx
NjAgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2NoZWNrL2VsZW1lbnRz
L3J0cGJ1bmRsZS5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2V4YW1wbGVzL3J0cC9jbGll
bnQtcnRwYnVuZGxlLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvZXhhbXBsZXMvcnRwL3Nl
cnZlci1ydHBidW5kbGUuYwotCi1kaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5z
LWdvb2QtcGx1Z2lucy5zaWduYWxzIGIvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWdvb2QtcGx1
Z2lucy5zaWduYWxzCi1pbmRleCAzZGIxN2U5Li40NGJiZGRhIDEwMDY0NAotLS0tIGEvZG9jcy9w
bHVnaW5zL2dzdC1wbHVnaW5zLWdvb2QtcGx1Z2lucy5zaWduYWxzCi0rKysgYi9kb2NzL3BsdWdp
bnMvZ3N0LXBsdWdpbnMtZ29vZC1wbHVnaW5zLnNpZ25hbHMKLUBAIC0zNzUsNiArMzc1LDE0IEBA
IGd1aW50ICBhcmcxCi0gPC9TSUdOQUw+Ci0gCi0gPFNJR05BTD4KLSs8TkFNRT5Hc3RSdHBCaW46
Om9uLWJ1bmRsZWQtc3NyYzwvTkFNRT4KLSs8UkVUVVJOUz5ndWludDwvUkVUVVJOUz4KLSs8RkxB
R1M+bDwvRkxBR1M+Ci0rR3N0UnRwQmluICpnc3RydHBiaW4KLStndWludCAgYXJnMQotKzwvU0lH
TkFMPgotKwotKzxTSUdOQUw+Ci0gPE5BTUU+R3N0UnRwSml0dGVyQnVmZmVyOjpjbGVhci1wdC1t
YXA8L05BTUU+Ci0gPFJFVFVSTlM+dm9pZDwvUkVUVVJOUz4KLSA8RkxBR1M+bGE8L0ZMQUdTPgot
ZGlmZiAtLWdpdCBhL2dzdC9ydHBtYW5hZ2VyL2dzdHJ0cGJpbi5jIGIvZ3N0L3J0cG1hbmFnZXIv
Z3N0cnRwYmluLmMKLWluZGV4IDY0OGFkYjkuLmY1OGRlMDEgMTAwNjQ0Ci0tLS0gYS9nc3QvcnRw
bWFuYWdlci9nc3RydHBiaW4uYwotKysrIGIvZ3N0L3J0cG1hbmFnZXIvZ3N0cnRwYmluLmMKLUBA
IC01Myw2ICs1MywxMyBAQAotICAqIFNTUkMgaW4gdGhlIFJUUCBwYWNrZXRzIHRvIGl0cyBvd24g
U1NSQyBhbmQgd2lsIGZvcndhcmQgdGhlIHBhY2tldHMgb24gdGhlCi0gICogc2VuZF9ydHBfc3Jj
X1wldSBwYWQgYWZ0ZXIgdXBkYXRpbmcgaXRzIGludGVybmFsIHN0YXRlLgotICAqCi0rICogI0dz
dFJ0cEJpbiBjYW4gYWxzbyBkZW11bHRpcGxleCBpbmNvbWluZyBidW5kbGVkIHN0cmVhbXMuIFRo
ZSBmaXJzdAotKyAqICNHc3RSdHBTZXNzaW9uIHdpbGwgaGF2ZSBhICNHc3RSdHBTc3JjRGVtdXgg
ZWxlbWVudCBzcGxpdHRpbmcgdGhlIHN0cmVhbXMKLSsgKiBiYXNlZCBvbiB0aGVpciBTU1JDIGFu
ZCBwb3RlbnRpYWxseSBkaXNwYXRjaGVkIHRvIGEgZGlmZmVyZW50ICNHc3RSdHBTZXNzaW9uLgot
KyAqIEJlY2F1c2UgcmV0cmFuc21pc3Npb24gU1NSQ3MgbmVlZCB0byBiZSBtZXJnZWQgd2l0aCB0
aGUgY29ycmVzcG9uZGluZyBtZWRpYQotKyAqIHN0cmVhbSB0aGUgI0dzdFJ0cEJpbjo6b24tYnVu
ZGxlZC1zc3JjIHNpZ25hbCBpcyBlbWl0dGVkIHNvIHRoYXQgdGhlCi0rICogYXBwbGljYXRpb24g
Y2FuIGZpbmQgb3V0IHRvIHdoaWNoIHNlc3Npb24gdGhlIFNTUkMgYmVsb25ncy4KLSsgKgotICAq
IFRoZSBzZXNzaW9uIG1hbmFnZXIgbmVlZHMgdGhlIGNsb2NrLXJhdGUgb2YgdGhlIHBheWxvYWQg
dHlwZXMgaXQgaXMgaGFuZGxpbmcKLSAgKiBhbmQgd2lsbCBzaWduYWwgdGhlICNHc3RSdHBTZXNz
aW9uOjpyZXF1ZXN0LXB0LW1hcCBzaWduYWwgd2hlbiBpdCBuZWVkcyBzdWNoIGEKLSAgKiBtYXBw
aW5nLiBPbmUgY2FuIGNsZWFyIHRoZSBjYWNoZWQgdmFsdWVzIHdpdGggdGhlICNHc3RSdHBTZXNz
aW9uOjpjbGVhci1wdC1tYXAKLUBAIC0yNzYsNiArMjgzLDggQEAgZW51bQotICAgU0lHTkFMX09O
X05FV19TRU5ERVJfU1NSQywKLSAgIFNJR05BTF9PTl9TRU5ERVJfU1NSQ19BQ1RJVkUsCi0gCi0r
ICBTSUdOQUxfT05fQlVORExFRF9TU1JDLAotKwotICAgTEFTVF9TSUdOQUwKLSB9OwotIAotQEAg
LTM2Miw2ICszNzEsMTQgQEAgc3RhdGljIHZvaWQgcmVtb3ZlX3NlbmRfcnRwIChHc3RSdHBCaW4g
KiBydHBiaW4sIEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9uKTsKLSBzdGF0aWMgdm9pZCByZW1v
dmVfcnRjcCAoR3N0UnRwQmluICogcnRwYmluLCBHc3RSdHBCaW5TZXNzaW9uICogc2Vzc2lvbik7
Ci0gc3RhdGljIHZvaWQgZnJlZV9jbGllbnQgKEdzdFJ0cEJpbkNsaWVudCAqIGNsaWVudCwgR3N0
UnRwQmluICogYmluKTsKLSBzdGF0aWMgdm9pZCBmcmVlX3N0cmVhbSAoR3N0UnRwQmluU3RyZWFt
ICogc3RyZWFtLCBHc3RSdHBCaW4gKiBiaW4pOwotK3N0YXRpYyBHc3RSdHBCaW5TZXNzaW9uICpj
cmVhdGVfc2Vzc2lvbiAoR3N0UnRwQmluICogcnRwYmluLCBnaW50IGlkKTsKLStzdGF0aWMgR3N0
UGFkICpjb21wbGV0ZV9zZXNzaW9uX3NpbmsgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwKLSsgICAgR3N0
UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24sIGdib29sZWFuIGJ1bmRsZV9kZW11eGVyX25lZWRlZCk7
Ci0rc3RhdGljIHZvaWQKLStjb21wbGV0ZV9zZXNzaW9uX3JlY2VpdmVyIChHc3RSdHBCaW4gKiBy
dHBiaW4sIEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9uLAotKyAgICBndWludCBzZXNzaWQpOwot
K3N0YXRpYyBHc3RQYWQgKmNvbXBsZXRlX3Nlc3Npb25fcnRjcCAoR3N0UnRwQmluICogcnRwYmlu
LAotKyAgICBHc3RSdHBCaW5TZXNzaW9uICogc2Vzc2lvbiwgZ3VpbnQgc2Vzc2lkLCBnYm9vbGVh
biBidW5kbGVfZGVtdXhlcl9uZWVkZWQpOwotIAotIC8qIE1hbmFnZXMgdGhlIFJUUCBzdHJlYW0g
Zm9yIG9uZSBTU1JDLgotICAqCi1AQCAtNDI4LDYgKzQ0NSwxMiBAQCBzdHJ1Y3QgX0dzdFJ0cEJp
blNlc3Npb24KLSAgIGd1bG9uZyBkZW11eF9uZXdwYWRfc2lnOwotICAgZ3Vsb25nIGRlbXV4X3Bh
ZHJlbW92ZWRfc2lnOwotIAotKyAgLyogQnVuZGxpbmcgc3VwcG9ydCAqLwotKyAgR3N0RWxlbWVu
dCAqcnRwX2Z1bm5lbDsKLSsgIEdzdEVsZW1lbnQgKnJ0Y3BfZnVubmVsOwotKyAgR3N0RWxlbWVu
dCAqYnVuZGxlX2RlbXV4OwotKyAgZ3Vsb25nIGJ1bmRsZV9kZW11eF9uZXdwYWRfc2lnOwotKwot
ICAgR011dGV4IGxvY2s7Ci0gCi0gICAvKiBsaXN0IG9mIEdzdFJ0cEJpblN0cmVhbSAqLwotQEAg
LTYyOSw2ICs2NTIsOTYgQEAgc3NyY19kZW11eF9wYWRfcmVtb3ZlZCAoR3N0RWxlbWVudCAqIGVs
ZW1lbnQsIGd1aW50IHNzcmMsIEdzdFBhZCAqIHBhZCwKLSAgIEdTVF9SVFBfQklOX1VOTE9DSyAo
cnRwYmluKTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQKLStuZXdfYnVuZGxlZF9zc3JjX3BhZF9mb3Vu
ZCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIGd1aW50IHNzcmMsIEdzdFBhZCAqIHBhZCwKLSsgICAg
R3N0UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24pCi0rewotKyAgR1ZhbHVlIHJlc3VsdCA9IEdfVkFM
VUVfSU5JVDsKLSsgIEdWYWx1ZSBwYXJhbXNbMl0gPSB7IEdfVkFMVUVfSU5JVCwgR19WQUxVRV9J
TklUIH07Ci0rICBndWludCBzZXNzaW9uX2lkID0gMDsKLSsgIEdzdFJ0cEJpblNlc3Npb24gKnRh
cmdldF9zZXNzaW9uID0gTlVMTDsKLSsgIEdzdFJ0cEJpbiAqcnRwYmluID0gc2Vzc2lvbi0+Ymlu
OwotKyAgZ2NoYXIgKm5hbWU7Ci0rICBHc3RQYWQgKnNyY19wYWQ7Ci0rICBHc3RQYWQgKnJlY3Zf
cnRwX3NpbmsgPSBOVUxMOwotKyAgR3N0UGFkICpyZWN2X3J0Y3Bfc2luayA9IE5VTEw7Ci0rICBH
c3RQYWRMaW5rUmV0dXJuIHJldDsKLSsKLSsgIEdTVF9SVFBfQklOX0RZTl9MT0NLIChydHBiaW4p
OwotKyAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAibmV3IGJ1bmRsZWQgU1NSQyBwYWQgJTA4
eCwgJXM6JXMiLCBzc3JjLAotKyAgICAgIEdTVF9ERUJVR19QQURfTkFNRSAocGFkKSk7Ci0rCi0r
ICBnX3ZhbHVlX2luaXQgKCZyZXN1bHQsIEdfVFlQRV9VSU5UKTsKLSsgIGdfdmFsdWVfaW5pdCAo
JnBhcmFtc1swXSwgR1NUX1RZUEVfRUxFTUVOVCk7Ci0rICBnX3ZhbHVlX3NldF9vYmplY3QgKCZw
YXJhbXNbMF0sIHJ0cGJpbik7Ci0rICBnX3ZhbHVlX2luaXQgKCZwYXJhbXNbMV0sIEdfVFlQRV9V
SU5UKTsKLSsgIGdfdmFsdWVfc2V0X3VpbnQgKCZwYXJhbXNbMV0sIHNzcmMpOwotKwotKyAgZ19z
aWduYWxfZW1pdHYgKHBhcmFtcywKLSsgICAgICBnc3RfcnRwX2Jpbl9zaWduYWxzW1NJR05BTF9P
Tl9CVU5ETEVEX1NTUkNdLCAwLCAmcmVzdWx0KTsKLSsgIGdfdmFsdWVfdW5zZXQgKCZwYXJhbXNb
MF0pOwotKwotKyAgc2Vzc2lvbl9pZCA9IGdfdmFsdWVfZ2V0X3VpbnQgKCZyZXN1bHQpOwotKyAg
aWYgKHNlc3Npb25faWQgPT0gMCkgewotKyAgICB0YXJnZXRfc2Vzc2lvbiA9IHNlc3Npb247Ci0r
ICB9IGVsc2UgewotKyAgICB0YXJnZXRfc2Vzc2lvbiA9IGZpbmRfc2Vzc2lvbl9ieV9pZCAocnRw
YmluLCAoZ2ludCkgc2Vzc2lvbl9pZCk7Ci0rICAgIGlmICghdGFyZ2V0X3Nlc3Npb24pIHsKLSsg
ICAgICB0YXJnZXRfc2Vzc2lvbiA9IGNyZWF0ZV9zZXNzaW9uIChydHBiaW4sIHNlc3Npb25faWQp
OwotKyAgICB9Ci0rICAgIGlmICghdGFyZ2V0X3Nlc3Npb24tPnJlY3ZfcnRwX3NpbmspIHsKLSsg
ICAgICByZWN2X3J0cF9zaW5rID0gY29tcGxldGVfc2Vzc2lvbl9zaW5rIChydHBiaW4sIHRhcmdl
dF9zZXNzaW9uLCBGQUxTRSk7Ci0rICAgIH0KLSsKLSsgICAgaWYgKCF0YXJnZXRfc2Vzc2lvbi0+
cmVjdl9ydHBfc3JjKQotKyAgICAgIGNvbXBsZXRlX3Nlc3Npb25fcmVjZWl2ZXIgKHJ0cGJpbiwg
dGFyZ2V0X3Nlc3Npb24sIHNlc3Npb25faWQpOwotKwotKyAgICBpZiAoIXRhcmdldF9zZXNzaW9u
LT5yZWN2X3J0Y3Bfc2luaykgewotKyAgICAgIHJlY3ZfcnRjcF9zaW5rID0KLSsgICAgICAgICAg
Y29tcGxldGVfc2Vzc2lvbl9ydGNwIChydHBiaW4sIHRhcmdldF9zZXNzaW9uLCBzZXNzaW9uX2lk
LCBGQUxTRSk7Ci0rICAgIH0KLSsgIH0KLSsKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGJpbiwg
IkFzc2lnbmluZyBidW5kbGVkIHNzcmMgJXUgdG8gc2Vzc2lvbiAldSIsIHNzcmMsCi0rICAgICAg
c2Vzc2lvbl9pZCk7Ci0rCi0rICBpZiAoIXJlY3ZfcnRwX3NpbmspIHsKLSsgICAgcmVjdl9ydHBf
c2luayA9Ci0rICAgICAgICBnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQgKHRhcmdldF9zZXNz
aW9uLT5ydHBfZnVubmVsLCAic2lua18ldSIpOwotKyAgfQotKwotKyAgaWYgKCFyZWN2X3J0Y3Bf
c2luaykgewotKyAgICByZWN2X3J0Y3Bfc2luayA9Ci0rICAgICAgICBnc3RfZWxlbWVudF9nZXRf
cmVxdWVzdF9wYWQgKHRhcmdldF9zZXNzaW9uLT5ydGNwX2Z1bm5lbCwgInNpbmtfJXUiKTsKLSsg
IH0KLSsKLSsgIG5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJzcmNfJXUiLCBzc3JjKTsKLSsgIHNy
Y19wYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAoZWxlbWVudCwgbmFtZSk7Ci0rICBy
ZXQgPSBnc3RfcGFkX2xpbmsgKHNyY19wYWQsIHJlY3ZfcnRwX3NpbmspOwotKyAgZ19mcmVlIChu
YW1lKTsKLSsgIGdzdF9vYmplY3RfdW5yZWYgKHNyY19wYWQpOwotKyAgZ3N0X29iamVjdF91bnJl
ZiAocmVjdl9ydHBfc2luayk7Ci0rICBpZiAocmV0ICE9IEdTVF9QQURfTElOS19PSykgewotKyAg
ICBnX3dhcm5pbmcKLSsgICAgICAgICgicnRwYmluOiBmYWlsZWQgdG8gbGluayBidW5kbGUgZGVt
dXhlciB0byByZWNlaXZlIHJ0cCBmdW5uZWwgZm9yIHNlc3Npb24gJXUiLAotKyAgICAgICAgc2Vz
c2lvbl9pZCk7Ci0rICB9Ci0rCi0rICBuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgicnRjcF9zcmNf
JXUiLCBzc3JjKTsKLSsgIHNyY19wYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAoZWxl
bWVudCwgbmFtZSk7Ci0rICBnc3RfcGFkX2xpbmsgKHNyY19wYWQsIHJlY3ZfcnRjcF9zaW5rKTsK
LSsgIGdfZnJlZSAobmFtZSk7Ci0rICBnc3Rfb2JqZWN0X3VucmVmIChzcmNfcGFkKTsKLSsgIGdz
dF9vYmplY3RfdW5yZWYgKHJlY3ZfcnRjcF9zaW5rKTsKLSsgIGlmIChyZXQgIT0gR1NUX1BBRF9M
SU5LX09LKSB7Ci0rICAgIGdfd2FybmluZwotKyAgICAgICAgKCJydHBiaW46IGZhaWxlZCB0byBs
aW5rIGJ1bmRsZSBkZW11eGVyIHRvIHJlY2VpdmUgcnRjcCBzaW5rIHBhZCBmb3Igc2Vzc2lvbiAl
dSIsCi0rICAgICAgICBzZXNzaW9uX2lkKTsKLSsgIH0KLSsKLSsgIEdTVF9SVFBfQklOX0RZTl9V
TkxPQ0sgKHJ0cGJpbik7Ci0rfQotKwotIC8qIGNyZWF0ZSBhIHNlc3Npb24gd2l0aCB0aGUgZ2l2
ZW4gaWQuICBNdXN0IGJlIGNhbGxlZCB3aXRoIFJUUF9CSU5fTE9DSyAqLwotIHN0YXRpYyBHc3RS
dHBCaW5TZXNzaW9uICoKLSBjcmVhdGVfc2Vzc2lvbiAoR3N0UnRwQmluICogcnRwYmluLCBnaW50
IGlkKQotQEAgLTY0OSw2ICs3NjIsMTAgQEAgY3JlYXRlX3Nlc3Npb24gKEdzdFJ0cEJpbiAqIHJ0
cGJpbiwgZ2ludCBpZCkKLSAgIHNlc3MtPmJpbiA9IHJ0cGJpbjsKLSAgIHNlc3MtPnNlc3Npb24g
PSBzZXNzaW9uOwotICAgc2Vzcy0+ZGVtdXggPSBkZW11eDsKLSsKLSsgIHNlc3MtPnJ0cF9mdW5u
ZWwgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJmdW5uZWwiLCBOVUxMKTsKLSsgIHNlc3Mt
PnJ0Y3BfZnVubmVsID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZnVubmVsIiwgTlVMTCk7
Ci0rCi0gICBzZXNzLT5wdG1hcCA9IGdfaGFzaF90YWJsZV9uZXdfZnVsbCAoTlVMTCwgTlVMTCwg
TlVMTCwKLSAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9jYXBzX3VucmVmKTsKLSAgIHJ0cGJp
bi0+c2Vzc2lvbnMgPSBnX3NsaXN0X3ByZXBlbmQgKHJ0cGJpbi0+c2Vzc2lvbnMsIHNlc3MpOwot
QEAgLTY5Niw2ICs4MTMsOCBAQCBjcmVhdGVfc2Vzc2lvbiAoR3N0UnRwQmluICogcnRwYmluLCBn
aW50IGlkKQotIAotICAgZ3N0X2Jpbl9hZGQgKEdTVF9CSU5fQ0FTVCAocnRwYmluKSwgc2Vzc2lv
bik7Ci0gICBnc3RfYmluX2FkZCAoR1NUX0JJTl9DQVNUIChydHBiaW4pLCBkZW11eCk7Ci0rICBn
c3RfYmluX2FkZCAoR1NUX0JJTl9DQVNUIChydHBiaW4pLCBzZXNzLT5ydHBfZnVubmVsKTsKLSsg
IGdzdF9iaW5fYWRkIChHU1RfQklOX0NBU1QgKHJ0cGJpbiksIHNlc3MtPnJ0Y3BfZnVubmVsKTsK
LSAKLSAgIEdTVF9PQkpFQ1RfTE9DSyAocnRwYmluKTsKLSAgIHRhcmdldCA9IEdTVF9TVEFURV9U
QVJHRVQgKHJ0cGJpbik7Ci1AQCAtNzA0LDYgKzgyMyw4IEBAIGNyZWF0ZV9zZXNzaW9uIChHc3RS
dHBCaW4gKiBydHBiaW4sIGdpbnQgaWQpCi0gICAvKiBjaGFuZ2Ugc3RhdGUgb25seSB0byB3aGF0
J3MgbmVlZGVkICovCi0gICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKGRlbXV4LCB0YXJnZXQpOwot
ICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChzZXNzaW9uLCB0YXJnZXQpOwotKyAgZ3N0X2VsZW1l
bnRfc2V0X3N0YXRlIChzZXNzLT5ydHBfZnVubmVsLCB0YXJnZXQpOwotKyAgZ3N0X2VsZW1lbnRf
c2V0X3N0YXRlIChzZXNzLT5ydGNwX2Z1bm5lbCwgdGFyZ2V0KTsKLSAKLSAgIHJldHVybiBzZXNz
OwotIAotQEAgLTgwNyw3ICs5MjgsNyBAQCBnZXRfcHRfbWFwIChHc3RSdHBCaW5TZXNzaW9uICog
c2Vzc2lvbiwgZ3VpbnQgcHQpCi0gICBHVmFsdWUgcmV0ID0geyAwIH07Ci0gICBHVmFsdWUgYXJn
c1szXSA9IHsgezB9LCB7MH0sIHswfSB9OwotIAotLSAgR1NUX0RFQlVHICgic2VhcmNoaW5nIHB0
ICVkIGluIGNhY2hlIiwgcHQpOwotKyAgR1NUX0RFQlVHICgic2VhcmNoaW5nIHB0ICV1IGluIGNh
Y2hlIiwgcHQpOwotIAotICAgR1NUX1JUUF9TRVNTSU9OX0xPQ0sgKHNlc3Npb24pOwotIAotQEAg
LTgyMCw3ICs5NDEsNyBAQCBnZXRfcHRfbWFwIChHc3RSdHBCaW5TZXNzaW9uICogc2Vzc2lvbiwg
Z3VpbnQgcHQpCi0gCi0gICBiaW4gPSBzZXNzaW9uLT5iaW47Ci0gCi0tICBHU1RfREVCVUcgKCJl
bWl0aW5nIHNpZ25hbCBmb3IgcHQgJWQgaW4gc2Vzc2lvbiAlZCIsIHB0LCBzZXNzaW9uLT5pZCk7
Ci0rICBHU1RfREVCVUcgKCJlbWl0aW5nIHNpZ25hbCBmb3IgcHQgJXUgaW4gc2Vzc2lvbiAldSIs
IHB0LCBzZXNzaW9uLT5pZCk7Ci0gCi0gICAvKiBub3QgaW4gY2FjaGUsIHNlbmQgc2lnbmFsIHRv
IHJlcXVlc3QgY2FwcyAqLwotICAgZ192YWx1ZV9pbml0ICgmYXJnc1swXSwgR1NUX1RZUEVfRUxF
TUVOVCk7Ci1AQCAtODU2LDcgKzk3Nyw3IEBAIGdldF9wdF9tYXAgKEdzdFJ0cEJpblNlc3Npb24g
KiBzZXNzaW9uLCBndWludCBwdCkKLSAgIGlmICghY2FwcykKLSAgICAgZ290byBub19jYXBzOwot
IAotLSAgR1NUX0RFQlVHICgiY2FjaGluZyBwdCAlZCBhcyAlIiBHU1RfUFRSX0ZPUk1BVCwgcHQs
IGNhcHMpOwotKyAgR1NUX0RFQlVHICgiY2FjaGluZyBwdCAldSBhcyAlIiBHU1RfUFRSX0ZPUk1B
VCwgcHQsIGNhcHMpOwotIAotICAgLyogc3RvcmUgaW4gY2FjaGUsIHRha2UgYWRkaXRpb25hbCBy
ZWYgKi8KLSAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHNlc3Npb24tPnB0bWFwLCBHSU5UX1RPX1BP
SU5URVIgKHB0KSwKLUBAIC05NDcsNyArMTA2OCw3IEBAIGdzdF9ydHBfYmluX2dldF9zZXNzaW9u
IChHc3RSdHBCaW4gKiBiaW4sIGd1aW50IHNlc3Npb25faWQpCi0gICBHc3RFbGVtZW50ICpyZXQg
PSBOVUxMOwotIAotICAgR1NUX1JUUF9CSU5fTE9DSyAoYmluKTsKLS0gIEdTVF9ERUJVR19PQkpF
Q1QgKGJpbiwgInJldHJpZXZpbmcgR3N0UnRwU2Vzc2lvbiwgaW5kZXg6ICVkIiwgc2Vzc2lvbl9p
ZCk7Ci0rICBHU1RfREVCVUdfT0JKRUNUIChiaW4sICJyZXRyaWV2aW5nIEdzdFJ0cFNlc3Npb24s
IGluZGV4OiAldSIsIHNlc3Npb25faWQpOwotICAgc2Vzc2lvbiA9IGZpbmRfc2Vzc2lvbl9ieV9p
ZCAoYmluLCAoZ2ludCkgc2Vzc2lvbl9pZCk7Ci0gICBpZiAoc2Vzc2lvbikgewotICAgICByZXQg
PSBnc3Rfb2JqZWN0X3JlZiAoc2Vzc2lvbi0+c2Vzc2lvbik7Ci1AQCAtOTY0LDcgKzEwODUsNyBA
QCBnc3RfcnRwX2Jpbl9nZXRfaW50ZXJuYWxfc2Vzc2lvbiAoR3N0UnRwQmluICogYmluLCBndWlu
dCBzZXNzaW9uX2lkKQotICAgR3N0UnRwQmluU2Vzc2lvbiAqc2Vzc2lvbjsKLSAKLSAgIEdTVF9S
VFBfQklOX0xPQ0sgKGJpbik7Ci0tICBHU1RfREVCVUdfT0JKRUNUIChiaW4sICJyZXRyaWV2aW5n
IGludGVybmFsIFJUUFNlc3Npb24gb2JqZWN0LCBpbmRleDogJWQiLAotKyAgR1NUX0RFQlVHX09C
SkVDVCAoYmluLCAicmV0cmlldmluZyBpbnRlcm5hbCBSVFBTZXNzaW9uIG9iamVjdCwgaW5kZXg6
ICV1IiwKLSAgICAgICBzZXNzaW9uX2lkKTsKLSAgIHNlc3Npb24gPSBmaW5kX3Nlc3Npb25fYnlf
aWQgKGJpbiwgKGdpbnQpIHNlc3Npb25faWQpOwotICAgaWYgKHNlc3Npb24pIHsKLUBAIC0yMTk0
LDYgKzIzMTUsMjkgQEAgZ3N0X3J0cF9iaW5fY2xhc3NfaW5pdCAoR3N0UnRwQmluQ2xhc3MgKiBr
bGFzcykKLSAgICAgICAgICAgb25fc2VuZGVyX3NzcmNfYWN0aXZlKSwgTlVMTCwgTlVMTCwgZ19j
Y2xvc3VyZV9tYXJzaGFsX2dlbmVyaWMsCi0gICAgICAgR19UWVBFX05PTkUsIDIsIEdfVFlQRV9V
SU5ULCBHX1RZUEVfVUlOVCk7Ci0gCi0rCi0rICAvKioKLSsgICAqIEdzdFJ0cEJpbjo6b24tYnVu
ZGxlZC1zc3JjOgotKyAgICogQHJ0cGJpbjogdGhlIG9iamVjdCB3aGljaCByZWNlaXZlZCB0aGUg
c2lnbmFsCi0rICAgKiBAc3NyYzogdGhlIGJ1bmRsZWQgU1NSQwotKyAgICoKLSsgICAqIE5vdGlm
eSBvZiBhIG5ldyBpbmNvbWluZyBidW5kbGVkIFNTUkMuIElmIG5vIGhhbmRsZXIgaXMgY29ubmVj
dGVkIHRvIHRoZQotKyAgICogc2lnbmFsIHRoZW4gdGhlICNHc3RSdHBTZXNzaW9uIGNyZWF0ZWQg
Zm9yIHRoZSByZWN2X3J0cF9zaW5rX1wldQotKyAgICogcmVxdWVzdCBwYWQgd2lsbCBiZSBtYW5h
Z2luZyB0aGlzIG5ldyBTU1JDLiBIb3dldmVyIGlmIHRoZXJlIGlzIGEgaGFuZGxlcgotKyAgICog
Y29ubmVjdGVkIHRoZW4gdGhlIGFwcGxpY2F0aW9uIGNhbiBkZWNpZGVkIHRvIGRpc3BhdGNoIHRo
aXMgbmV3IHN0cmVhbSB0bwotKyAgICogYW5vdGhlciBzZXNzaW9uIGJ5IHByb3ZpZGluZyBpdHMg
SUQgYXMgcmV0dXJuIHZhbHVlIG9mIHRoZSBoYW5kbGVyLiBUaGlzCi0rICAgKiBjYW4gYmUgcGFy
dGljdWxhcmx5IHVzZWZ1bCB0byBrZWVwIHJldHJhbnNtaXNzaW9uIFNTUkNzIGdyb3VwZWQgd2l0
aCB0aGUKLSsgICAqIHNlc3Npb24gZm9yIHdoaWNoIHRoZXkgaGFuZGxlIHJldHJhbnNtaXNzaW9u
LgotKyAgICoKLSsgICAqIFNpbmNlOiAxLjEyCi0rICAgKi8KLSsgIGdzdF9ydHBfYmluX3NpZ25h
bHNbU0lHTkFMX09OX0JVTkRMRURfU1NSQ10gPQotKyAgICAgIGdfc2lnbmFsX25ldyAoIm9uLWJ1
bmRsZWQtc3NyYyIsIEdfVFlQRV9GUk9NX0NMQVNTIChrbGFzcyksCi0rICAgICAgR19TSUdOQUxf
UlVOX0xBU1QsIEdfU1RSVUNUX09GRlNFVCAoR3N0UnRwQmluQ2xhc3MsCi0rICAgICAgICAgIG9u
X2J1bmRsZWRfc3NyYyksIE5VTEwsIE5VTEwsCi0rICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX2dl
bmVyaWMsIEdfVFlQRV9VSU5ULCAxLCBHX1RZUEVfVUlOVCk7Ci0rCi0rCi0gICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1NERVMsCi0gICAgICAg
Z19wYXJhbV9zcGVjX2JveGVkICgic2RlcyIsICJTREVTIiwKLSAgICAgICAgICAgIlRoZSBTREVT
IGl0ZW1zIG9mIHRoaXMgc2Vzc2lvbiIsCi1AQCAtMzAyMSw3ICszMTY1LDcgQEAgbmV3X3BheWxv
YWRfZm91bmQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBndWludCBwdCwgR3N0UGFkICogcGFkLAot
IAotICAgcnRwYmluID0gc3RyZWFtLT5iaW47Ci0gCi0tICBHU1RfREVCVUcgKCJuZXcgcGF5bG9h
ZCBwYWQgJWQiLCBwdCk7Ci0rICBHU1RfREVCVUdfT0JKRUNUIChydHBiaW4sICJuZXcgcGF5bG9h
ZCBwYWQgJXUiLCBwdCk7Ci0gCi0gICBHU1RfUlRQX0JJTl9TSFVURE9XTl9MT0NLIChydHBiaW4s
IHNodXRkb3duKTsKLSAKLUBAIC0zMDc4LDcgKzMyMjIsNyBAQCBwdF9tYXBfcmVxdWVzdGVkIChH
c3RFbGVtZW50ICogZWxlbWVudCwgZ3VpbnQgcHQsIEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9u
KQotIAotICAgcnRwYmluID0gc2Vzc2lvbi0+YmluOwotIAotLSAgR1NUX0RFQlVHX09CSkVDVCAo
cnRwYmluLCAicGF5bG9hZCBtYXAgcmVxdWVzdGVkIGZvciBwdCAlZCBpbiBzZXNzaW9uICVkIiwg
cHQsCi0rICBHU1RfREVCVUdfT0JKRUNUIChydHBiaW4sICJwYXlsb2FkIG1hcCByZXF1ZXN0ZWQg
Zm9yIHB0ICV1IGluIHNlc3Npb24gJXUiLCBwdCwKLSAgICAgICBzZXNzaW9uLT5pZCk7Ci0gCi0g
ICBjYXBzID0gZ2V0X3B0X21hcCAoc2Vzc2lvbiwgcHQpOwotQEAgLTMwOTksNyArMzI0Myw3IEBA
IHN0YXRpYyB2b2lkCi0gcGF5bG9hZF90eXBlX2NoYW5nZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQs
IGd1aW50IHB0LCBHc3RSdHBCaW5TZXNzaW9uICogc2Vzc2lvbikKLSB7Ci0gICBHU1RfREVCVUdf
T0JKRUNUIChzZXNzaW9uLT5iaW4sCi0tICAgICAgImVtaXRpbmcgc2lnbmFsIGZvciBwdCB0eXBl
IGNoYW5nZWQgdG8gJWQgaW4gc2Vzc2lvbiAlZCIsIHB0LAotKyAgICAgICJlbWl0aW5nIHNpZ25h
bCBmb3IgcHQgdHlwZSBjaGFuZ2VkIHRvICV1IGluIHNlc3Npb24gJXUiLCBwdCwKLSAgICAgICBz
ZXNzaW9uLT5pZCk7Ci0gCi0gICBnX3NpZ25hbF9lbWl0IChzZXNzaW9uLT5iaW4sIGdzdF9ydHBf
YmluX3NpZ25hbHNbU0lHTkFMX1BBWUxPQURfVFlQRV9DSEFOR0VdLAotQEAgLTMyNDYsMTUgKzMz
OTAsNDIgQEAgbm9fc3RyZWFtOgotICAgfQotIH0KLSAKLS1zdGF0aWMgZ2Jvb2xlYW4KLS1jb21w
bGV0ZV9zZXNzaW9uX3NpbmsgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0UnRwQmluU2Vzc2lvbiAq
IHNlc3Npb24pCi0rc3RhdGljIHZvaWQKLStzZXNzaW9uX21heWJlX2NyZWF0ZV9idW5kbGVfZGVt
dXhlciAoR3N0UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24pCi0rewotKyAgR3N0UnRwQmluICpydHBi
aW47Ci0rCi0rICBpZiAoc2Vzc2lvbi0+YnVuZGxlX2RlbXV4KQotKyAgICByZXR1cm47Ci0rCi0r
ICBydHBiaW4gPSBzZXNzaW9uLT5iaW47Ci0rICBpZiAoZ19zaWduYWxfaGFzX2hhbmRsZXJfcGVu
ZGluZyAocnRwYmluLAotKyAgICAgICAgICBnc3RfcnRwX2Jpbl9zaWduYWxzW1NJR05BTF9PTl9C
VU5ETEVEX1NTUkNdLCAwLCBUUlVFKSkgewotKyAgICBHU1RfREVCVUdfT0JKRUNUIChydHBiaW4s
ICJBZGRpbmcgYSBidW5kbGUgU1NSQyBkZW11eGVyIHRvIHNlc3Npb24gJXUiLAotKyAgICAgICAg
c2Vzc2lvbi0+aWQpOwotKyAgICBzZXNzaW9uLT5idW5kbGVfZGVtdXggPSBnc3RfZWxlbWVudF9m
YWN0b3J5X21ha2UgKCJydHBzc3JjZGVtdXgiLCBOVUxMKTsKLSsgICAgc2Vzc2lvbi0+YnVuZGxl
X2RlbXV4X25ld3BhZF9zaWcgPSBnX3NpZ25hbF9jb25uZWN0IChzZXNzaW9uLT5idW5kbGVfZGVt
dXgsCi0rICAgICAgICAibmV3LXNzcmMtcGFkIiwgKEdDYWxsYmFjaykgbmV3X2J1bmRsZWRfc3Ny
Y19wYWRfZm91bmQsIHNlc3Npb24pOwotKwotKyAgICBnc3RfYmluX2FkZCAoR1NUX0JJTl9DQVNU
IChydHBiaW4pLCBzZXNzaW9uLT5idW5kbGVfZGVtdXgpOwotKyAgICBnc3RfZWxlbWVudF9zeW5j
X3N0YXRlX3dpdGhfcGFyZW50IChzZXNzaW9uLT5idW5kbGVfZGVtdXgpOwotKyAgfSBlbHNlIHsK
LSsgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLAotKyAgICAgICAgIk5vIGhhbmRsZXIgZm9y
IHRoZSBvbi1idW5kbGVkLXNzcmMgc2lnbmFsIHNvIG5vIG5lZWQgZm9yIGEgYnVuZGxlIFNTUkMg
ZGVtdXhlciBpbiBzZXNzaW9uICV1IiwKLSsgICAgICAgIHNlc3Npb24tPmlkKTsKLSsgIH0KLSt9
Ci0rCi0rc3RhdGljIEdzdFBhZCAqCi0rY29tcGxldGVfc2Vzc2lvbl9zaW5rIChHc3RSdHBCaW4g
KiBydHBiaW4sIEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9uLAotKyAgICBnYm9vbGVhbiBidW5k
bGVfZGVtdXhlcl9uZWVkZWQpCi0gewotLSAgZ2NoYXIgKmduYW1lOwotICAgZ3VpbnQgc2Vzc2lk
ID0gc2Vzc2lvbi0+aWQ7Ci0gICBHc3RQYWQgKnJlY3ZfcnRwX3Npbms7Ci0rICBHc3RQYWQgKmZ1
bm5lbF9zcmM7Ci0gICBHc3RFbGVtZW50ICpkZWNvZGVyOwotLSAgR3N0RWxlbWVudENsYXNzICpr
bGFzczsKLS0gIEdzdFBhZFRlbXBsYXRlICp0ZW1wbDsKLSsKLSsgIGdfYXNzZXJ0ICghc2Vzc2lv
bi0+cmVjdl9ydHBfc2luayk7Ci0gCi0gICAvKiBnZXQgcmVjdl9ydHAgcGFkIGFuZCBzdG9yZSAq
LwotICAgc2Vzc2lvbi0+cmVjdl9ydHBfc2luayA9Ci1AQCAtMzI2NSw2ICszNDM2LDkgQEAgY29t
cGxldGVfc2Vzc2lvbl9zaW5rIChHc3RSdHBCaW4gKiBydHBiaW4sIEdzdFJ0cEJpblNlc3Npb24g
KiBzZXNzaW9uKQotICAgZ19zaWduYWxfY29ubmVjdCAoc2Vzc2lvbi0+cmVjdl9ydHBfc2luaywg
Im5vdGlmeTo6Y2FwcyIsCi0gICAgICAgKEdDYWxsYmFjaykgY2Fwc19jaGFuZ2VkLCBzZXNzaW9u
KTsKLSAKLSsgIGlmIChidW5kbGVfZGVtdXhlcl9uZWVkZWQpCi0rICAgIHNlc3Npb25fbWF5YmVf
Y3JlYXRlX2J1bmRsZV9kZW11eGVyIChzZXNzaW9uKTsKLSsKLSAgIEdTVF9ERUJVR19PQkpFQ1Qg
KHJ0cGJpbiwgInJlcXVlc3RpbmcgUlRQIGRlY29kZXIiKTsKLSAgIGRlY29kZXIgPSBzZXNzaW9u
X3JlcXVlc3RfZWxlbWVudCAoc2Vzc2lvbiwgU0lHTkFMX1JFUVVFU1RfUlRQX0RFQ09ERVIpOwot
ICAgaWYgKGRlY29kZXIpIHsKLUBAIC0zMjgyLDcgKzM0NTYsMTQgQEAgY29tcGxldGVfc2Vzc2lv
bl9zaW5rIChHc3RSdHBCaW4gKiBydHBiaW4sIEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9uKQot
ICAgICBpZiAoZGVjc3JjID09IE5VTEwpCi0gICAgICAgZ290byBkZWNfc3JjX2ZhaWxlZDsKLSAK
LS0gICAgcmV0ID0gZ3N0X3BhZF9saW5rIChkZWNzcmMsIHNlc3Npb24tPnJlY3ZfcnRwX3Npbmsp
OwotKyAgICBpZiAoc2Vzc2lvbi0+YnVuZGxlX2RlbXV4KSB7Ci0rICAgICAgR3N0UGFkICpkZW11
eF9zaW5rOwotKyAgICAgIGRlbXV4X3NpbmsgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAo
c2Vzc2lvbi0+YnVuZGxlX2RlbXV4LCAic2luayIpOwotKyAgICAgIHJldCA9IGdzdF9wYWRfbGlu
ayAoZGVjc3JjLCBkZW11eF9zaW5rKTsKLSsgICAgICBnc3Rfb2JqZWN0X3VucmVmIChkZW11eF9z
aW5rKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICByZXQgPSBnc3RfcGFkX2xpbmsgKGRlY3NyYywg
c2Vzc2lvbi0+cmVjdl9ydHBfc2luayk7Ci0rICAgIH0KLSAgICAgZ3N0X29iamVjdF91bnJlZiAo
ZGVjc3JjKTsKLSAKLSAgICAgaWYgKHJldCAhPSBHU1RfUEFEX0xJTktfT0spCi1AQCAtMzI5MCw4
MSArMzQ3MSw1NCBAQCBjb21wbGV0ZV9zZXNzaW9uX3NpbmsgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwg
R3N0UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24pCi0gCi0gICB9IGVsc2UgewotICAgICBHU1RfREVC
VUdfT0JKRUNUIChydHBiaW4sICJubyBSVFAgZGVjb2RlciBnaXZlbiIpOwotLSAgICByZWN2X3J0
cF9zaW5rID0gZ3N0X29iamVjdF9yZWYgKHNlc3Npb24tPnJlY3ZfcnRwX3NpbmspOwotKyAgICBp
ZiAoc2Vzc2lvbi0+YnVuZGxlX2RlbXV4KSB7Ci0rICAgICAgcmVjdl9ydHBfc2luayA9Ci0rICAg
ICAgICAgIGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChzZXNzaW9uLT5idW5kbGVfZGVtdXgs
ICJzaW5rIik7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgcmVjdl9ydHBfc2luayA9Ci0rICAgICAg
ICAgIGdzdF9lbGVtZW50X2dldF9yZXF1ZXN0X3BhZCAoc2Vzc2lvbi0+cnRwX2Z1bm5lbCwgInNp
bmtfJXUiKTsKLSsgICAgfQotICAgfQotIAotLSAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAi
Z2hvc3Rpbmcgc2Vzc2lvbiBzaW5rIHBhZCIpOwotLSAga2xhc3MgPSBHU1RfRUxFTUVOVF9HRVRf
Q0xBU1MgKHJ0cGJpbik7Ci0tICBnbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInJlY3ZfcnRwX3Np
bmtfJXUiLCBzZXNzaWQpOwotLSAgdGVtcGwgPSBnc3RfZWxlbWVudF9jbGFzc19nZXRfcGFkX3Rl
bXBsYXRlIChrbGFzcywgInJlY3ZfcnRwX3NpbmtfJXUiKTsKLS0gIHNlc3Npb24tPnJlY3ZfcnRw
X3NpbmtfZ2hvc3QgPQotLSAgICAgIGdzdF9naG9zdF9wYWRfbmV3X2Zyb21fdGVtcGxhdGUgKGdu
YW1lLCByZWN2X3J0cF9zaW5rLCB0ZW1wbCk7Ci0tICBnc3Rfb2JqZWN0X3VucmVmIChyZWN2X3J0
cF9zaW5rKTsKLS0gIGdzdF9wYWRfc2V0X2FjdGl2ZSAoc2Vzc2lvbi0+cmVjdl9ydHBfc2lua19n
aG9zdCwgVFJVRSk7Ci0tICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVF9DQVNUIChy
dHBiaW4pLCBzZXNzaW9uLT5yZWN2X3J0cF9zaW5rX2dob3N0KTsKLS0gIGdfZnJlZSAoZ25hbWUp
OwotKyAgZnVubmVsX3NyYyA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChzZXNzaW9uLT5y
dHBfZnVubmVsLCAic3JjIik7Ci0rICBnc3RfcGFkX2xpbmsgKGZ1bm5lbF9zcmMsIHNlc3Npb24t
PnJlY3ZfcnRwX3NpbmspOwotKyAgZ3N0X29iamVjdF91bnJlZiAoZnVubmVsX3NyYyk7Ci0gCi0t
ICByZXR1cm4gVFJVRTsKLSsgIHJldHVybiByZWN2X3J0cF9zaW5rOwotIAotICAgLyogRVJST1JT
ICovCi0gcGFkX2ZhaWxlZDoKLSAgIHsKLSAgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQg
dG8gZ2V0IHNlc3Npb24gcmVjdl9ydHBfc2luayBwYWQiKTsKLS0gICAgcmV0dXJuIEZBTFNFOwot
KyAgICByZXR1cm4gTlVMTDsKLSAgIH0KLSBkZWNfc2lua19mYWlsZWQ6Ci0gICB7Ci0tICAgIGdf
d2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBkZWNvZGVyIHNpbmsgcGFkIGZvciBzZXNz
aW9uICVkIiwgc2Vzc2lkKTsKLS0gICAgcmV0dXJuIEZBTFNFOwotKyAgICBnX3dhcm5pbmcgKCJy
dHBiaW46IGZhaWxlZCB0byBnZXQgZGVjb2RlciBzaW5rIHBhZCBmb3Igc2Vzc2lvbiAldSIsIHNl
c3NpZCk7Ci0rICAgIHJldHVybiBOVUxMOwotICAgfQotIGRlY19zcmNfZmFpbGVkOgotICAgewot
LSAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgZGVjb2RlciBzcmMgcGFkIGZv
ciBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLSsgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQg
dG8gZ2V0IGRlY29kZXIgc3JjIHBhZCBmb3Igc2Vzc2lvbiAldSIsIHNlc3NpZCk7Ci0gICAgIGdz
dF9vYmplY3RfdW5yZWYgKHJlY3ZfcnRwX3NpbmspOwotLSAgICByZXR1cm4gRkFMU0U7Ci0rICAg
IHJldHVybiBOVUxMOwotICAgfQotIGRlY19saW5rX2ZhaWxlZDoKLSAgIHsKLS0gICAgZ193YXJu
aW5nICgicnRwYmluOiBmYWlsZWQgdG8gbGluayBydHAgZGVjb2RlciBmb3Igc2Vzc2lvbiAlZCIs
IHNlc3NpZCk7Ci0rICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGxpbmsgcnRwIGRl
Y29kZXIgZm9yIHNlc3Npb24gJXUiLCBzZXNzaWQpOwotICAgICBnc3Rfb2JqZWN0X3VucmVmIChy
ZWN2X3J0cF9zaW5rKTsKLS0gICAgcmV0dXJuIEZBTFNFOwotKyAgICByZXR1cm4gTlVMTDsKLSAg
IH0KLSB9Ci0gCi0tLyogQ3JlYXRlIGEgcGFkIGZvciByZWNlaXZpbmcgUlRQIGZvciB0aGUgc2Vz
c2lvbiBpbiBAbmFtZS4gTXVzdCBiZSBjYWxsZWQgd2l0aAotLSAqIFJUUF9CSU5fTE9DSy4KLS0g
Ki8KLS1zdGF0aWMgR3N0UGFkICoKLS1jcmVhdGVfcmVjdl9ydHAgKEdzdFJ0cEJpbiAqIHJ0cGJp
biwgR3N0UGFkVGVtcGxhdGUgKiB0ZW1wbCwgY29uc3QgZ2NoYXIgKiBuYW1lKQotK3N0YXRpYyB2
b2lkCi0rY29tcGxldGVfc2Vzc2lvbl9yZWNlaXZlciAoR3N0UnRwQmluICogcnRwYmluLCBHc3RS
dHBCaW5TZXNzaW9uICogc2Vzc2lvbiwKLSsgICAgZ3VpbnQgc2Vzc2lkKQotIHsKLS0gIGd1aW50
IHNlc3NpZDsKLSAgIEdzdEVsZW1lbnQgKmF1eDsKLSAgIEdzdFBhZCAqcmVjdl9ydHBfc3JjOwot
LSAgR3N0UnRwQmluU2Vzc2lvbiAqc2Vzc2lvbjsKLS0KLS0gIC8qIGZpcnN0IGdldCB0aGUgc2Vz
c2lvbiBudW1iZXIgKi8KLS0gIGlmIChuYW1lID09IE5VTEwgfHwgc3NjYW5mIChuYW1lLCAicmVj
dl9ydHBfc2lua18ldSIsICZzZXNzaWQpICE9IDEpCi0tICAgIGdvdG8gbm9fbmFtZTsKLS0KLS0g
IEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGJpbiwgImZpbmRpbmcgc2Vzc2lvbiAlZCIsIHNlc3NpZCk7
Ci0gCi0tICAvKiBnZXQgb3IgY3JlYXRlIHNlc3Npb24gKi8KLS0gIHNlc3Npb24gPSBmaW5kX3Nl
c3Npb25fYnlfaWQgKHJ0cGJpbiwgc2Vzc2lkKTsKLS0gIGlmICghc2Vzc2lvbikgewotLSAgICBH
U1RfREVCVUdfT0JKRUNUIChydHBiaW4sICJjcmVhdGluZyBzZXNzaW9uICVkIiwgc2Vzc2lkKTsK
LS0gICAgLyogY3JlYXRlIHNlc3Npb24gbm93ICovCi0tICAgIHNlc3Npb24gPSBjcmVhdGVfc2Vz
c2lvbiAocnRwYmluLCBzZXNzaWQpOwotLSAgICBpZiAoc2Vzc2lvbiA9PSBOVUxMKQotLSAgICAg
IGdvdG8gY3JlYXRlX2Vycm9yOwotLSAgfQotLQotLSAgLyogY2hlY2sgaWYgcGFkIHdhcyByZXF1
ZXN0ZWQgKi8KLS0gIGlmIChzZXNzaW9uLT5yZWN2X3J0cF9zaW5rX2dob3N0ICE9IE5VTEwpCi0t
ICAgIHJldHVybiBzZXNzaW9uLT5yZWN2X3J0cF9zaW5rX2dob3N0OwotLQotLSAgLyogc2V0dXAg
dGhlIHNlc3Npb24gc2luayBwYWQgKi8KLS0gIGlmICghY29tcGxldGVfc2Vzc2lvbl9zaW5rIChy
dHBiaW4sIHNlc3Npb24pKQotLSAgICBnb3RvIHNlc3Npb25fc2lua19mYWlsZWQ7Ci0rICBnX2Fz
c2VydCAoIXNlc3Npb24tPnJlY3ZfcnRwX3NyYyk7Ci0gCi0gICBzZXNzaW9uLT5yZWN2X3J0cF9z
cmMgPQotICAgICAgIGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChzZXNzaW9uLT5zZXNzaW9u
LCAicmVjdl9ydHBfc3JjIik7Ci1AQCAtMzM4MSw3ICszNTM1LDcgQEAgY3JlYXRlX3JlY3ZfcnRw
IChHc3RSdHBCaW4gKiBydHBiaW4sIEdzdFBhZFRlbXBsYXRlICogdGVtcGwsIGNvbnN0IGdjaGFy
ICogbmFtZSkKLSAKLSAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAibGlua2luZyBBVVgg
cmVjZWl2ZXIiKTsKLSAKLS0gICAgcG5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJzaW5rXyVkIiwg
c2Vzc2lkKTsKLSsgICAgcG5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJzaW5rXyV1Iiwgc2Vzc2lk
KTsKLSAgICAgYXV4c2luayA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChhdXgsIHBuYW1l
KTsKLSAgICAgZ19mcmVlIChwbmFtZSk7Ci0gICAgIGlmIChhdXhzaW5rID09IE5VTEwpCi1AQCAt
MzM5NCw3ICszNTQ4LDcgQEAgY3JlYXRlX3JlY3ZfcnRwIChHc3RSdHBCaW4gKiBydHBiaW4sIEdz
dFBhZFRlbXBsYXRlICogdGVtcGwsIGNvbnN0IGdjaGFyICogbmFtZSkKLSAKLSAgICAgLyogdGhp
cyBjYW4gYmUgTlVMTCB3aGVuIHRoaXMgQVVYIGVsZW1lbnQgaXMgbm90IHRvIGJlIGxpbmtlZCB0
bwotICAgICAgKiBhbiBTU1JDIGRlbXV4ZXIgKi8KLS0gICAgcG5hbWUgPSBnX3N0cmR1cF9wcmlu
dGYgKCJzcmNfJWQiLCBzZXNzaWQpOwotKyAgICBwbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInNy
Y18ldSIsIHNlc3NpZCk7Ci0gICAgIHJlY3ZfcnRwX3NyYyA9IGdzdF9lbGVtZW50X2dldF9zdGF0
aWNfcGFkIChhdXgsIHBuYW1lKTsKLSAgICAgZ19mcmVlIChwbmFtZSk7Ci0gICB9IGVsc2Ugewot
QEAgLTM0MDgsOCArMzU2Miw4IEBAIGNyZWF0ZV9yZWN2X3J0cCAoR3N0UnRwQmluICogcnRwYmlu
LCBHc3RQYWRUZW1wbGF0ZSAqIHRlbXBsLCBjb25zdCBnY2hhciAqIG5hbWUpCi0gICAgIHNpbmtk
cGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHNlc3Npb24tPmRlbXV4LCAic2luayIp
OwotICAgICBHU1RfREVCVUdfT0JKRUNUIChydHBiaW4sICJsaW5raW5nIGRlbXV4ZXIgUlRQIHNp
bmsgcGFkIik7Ci0gICAgIGdzdF9wYWRfbGlua19mdWxsIChyZWN2X3J0cF9zcmMsIHNpbmtkcGFk
LCBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7Ci0tICAgIGdzdF9vYmplY3RfdW5yZWYgKHJl
Y3ZfcnRwX3NyYyk7Ci0gICAgIGdzdF9vYmplY3RfdW5yZWYgKHNpbmtkcGFkKTsKLSsgICAgZ3N0
X29iamVjdF91bnJlZiAocmVjdl9ydHBfc3JjKTsKLSAKLSAgICAgLyogY29ubmVjdCB0byB0aGUg
bmV3LXNzcmMtcGFkIHNpZ25hbCBvZiB0aGUgU1NSQyBkZW11eGVyICovCi0gICAgIHNlc3Npb24t
PmRlbXV4X25ld3BhZF9zaWcgPSBnX3NpZ25hbF9jb25uZWN0IChzZXNzaW9uLT5kZW11eCwKLUBA
IC0zNDE3LDYgKzM1NzEsNzEgQEAgY3JlYXRlX3JlY3ZfcnRwIChHc3RSdHBCaW4gKiBydHBiaW4s
IEdzdFBhZFRlbXBsYXRlICogdGVtcGwsIGNvbnN0IGdjaGFyICogbmFtZSkKLSAgICAgc2Vzc2lv
bi0+ZGVtdXhfcGFkcmVtb3ZlZF9zaWcgPSBnX3NpZ25hbF9jb25uZWN0IChzZXNzaW9uLT5kZW11
eCwKLSAgICAgICAgICJyZW1vdmVkLXNzcmMtcGFkIiwgKEdDYWxsYmFjaykgc3NyY19kZW11eF9w
YWRfcmVtb3ZlZCwgc2Vzc2lvbik7Ci0gICB9Ci0rCi0rICByZXR1cm47Ci0rCi0rcGFkX2ZhaWxl
ZDoKLSsgIHsKLSsgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IHNlc3Npb24g
cmVjdl9ydHBfc3JjIHBhZCIpOwotKyAgICByZXR1cm47Ci0rICB9Ci0rYXV4X3NpbmtfZmFpbGVk
OgotKyAgewotKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgQVVYIHNpbmsg
cGFkIGZvciBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKLSsgICAgcmV0dXJuOwotKyAgfQotK2F1eF9s
aW5rX2ZhaWxlZDoKLSsgIHsKLSsgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gbGlu
ayBBVVggcGFkIHRvIHNlc3Npb24gJXUiLCBzZXNzaWQpOwotKyAgICByZXR1cm47Ci0rICB9Ci0r
fQotKwotKy8qIENyZWF0ZSBhIHBhZCBmb3IgcmVjZWl2aW5nIFJUUCBmb3IgdGhlIHNlc3Npb24g
aW4gQG5hbWUuIE11c3QgYmUgY2FsbGVkIHdpdGgKLSsgKiBSVFBfQklOX0xPQ0suCi0rICovCi0r
c3RhdGljIEdzdFBhZCAqCi0rY3JlYXRlX3JlY3ZfcnRwIChHc3RSdHBCaW4gKiBydHBiaW4sIEdz
dFBhZFRlbXBsYXRlICogdGVtcGwsIGNvbnN0IGdjaGFyICogbmFtZSkKLSt7Ci0rICBndWludCBz
ZXNzaWQ7Ci0rICBHc3RSdHBCaW5TZXNzaW9uICpzZXNzaW9uOwotKyAgR3N0UGFkICpyZWN2X3J0
cF9zaW5rOwotKwotKyAgLyogZmlyc3QgZ2V0IHRoZSBzZXNzaW9uIG51bWJlciAqLwotKyAgaWYg
KG5hbWUgPT0gTlVMTCB8fCBzc2NhbmYgKG5hbWUsICJyZWN2X3J0cF9zaW5rXyV1IiwgJnNlc3Np
ZCkgIT0gMSkKLSsgICAgZ290byBub19uYW1lOwotKwotKyAgR1NUX0RFQlVHX09CSkVDVCAocnRw
YmluLCAiZmluZGluZyBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKLSsKLSsgIC8qIGdldCBvciBjcmVh
dGUgc2Vzc2lvbiAqLwotKyAgc2Vzc2lvbiA9IGZpbmRfc2Vzc2lvbl9ieV9pZCAocnRwYmluLCBz
ZXNzaWQpOwotKyAgaWYgKCFzZXNzaW9uKSB7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGJp
biwgImNyZWF0aW5nIHNlc3Npb24gJXUiLCBzZXNzaWQpOwotKyAgICAvKiBjcmVhdGUgc2Vzc2lv
biBub3cgKi8KLSsgICAgc2Vzc2lvbiA9IGNyZWF0ZV9zZXNzaW9uIChydHBiaW4sIHNlc3NpZCk7
Ci0rICAgIGlmIChzZXNzaW9uID09IE5VTEwpCi0rICAgICAgZ290byBjcmVhdGVfZXJyb3I7Ci0r
ICB9Ci0rCi0rICAvKiBjaGVjayBpZiBwYWQgd2FzIHJlcXVlc3RlZCAqLwotKyAgaWYgKHNlc3Np
b24tPnJlY3ZfcnRwX3NpbmtfZ2hvc3QgIT0gTlVMTCkKLSsgICAgcmV0dXJuIHNlc3Npb24tPnJl
Y3ZfcnRwX3NpbmtfZ2hvc3Q7Ci0rCi0rICAvKiBzZXR1cCB0aGUgc2Vzc2lvbiBzaW5rIHBhZCAq
LwotKyAgcmVjdl9ydHBfc2luayA9IGNvbXBsZXRlX3Nlc3Npb25fc2luayAocnRwYmluLCBzZXNz
aW9uLCBUUlVFKTsKLSsgIGlmICghcmVjdl9ydHBfc2luaykKLSsgICAgZ290byBzZXNzaW9uX3Np
bmtfZmFpbGVkOwotKwotKwotKyAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAiZ2hvc3Rpbmcg
c2Vzc2lvbiBzaW5rIHBhZCIpOwotKyAgc2Vzc2lvbi0+cmVjdl9ydHBfc2lua19naG9zdCA9Ci0r
ICAgICAgZ3N0X2dob3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZSAobmFtZSwgcmVjdl9ydHBfc2lu
aywgdGVtcGwpOwotKyAgZ3N0X29iamVjdF91bnJlZiAocmVjdl9ydHBfc2luayk7Ci0rICBnc3Rf
cGFkX3NldF9hY3RpdmUgKHNlc3Npb24tPnJlY3ZfcnRwX3NpbmtfZ2hvc3QsIFRSVUUpOwotKyAg
Z3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlRfQ0FTVCAocnRwYmluKSwgc2Vzc2lvbi0+
cmVjdl9ydHBfc2lua19naG9zdCk7Ci0rCi0rICBjb21wbGV0ZV9zZXNzaW9uX3JlY2VpdmVyIChy
dHBiaW4sIHNlc3Npb24sIHNlc3NpZCk7Ci0rCi0gICByZXR1cm4gc2Vzc2lvbi0+cmVjdl9ydHBf
c2lua19naG9zdDsKLSAKLSAgIC8qIEVSUk9SUyAqLwotQEAgLTM0MzUsMjEgKzM2NTQsNiBAQCBz
ZXNzaW9uX3NpbmtfZmFpbGVkOgotICAgICAvKiB3YXJuaW5nIGFscmVhZHkgZG9uZSAqLwotICAg
ICByZXR1cm4gTlVMTDsKLSAgIH0KLS1wYWRfZmFpbGVkOgotLSAgewotLSAgICBnX3dhcm5pbmcg
KCJydHBiaW46IGZhaWxlZCB0byBnZXQgc2Vzc2lvbiByZWN2X3J0cF9zcmMgcGFkIik7Ci0tICAg
IHJldHVybiBOVUxMOwotLSAgfQotLWF1eF9zaW5rX2ZhaWxlZDoKLS0gIHsKLS0gICAgZ193YXJu
aW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IEFVWCBzaW5rIHBhZCBmb3Igc2Vzc2lvbiAlZCIs
IHNlc3NpZCk7Ci0tICAgIHJldHVybiBOVUxMOwotLSAgfQotLWF1eF9saW5rX2ZhaWxlZDoKLS0g
IHsKLS0gICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gbGluayBBVVggcGFkIHRvIHNl
c3Npb24gJWQiLCBzZXNzaWQpOwotLSAgICByZXR1cm4gTlVMTDsKLS0gIH0KLSB9Ci0gCi0gc3Rh
dGljIHZvaWQKLUBAIC0zNDYzLDYgKzM2NjcsMTEgQEAgcmVtb3ZlX3JlY3ZfcnRwIChHc3RSdHBC
aW4gKiBydHBiaW4sIEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9uKQotICAgICBnX3NpZ25hbF9o
YW5kbGVyX2Rpc2Nvbm5lY3QgKHNlc3Npb24tPmRlbXV4LCBzZXNzaW9uLT5kZW11eF9wYWRyZW1v
dmVkX3NpZyk7Ci0gICAgIHNlc3Npb24tPmRlbXV4X3BhZHJlbW92ZWRfc2lnID0gMDsKLSAgIH0K
LSsgIGlmIChzZXNzaW9uLT5idW5kbGVfZGVtdXhfbmV3cGFkX3NpZykgewotKyAgICBnX3NpZ25h
bF9oYW5kbGVyX2Rpc2Nvbm5lY3QgKHNlc3Npb24tPmJ1bmRsZV9kZW11eCwKLSsgICAgICAgIHNl
c3Npb24tPmJ1bmRsZV9kZW11eF9uZXdwYWRfc2lnKTsKLSsgICAgc2Vzc2lvbi0+YnVuZGxlX2Rl
bXV4X25ld3BhZF9zaWcgPSAwOwotKyAgfQotICAgaWYgKHNlc3Npb24tPnJlY3ZfcnRwX3NyYykg
ewotICAgICBnc3Rfb2JqZWN0X3VucmVmIChzZXNzaW9uLT5yZWN2X3J0cF9zcmMpOwotICAgICBz
ZXNzaW9uLT5yZWN2X3J0cF9zcmMgPSBOVUxMOwotQEAgLTM0ODAsMzcgKzM2ODksMTQgQEAgcmVt
b3ZlX3JlY3ZfcnRwIChHc3RSdHBCaW4gKiBydHBiaW4sIEdzdFJ0cEJpblNlc3Npb24gKiBzZXNz
aW9uKQotICAgfQotIH0KLSAKLS0vKiBDcmVhdGUgYSBwYWQgZm9yIHJlY2VpdmluZyBSVENQIGZv
ciB0aGUgc2Vzc2lvbiBpbiBAbmFtZS4gTXVzdCBiZSBjYWxsZWQgd2l0aAotLSAqIFJUUF9CSU5f
TE9DSy4KLS0gKi8KLSBzdGF0aWMgR3N0UGFkICoKLS1jcmVhdGVfcmVjdl9ydGNwIChHc3RSdHBC
aW4gKiBydHBiaW4sIEdzdFBhZFRlbXBsYXRlICogdGVtcGwsCi0tICAgIGNvbnN0IGdjaGFyICog
bmFtZSkKLStjb21wbGV0ZV9zZXNzaW9uX3J0Y3AgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0UnRw
QmluU2Vzc2lvbiAqIHNlc3Npb24sCi0rICAgIGd1aW50IHNlc3NpZCwgZ2Jvb2xlYW4gYnVuZGxl
X2RlbXV4ZXJfbmVlZGVkKQotIHsKLS0gIGd1aW50IHNlc3NpZDsKLSAgIEdzdEVsZW1lbnQgKmRl
Y29kZXI7Ci0tICBHc3RSdHBCaW5TZXNzaW9uICpzZXNzaW9uOwotLSAgR3N0UGFkICpzaW5rZHBh
ZCwgKmRlY3Npbms7Ci0tCi0tICAvKiBmaXJzdCBnZXQgdGhlIHNlc3Npb24gbnVtYmVyICovCi0t
ICBpZiAobmFtZSA9PSBOVUxMIHx8IHNzY2FuZiAobmFtZSwgInJlY3ZfcnRjcF9zaW5rXyV1Iiwg
JnNlc3NpZCkgIT0gMSkKLS0gICAgZ290byBub19uYW1lOwotLQotLSAgR1NUX0RFQlVHX09CSkVD
VCAocnRwYmluLCAiZmluZGluZyBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLS0KLS0gIC8qIGdldCBv
ciBjcmVhdGUgdGhlIHNlc3Npb24gKi8KLS0gIHNlc3Npb24gPSBmaW5kX3Nlc3Npb25fYnlfaWQg
KHJ0cGJpbiwgc2Vzc2lkKTsKLS0gIGlmICghc2Vzc2lvbikgewotLSAgICBHU1RfREVCVUdfT0JK
RUNUIChydHBiaW4sICJjcmVhdGluZyBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLS0gICAgLyogY3Jl
YXRlIHNlc3Npb24gbm93ICovCi0tICAgIHNlc3Npb24gPSBjcmVhdGVfc2Vzc2lvbiAocnRwYmlu
LCBzZXNzaWQpOwotLSAgICBpZiAoc2Vzc2lvbiA9PSBOVUxMKQotLSAgICAgIGdvdG8gY3JlYXRl
X2Vycm9yOwotLSAgfQotLQotLSAgLyogY2hlY2sgaWYgcGFkIHdhcyByZXF1ZXN0ZWQgKi8KLS0g
IGlmIChzZXNzaW9uLT5yZWN2X3J0Y3Bfc2lua19naG9zdCAhPSBOVUxMKQotLSAgICByZXR1cm4g
c2Vzc2lvbi0+cmVjdl9ydGNwX3NpbmtfZ2hvc3Q7Ci0rICBHc3RQYWQgKnNpbmtkcGFkOwotKyAg
R3N0UGFkICpkZWNzaW5rID0gTlVMTDsKLSsgIEdzdFBhZCAqZnVubmVsX3NyYzsKLSAKLSAgIC8q
IGdldCByZWN2X3J0cCBwYWQgYW5kIHN0b3JlICovCi0gICBHU1RfREVCVUdfT0JKRUNUIChydHBi
aW4sICJnZXR0aW5nIFJUQ1Agc2luayBwYWQiKTsKLUBAIC0zNTE5LDYgKzM3MDUsOSBAQCBjcmVh
dGVfcmVjdl9ydGNwIChHc3RSdHBCaW4gKiBydHBiaW4sIEdzdFBhZFRlbXBsYXRlICogdGVtcGws
Ci0gICBpZiAoc2Vzc2lvbi0+cmVjdl9ydGNwX3NpbmsgPT0gTlVMTCkKLSAgICAgZ290byBwYWRf
ZmFpbGVkOwotIAotKyAgaWYgKGJ1bmRsZV9kZW11eGVyX25lZWRlZCkKLSsgICAgc2Vzc2lvbl9t
YXliZV9jcmVhdGVfYnVuZGxlX2RlbXV4ZXIgKHNlc3Npb24pOwotKwotICAgR1NUX0RFQlVHX09C
SkVDVCAocnRwYmluLCAiZ2V0dGluZyBSVENQIGRlY29kZXIiKTsKLSAgIGRlY29kZXIgPSBzZXNz
aW9uX3JlcXVlc3RfZWxlbWVudCAoc2Vzc2lvbiwgU0lHTkFMX1JFUVVFU1RfUlRDUF9ERUNPREVS
KTsKLSAgIGlmIChkZWNvZGVyKSB7Ci1AQCAtMzUzNSwxNCArMzcyNCwyNiBAQCBjcmVhdGVfcmVj
dl9ydGNwIChHc3RSdHBCaW4gKiBydHBiaW4sIEdzdFBhZFRlbXBsYXRlICogdGVtcGwsCi0gICAg
IGlmIChkZWNzcmMgPT0gTlVMTCkKLSAgICAgICBnb3RvIGRlY19zcmNfZmFpbGVkOwotIAotLSAg
ICByZXQgPSBnc3RfcGFkX2xpbmsgKGRlY3NyYywgc2Vzc2lvbi0+cmVjdl9ydGNwX3NpbmspOwot
KyAgICBpZiAoc2Vzc2lvbi0+YnVuZGxlX2RlbXV4KSB7Ci0rICAgICAgR3N0UGFkICpkZW11eF9z
aW5rOwotKyAgICAgIGRlbXV4X3NpbmsgPQotKyAgICAgICAgICBnc3RfZWxlbWVudF9nZXRfc3Rh
dGljX3BhZCAoc2Vzc2lvbi0+YnVuZGxlX2RlbXV4LCAicnRjcF9zaW5rIik7Ci0rICAgICAgcmV0
ID0gZ3N0X3BhZF9saW5rIChkZWNzcmMsIGRlbXV4X3NpbmspOwotKyAgICAgIGdzdF9vYmplY3Rf
dW5yZWYgKGRlbXV4X3NpbmspOwotKyAgICB9IGVsc2UgewotKyAgICAgIHJldCA9IGdzdF9wYWRf
bGluayAoZGVjc3JjLCBzZXNzaW9uLT5yZWN2X3J0Y3Bfc2luayk7Ci0rICAgIH0KLSAgICAgZ3N0
X29iamVjdF91bnJlZiAoZGVjc3JjKTsKLSAKLSAgICAgaWYgKHJldCAhPSBHU1RfUEFEX0xJTktf
T0spCi0gICAgICAgZ290byBkZWNfbGlua19mYWlsZWQ7Ci0gICB9IGVsc2UgewotICAgICBHU1Rf
REVCVUdfT0JKRUNUIChydHBiaW4sICJubyBSVENQIGRlY29kZXIgZ2l2ZW4iKTsKLS0gICAgZGVj
c2luayA9IGdzdF9vYmplY3RfcmVmIChzZXNzaW9uLT5yZWN2X3J0Y3Bfc2luayk7Ci0rICAgIGlm
IChzZXNzaW9uLT5idW5kbGVfZGVtdXgpIHsKLSsgICAgICBkZWNzaW5rID0gZ3N0X2VsZW1lbnRf
Z2V0X3N0YXRpY19wYWQgKHNlc3Npb24tPmJ1bmRsZV9kZW11eCwgInJ0Y3Bfc2luayIpOwotKyAg
ICB9IGVsc2UgewotKyAgICAgIGRlY3NpbmsgPSBnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQg
KHNlc3Npb24tPnJ0Y3BfZnVubmVsLCAic2lua18ldSIpOwotKyAgICB9Ci0gICB9Ci0gCi0gICAv
KiBnZXQgc3JjcGFkLCBsaW5rIHRvIFNTUkNEZW11eCAqLwotQEAgLTM1NTYsMjYgKzM3NTcsMTIg
QEAgY3JlYXRlX3JlY3ZfcnRjcCAoR3N0UnRwQmluICogcnRwYmluLCBHc3RQYWRUZW1wbGF0ZSAq
IHRlbXBsLAotICAgZ3N0X3BhZF9saW5rX2Z1bGwgKHNlc3Npb24tPnN5bmNfc3JjLCBzaW5rZHBh
ZCwgR1NUX1BBRF9MSU5LX0NIRUNLX05PVEhJTkcpOwotICAgZ3N0X29iamVjdF91bnJlZiAoc2lu
a2RwYWQpOwotIAotLSAgc2Vzc2lvbi0+cmVjdl9ydGNwX3NpbmtfZ2hvc3QgPQotLSAgICAgIGdz
dF9naG9zdF9wYWRfbmV3X2Zyb21fdGVtcGxhdGUgKG5hbWUsIGRlY3NpbmssIHRlbXBsKTsKLS0g
IGdzdF9vYmplY3RfdW5yZWYgKGRlY3NpbmspOwotLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChzZXNz
aW9uLT5yZWN2X3J0Y3Bfc2lua19naG9zdCwgVFJVRSk7Ci0tICBnc3RfZWxlbWVudF9hZGRfcGFk
IChHU1RfRUxFTUVOVF9DQVNUIChydHBiaW4pLAotLSAgICAgIHNlc3Npb24tPnJlY3ZfcnRjcF9z
aW5rX2dob3N0KTsKLSsgIGZ1bm5lbF9zcmMgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAo
c2Vzc2lvbi0+cnRjcF9mdW5uZWwsICJzcmMiKTsKLSsgIGdzdF9wYWRfbGluayAoZnVubmVsX3Ny
Yywgc2Vzc2lvbi0+cmVjdl9ydGNwX3NpbmspOwotKyAgZ3N0X29iamVjdF91bnJlZiAoZnVubmVs
X3NyYyk7Ci0gCi0tICByZXR1cm4gc2Vzc2lvbi0+cmVjdl9ydGNwX3NpbmtfZ2hvc3Q7Ci0rICBy
ZXR1cm4gZGVjc2luazsKLSAKLS0gIC8qIEVSUk9SUyAqLwotLW5vX25hbWU6Ci0tICB7Ci0tICAg
IGdfd2FybmluZyAoInJ0cGJpbjogaW52YWxpZCBuYW1lIGdpdmVuIik7Ci0tICAgIHJldHVybiBO
VUxMOwotLSAgfQotLWNyZWF0ZV9lcnJvcjoKLS0gIHsKLS0gICAgLyogY3JlYXRlX3Nlc3Npb24g
YWxyZWFkeSB3YXJuZWQgKi8KLS0gICAgcmV0dXJuIE5VTEw7Ci0tICB9Ci0gcGFkX2ZhaWxlZDoK
LSAgIHsKLSAgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IHNlc3Npb24gcnRj
cF9zaW5rIHBhZCIpOwotQEAgLTM1ODMsMjUgKzM3NzAsODIgQEAgcGFkX2ZhaWxlZDoKLSAgIH0K
LSBkZWNfc2lua19mYWlsZWQ6Ci0gICB7Ci0tICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVk
IHRvIGdldCBkZWNvZGVyIHNpbmsgcGFkIGZvciBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLSsgICAg
Z193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IGRlY29kZXIgc2luayBwYWQgZm9yIHNl
c3Npb24gJXUiLCBzZXNzaWQpOwotICAgICByZXR1cm4gTlVMTDsKLSAgIH0KLSBkZWNfc3JjX2Zh
aWxlZDoKLSAgIHsKLS0gICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IGRlY29k
ZXIgc3JjIHBhZCBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7Ci0tICAgIGdzdF9vYmplY3RfdW5y
ZWYgKGRlY3NpbmspOwotLSAgICByZXR1cm4gTlVMTDsKLSsgICAgZ193YXJuaW5nICgicnRwYmlu
OiBmYWlsZWQgdG8gZ2V0IGRlY29kZXIgc3JjIHBhZCBmb3Igc2Vzc2lvbiAldSIsIHNlc3NpZCk7
Ci0rICAgIGdvdG8gY2xlYW51cDsKLSAgIH0KLSBkZWNfbGlua19mYWlsZWQ6Ci0gICB7Ci0tICAg
IGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGxpbmsgcnRjcCBkZWNvZGVyIGZvciBzZXNz
aW9uICVkIiwgc2Vzc2lkKTsKLS0gICAgZ3N0X29iamVjdF91bnJlZiAoZGVjc2luayk7Ci0tICAg
IHJldHVybiBOVUxMOwotKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBsaW5rIHJ0
Y3AgZGVjb2RlciBmb3Igc2Vzc2lvbiAldSIsIHNlc3NpZCk7Ci0rICAgIGdvdG8gY2xlYW51cDsK
LSAgIH0KLSBzcmNfcGFkX2ZhaWxlZDoKLSAgIHsKLSAgICAgZ193YXJuaW5nICgicnRwYmluOiBm
YWlsZWQgdG8gZ2V0IHNlc3Npb24gc3luY19zcmMgcGFkIik7Ci0tICAgIGdzdF9vYmplY3RfdW5y
ZWYgKGRlY3NpbmspOwotKyAgfQotKwotK2NsZWFudXA6Ci0rICBnc3Rfb2JqZWN0X3VucmVmIChk
ZWNzaW5rKTsKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLSsvKiBDcmVhdGUgYSBwYWQgZm9yIHJl
Y2VpdmluZyBSVENQIGZvciB0aGUgc2Vzc2lvbiBpbiBAbmFtZS4gTXVzdCBiZSBjYWxsZWQgd2l0
aAotKyAqIFJUUF9CSU5fTE9DSy4KLSsgKi8KLStzdGF0aWMgR3N0UGFkICoKLStjcmVhdGVfcmVj
dl9ydGNwIChHc3RSdHBCaW4gKiBydHBiaW4sIEdzdFBhZFRlbXBsYXRlICogdGVtcGwsCi0rICAg
IGNvbnN0IGdjaGFyICogbmFtZSkKLSt7Ci0rICBndWludCBzZXNzaWQ7Ci0rICBHc3RSdHBCaW5T
ZXNzaW9uICpzZXNzaW9uOwotKyAgR3N0UGFkICpkZWNzaW5rID0gTlVMTDsKLSsKLSsgIC8qIGZp
cnN0IGdldCB0aGUgc2Vzc2lvbiBudW1iZXIgKi8KLSsgIGlmIChuYW1lID09IE5VTEwgfHwgc3Nj
YW5mIChuYW1lLCAicmVjdl9ydGNwX3NpbmtfJXUiLCAmc2Vzc2lkKSAhPSAxKQotKyAgICBnb3Rv
IG5vX25hbWU7Ci0rCi0rICBHU1RfREVCVUdfT0JKRUNUIChydHBiaW4sICJmaW5kaW5nIHNlc3Np
b24gJXUiLCBzZXNzaWQpOwotKwotKyAgLyogZ2V0IG9yIGNyZWF0ZSB0aGUgc2Vzc2lvbiAqLwot
KyAgc2Vzc2lvbiA9IGZpbmRfc2Vzc2lvbl9ieV9pZCAocnRwYmluLCBzZXNzaWQpOwotKyAgaWYg
KCFzZXNzaW9uKSB7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGJpbiwgImNyZWF0aW5nIHNl
c3Npb24gJXUiLCBzZXNzaWQpOwotKyAgICAvKiBjcmVhdGUgc2Vzc2lvbiBub3cgKi8KLSsgICAg
c2Vzc2lvbiA9IGNyZWF0ZV9zZXNzaW9uIChydHBiaW4sIHNlc3NpZCk7Ci0rICAgIGlmIChzZXNz
aW9uID09IE5VTEwpCi0rICAgICAgZ290byBjcmVhdGVfZXJyb3I7Ci0rICB9Ci0rCi0rICAvKiBj
aGVjayBpZiBwYWQgd2FzIHJlcXVlc3RlZCAqLwotKyAgaWYgKHNlc3Npb24tPnJlY3ZfcnRjcF9z
aW5rX2dob3N0ICE9IE5VTEwpCi0rICAgIHJldHVybiBzZXNzaW9uLT5yZWN2X3J0Y3Bfc2lua19n
aG9zdDsKLSsKLSsgIGRlY3NpbmsgPSBjb21wbGV0ZV9zZXNzaW9uX3J0Y3AgKHJ0cGJpbiwgc2Vz
c2lvbiwgc2Vzc2lkLCBUUlVFKTsKLSsgIGlmICghZGVjc2luaykKLSsgICAgZ290byBjcmVhdGVf
ZXJyb3I7Ci0rCi0rICBzZXNzaW9uLT5yZWN2X3J0Y3Bfc2lua19naG9zdCA9Ci0rICAgICAgZ3N0
X2dob3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZSAobmFtZSwgZGVjc2luaywgdGVtcGwpOwotKyAg
Z3N0X29iamVjdF91bnJlZiAoZGVjc2luayk7Ci0rICBnc3RfcGFkX3NldF9hY3RpdmUgKHNlc3Np
b24tPnJlY3ZfcnRjcF9zaW5rX2dob3N0LCBUUlVFKTsKLSsgIGdzdF9lbGVtZW50X2FkZF9wYWQg
KEdTVF9FTEVNRU5UX0NBU1QgKHJ0cGJpbiksCi0rICAgICAgc2Vzc2lvbi0+cmVjdl9ydGNwX3Np
bmtfZ2hvc3QpOwotKwotKyAgcmV0dXJuIHNlc3Npb24tPnJlY3ZfcnRjcF9zaW5rX2dob3N0Owot
KwotKyAgLyogRVJST1JTICovCi0rbm9fbmFtZToKLSsgIHsKLSsgICAgZ193YXJuaW5nICgicnRw
YmluOiBpbnZhbGlkIG5hbWUgZ2l2ZW4iKTsKLSsgICAgcmV0dXJuIE5VTEw7Ci0rICB9Ci0rY3Jl
YXRlX2Vycm9yOgotKyAgewotKyAgICAvKiBjcmVhdGVfc2Vzc2lvbiBhbHJlYWR5IHdhcm5lZCAq
LwotICAgICByZXR1cm4gTlVMTDsKLSAgIH0KLSB9Ci1AQCAtMzY1MSw3ICszODk1LDcgQEAgY29t
cGxldGVfc2Vzc2lvbl9zcmMgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0UnRwQmluU2Vzc2lvbiAq
IHNlc3Npb24pCi0gICAgIEdzdFBhZExpbmtSZXR1cm4gcmV0OwotIAotICAgICBHU1RfREVCVUdf
T0JKRUNUIChydHBiaW4sICJsaW5raW5nIFJUUCBlbmNvZGVyIik7Ci0tICAgIGVuYW1lID0gZ19z
dHJkdXBfcHJpbnRmICgicnRwX3NyY18lZCIsIHNlc3NpZCk7Ci0rICAgIGVuYW1lID0gZ19zdHJk
dXBfcHJpbnRmICgicnRwX3NyY18ldSIsIHNlc3NpZCk7Ci0gICAgIGVuY3NyYyA9IGdzdF9lbGVt
ZW50X2dldF9zdGF0aWNfcGFkIChlbmNvZGVyLCBlbmFtZSk7Ci0gICAgIGdfZnJlZSAoZW5hbWUp
OwotIAotQEAgLTM2NjAsNyArMzkwNCw3IEBAIGNvbXBsZXRlX3Nlc3Npb25fc3JjIChHc3RSdHBC
aW4gKiBydHBiaW4sIEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9uKQotIAotICAgICBzZW5kX3J0
cF9zcmMgPSBlbmNzcmM7Ci0gCi0tICAgIGVuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgicnRwX3Np
bmtfJWQiLCBzZXNzaWQpOwotKyAgICBlbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInJ0cF9zaW5r
XyV1Iiwgc2Vzc2lkKTsKLSAgICAgZW5jc2luayA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFk
IChlbmNvZGVyLCBlbmFtZSk7Ci0gICAgIGdfZnJlZSAoZW5hbWUpOwotICAgICBpZiAoZW5jc2lu
ayA9PSBOVUxMKQotQEAgLTM2OTQsMjMgKzM5MzgsMjMgQEAgY29tcGxldGVfc2Vzc2lvbl9zcmMg
KEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24pCi0gICAvKiBF
UlJPUlMgKi8KLSBub19zcmNwYWQ6Ci0gICB7Ci0tICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFp
bGVkIHRvIGdldCBydHAgc291cmNlIHBhZCBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7Ci0rICAg
IGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBydHAgc291cmNlIHBhZCBmb3Igc2Vz
c2lvbiAldSIsIHNlc3NpZCk7Ci0gICAgIHJldHVybiBGQUxTRTsKLSAgIH0KLSBlbmNfc3JjX2Zh
aWxlZDoKLSAgIHsKLS0gICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IGVuY29k
ZXIgc3JjIHBhZCBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7Ci0rICAgIGdfd2FybmluZyAoInJ0
cGJpbjogZmFpbGVkIHRvIGdldCBlbmNvZGVyIHNyYyBwYWQgZm9yIHNlc3Npb24gJXUiLCBzZXNz
aWQpOwotICAgICByZXR1cm4gRkFMU0U7Ci0gICB9Ci0gZW5jX3NpbmtfZmFpbGVkOgotICAgewot
LSAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgZW5jb2RlciBzaW5rIHBhZCBm
b3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7Ci0rICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVk
IHRvIGdldCBlbmNvZGVyIHNpbmsgcGFkIGZvciBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKLSAgICAg
Z3N0X29iamVjdF91bnJlZiAoc2VuZF9ydHBfc3JjKTsKLSAgICAgcmV0dXJuIEZBTFNFOwotICAg
fQotIGVuY19saW5rX2ZhaWxlZDoKLSAgIHsKLS0gICAgZ193YXJuaW5nICgicnRwYmluOiBmYWls
ZWQgdG8gbGluayBydHAgZW5jb2RlciBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7Ci0rICAgIGdf
d2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGxpbmsgcnRwIGVuY29kZXIgZm9yIHNlc3Npb24g
JXUiLCBzZXNzaWQpOwotICAgICBnc3Rfb2JqZWN0X3VucmVmIChzZW5kX3J0cF9zcmMpOwotICAg
ICByZXR1cm4gRkFMU0U7Ci0gICB9Ci1AQCAtMzc3MiwyMiArNDAxNiwyMiBAQCBjcmVhdGVfZXJy
b3I6Ci0gICB9Ci0gZXhpc3Rpbmdfc2Vzc2lvbjoKLSAgIHsKLS0gICAgZ193YXJuaW5nICgicnRw
YmluOiBzZXNzaW9uICVkIGlzIGFscmVhZHkgYSBzZW5kZXIiLCBzZXNzaWQpOwotKyAgICBnX3dh
cm5pbmcgKCJydHBiaW46IHNlc3Npb24gJXUgaXMgYWxyZWFkeSBhIHNlbmRlciIsIHNlc3NpZCk7
Ci0gICAgIHJldHVybiBGQUxTRTsKLSAgIH0KLSBwYWRfZmFpbGVkOgotICAgewotLSAgICBnX3dh
cm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgc2Vzc2lvbiBwYWQgZm9yIHNlc3Npb24gJWQi
LCBzZXNzaWQpOwotKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgc2Vzc2lv
biBwYWQgZm9yIHNlc3Npb24gJXUiLCBzZXNzaWQpOwotICAgICByZXR1cm4gRkFMU0U7Ci0gICB9
Ci0gYXV4X2xpbmtfZmFpbGVkOgotICAgewotLSAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxl
ZCB0byBsaW5rIEFVWCBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7Ci0rICAgIGdfd2FybmluZyAo
InJ0cGJpbjogZmFpbGVkIHRvIGxpbmsgQVVYIGZvciBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKLSAg
ICAgcmV0dXJuIEZBTFNFOwotICAgfQotIHNlc3Npb25fc3JjX2ZhaWxlZDoKLSAgIHsKLS0gICAg
Z193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gY29tcGxldGUgQVVYIGZvciBzZXNzaW9uICVk
Iiwgc2Vzc2lkKTsKLSsgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gY29tcGxldGUg
QVVYIGZvciBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKLSAgICAgcmV0dXJuIEZBTFNFOwotICAgfQot
IH0KLUBAIC0zODQ3LDcgKzQwOTEsNyBAQCBjcmVhdGVfc2VuZF9ydHAgKEdzdFJ0cEJpbiAqIHJ0
cGJpbiwgR3N0UGFkVGVtcGxhdGUgKiB0ZW1wbCwgY29uc3QgZ2NoYXIgKiBuYW1lKQotICAgICBp
ZiAoIXNldHVwX2F1eF9zZW5kZXIgKHJ0cGJpbiwgc2Vzc2lvbiwgYXV4KSkKLSAgICAgICBnb3Rv
IGF1eF9zZXNzaW9uX2ZhaWxlZDsKLSAKLS0gICAgcG5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJz
aW5rXyVkIiwgc2Vzc2lkKTsKLSsgICAgcG5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJzaW5rXyV1
Iiwgc2Vzc2lkKTsKLSAgICAgc2VuZF9ydHBfc2luayA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNf
cGFkIChhdXgsIHBuYW1lKTsKLSAgICAgZ19mcmVlIChwbmFtZSk7Ci0gCi1AQCAtMzg4NywyNyAr
NDEzMSwyNyBAQCBjcmVhdGVfZXJyb3I6Ci0gICB9Ci0gZXhpc3Rpbmdfc2Vzc2lvbjoKLSAgIHsK
LS0gICAgZ193YXJuaW5nICgicnRwYmluOiBzZXNzaW9uICVkIGlzIGFscmVhZHkgaW4gdXNlIiwg
c2Vzc2lkKTsKLSsgICAgZ193YXJuaW5nICgicnRwYmluOiBzZXNzaW9uICV1IGlzIGFscmVhZHkg
aW4gdXNlIiwgc2Vzc2lkKTsKLSAgICAgcmV0dXJuIE5VTEw7Ci0gICB9Ci0gYXV4X3Nlc3Npb25f
ZmFpbGVkOgotICAgewotLSAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgQVVY
IHNpbmsgcGFkIGZvciBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLSsgICAgZ193YXJuaW5nICgicnRw
YmluOiBmYWlsZWQgdG8gZ2V0IEFVWCBzaW5rIHBhZCBmb3Igc2Vzc2lvbiAldSIsIHNlc3NpZCk7
Ci0gICAgIHJldHVybiBOVUxMOwotICAgfQotIGF1eF9zaW5rX2ZhaWxlZDoKLSAgIHsKLS0gICAg
Z193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IEFVWCBzaW5rIHBhZCBmb3Igc2Vzc2lv
biAlZCIsIHNlc3NpZCk7Ci0rICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBB
VVggc2luayBwYWQgZm9yIHNlc3Npb24gJXUiLCBzZXNzaWQpOwotICAgICByZXR1cm4gTlVMTDsK
LSAgIH0KLSBwYWRfZmFpbGVkOgotICAgewotLSAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxl
ZCB0byBnZXQgc2Vzc2lvbiBwYWQgZm9yIHNlc3Npb24gJWQiLCBzZXNzaWQpOwotKyAgICBnX3dh
cm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgc2Vzc2lvbiBwYWQgZm9yIHNlc3Npb24gJXUi
LCBzZXNzaWQpOwotICAgICByZXR1cm4gTlVMTDsKLSAgIH0KLSBzZXNzaW9uX3NyY19mYWlsZWQ6
Ci0gICB7Ci0tICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIHNldHVwIHNvdXJjZSBw
YWRzIGZvciBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLSsgICAgZ193YXJuaW5nICgicnRwYmluOiBm
YWlsZWQgdG8gc2V0dXAgc291cmNlIHBhZHMgZm9yIHNlc3Npb24gJXUiLCBzZXNzaWQpOwotICAg
ICByZXR1cm4gTlVMTDsKLSAgIH0KLSB9Ci1AQCAtMzk3OCwxMyArNDIyMiwxMyBAQCBjcmVhdGVf
cnRjcCAoR3N0UnRwQmluICogcnRwYmluLCBHc3RQYWRUZW1wbGF0ZSAqIHRlbXBsLCBjb25zdCBn
Y2hhciAqIG5hbWUpCi0gCi0gICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGJpbiwgImxpbmtpbmcg
UlRDUCBlbmNvZGVyIik7Ci0gCi0tICAgIGVuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgicnRjcF9z
cmNfJWQiLCBzZXNzaWQpOwotKyAgICBlbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInJ0Y3Bfc3Jj
XyV1Iiwgc2Vzc2lkKTsKLSAgICAgZW5jc3JjID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQg
KGVuY29kZXIsIGVuYW1lKTsKLSAgICAgZ19mcmVlIChlbmFtZSk7Ci0gICAgIGlmIChlbmNzcmMg
PT0gTlVMTCkKLSAgICAgICBnb3RvIGVuY19zcmNfZmFpbGVkOwotIAotLSAgICBlbmFtZSA9IGdf
c3RyZHVwX3ByaW50ZiAoInJ0Y3Bfc2lua18lZCIsIHNlc3NpZCk7Ci0rICAgIGVuYW1lID0gZ19z
dHJkdXBfcHJpbnRmICgicnRjcF9zaW5rXyV1Iiwgc2Vzc2lkKTsKLSAgICAgZW5jc2luayA9IGdz
dF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChlbmNvZGVyLCBlbmFtZSk7Ci0gICAgIGdfZnJlZSAo
ZW5hbWUpOwotICAgICBpZiAoZW5jc2luayA9PSBOVUxMKQotQEAgLTQwMjEsMjMgKzQyNjUsMjMg
QEAgbm9fc2Vzc2lvbjoKLSAgIH0KLSBwYWRfZmFpbGVkOgotICAgewotLSAgICBnX3dhcm5pbmcg
KCJydHBiaW46IGZhaWxlZCB0byBnZXQgcnRjcCBwYWQgZm9yIHNlc3Npb24gJWQiLCBzZXNzaWQp
OwotKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgcnRjcCBwYWQgZm9yIHNl
c3Npb24gJXUiLCBzZXNzaWQpOwotICAgICByZXR1cm4gTlVMTDsKLSAgIH0KLSBlbmNfc3JjX2Zh
aWxlZDoKLSAgIHsKLS0gICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IGVuY29k
ZXIgc3JjIHBhZCBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7Ci0rICAgIGdfd2FybmluZyAoInJ0
cGJpbjogZmFpbGVkIHRvIGdldCBlbmNvZGVyIHNyYyBwYWQgZm9yIHNlc3Npb24gJXUiLCBzZXNz
aWQpOwotICAgICByZXR1cm4gTlVMTDsKLSAgIH0KLSBlbmNfc2lua19mYWlsZWQ6Ci0gICB7Ci0t
ICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBlbmNvZGVyIHNpbmsgcGFkIGZv
ciBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLSsgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQg
dG8gZ2V0IGVuY29kZXIgc2luayBwYWQgZm9yIHNlc3Npb24gJXUiLCBzZXNzaWQpOwotICAgICBn
c3Rfb2JqZWN0X3VucmVmIChlbmNzcmMpOwotICAgICByZXR1cm4gTlVMTDsKLSAgIH0KLSBlbmNf
bGlua19mYWlsZWQ6Ci0gICB7Ci0tICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGxp
bmsgcnRjcCBlbmNvZGVyIGZvciBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLSsgICAgZ193YXJuaW5n
ICgicnRwYmluOiBmYWlsZWQgdG8gbGluayBydGNwIGVuY29kZXIgZm9yIHNlc3Npb24gJXUiLCBz
ZXNzaWQpOwotICAgICBnc3Rfb2JqZWN0X3VucmVmIChlbmNzcmMpOwotICAgICByZXR1cm4gTlVM
TDsKLSAgIH0KLWRpZmYgLS1naXQgYS9nc3QvcnRwbWFuYWdlci9nc3RydHBiaW4uaCBiL2dzdC9y
dHBtYW5hZ2VyL2dzdHJ0cGJpbi5oCi1pbmRleCBmYjEzYTQ3Li4zODRiNzZkIDEwMDY0NAotLS0t
IGEvZ3N0L3J0cG1hbmFnZXIvZ3N0cnRwYmluLmgKLSsrKyBiL2dzdC9ydHBtYW5hZ2VyL2dzdHJ0
cGJpbi5oCi1AQCAtMTI3LDYgKzEyNyw4IEBAIHN0cnVjdCBfR3N0UnRwQmluQ2xhc3MgewotIAot
ICAgdm9pZCAgICAgKCpvbl9uZXdfc2VuZGVyX3NzcmMpICAgICAgKEdzdFJ0cEJpbiAqcnRwYmlu
LCBndWludCBzZXNzaW9uLCBndWludDMyIHNzcmMpOwotICAgdm9pZCAgICAgKCpvbl9zZW5kZXJf
c3NyY19hY3RpdmUpICAgKEdzdFJ0cEJpbiAqcnRwYmluLCBndWludCBzZXNzaW9uLCBndWludDMy
IHNzcmMpOwotKwotKyAgZ3VpbnQgICAgKCpvbl9idW5kbGVkX3NzcmMpICAgICAgICAgKEdzdFJ0
cEJpbiAqcnRwYmluLCBndWludCBzc3JjKTsKLSB9OwotIAotIEdUeXBlIGdzdF9ydHBfYmluX2dl
dF90eXBlICh2b2lkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9wYXRjaGVzL2dzdC1wbHVnaW5z
LWdvb2QtMDAwNS1zb3VwaHR0cHNyYy1jb29raWUtamFyLWFuZC1jb250ZXh0LXF1ZXJ5LXN1cHBv
cnQucGF0Y2ggYi9Ub29scy9ndGsvcGF0Y2hlcy9nc3QtcGx1Z2lucy1nb29kLTAwMDUtc291cGh0
dHBzcmMtY29va2llLWphci1hbmQtY29udGV4dC1xdWVyeS1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NGVkYmQ2ZjgzZWZlYjY0N2M3ZDJiYjNmYmFmNWE5NWRj
YzdlMGVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rv
b2xzL2d0ay9wYXRjaGVzL2dzdC1wbHVnaW5zLWdvb2QtMDAwNS1zb3VwaHR0cHNyYy1jb29raWUt
amFyLWFuZC1jb250ZXh0LXF1ZXJ5LXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwx
MjAgKzAsMCBAQAotRnJvbSA4ZTAzYTYzZmQ1NWY1YWU0NDc5OTQ1Nzk4OTBlODYzMGIyN2Y0YTFi
IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5A
aWdhbGlhLmNvbT4KLURhdGU6IFdlZCwgMjggT2N0IDIwMTUgMTI6MDA6MDkgKzAxMDAKLVN1Ympl
Y3Q6IFtQQVRDSCAyLzNdIHNvdXBodHRwc3JjOiBjb29raWUgamFyIGFuZCBjb250ZXh0IHF1ZXJ5
IHN1cHBvcnQKLQotVXNlIGEgdm9sYXRpbGUgQ29va2llIGphciB0byBzdG9yZSBjb29raWVzIGFu
ZCBoYW5kbGUgdGhlIGNvbnRleHQKLXF1ZXJ5IHNvIHRoYXQgc2Vzc2lvbiBkYXRhIGNhbiBiZSBz
aGFyZWQgd2l0aCBvdGhlciBlbGVtZW50cyAobGlrZQotYWRhcHRpdmVkZW11eCkuCi0KLWh0dHBz
Oi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03MjYzMTQKLS0tLQotIGV4dC9z
b3VwL2dzdHNvdXBodHRwc3JjLmMgfCA0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKystLQotIGV4dC9zb3VwL2dzdHNvdXBodHRwc3JjLmggfCAgMSArCi0gMiBmaWxlcyBj
aGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEv
ZXh0L3NvdXAvZ3N0c291cGh0dHBzcmMuYyBiL2V4dC9zb3VwL2dzdHNvdXBodHRwc3JjLmMKLWlu
ZGV4IGZjN2NiYTcuLjBkM2U4ODYgMTAwNjQ0Ci0tLS0gYS9leHQvc291cC9nc3Rzb3VwaHR0cHNy
Yy5jCi0rKysgYi9leHQvc291cC9nc3Rzb3VwaHR0cHNyYy5jCi1AQCAtNDgyLDYgKzQ4Miw3IEBA
IGdzdF9zb3VwX2h0dHBfc3JjX2luaXQgKEdzdFNvdXBIVFRQU3JjICogc3JjKQotICAgc3JjLT5j
b29raWVzID0gTlVMTDsKLSAgIHNyYy0+aXJhZGlvX21vZGUgPSBERUZBVUxUX0lSQURJT19NT0RF
OwotICAgc3JjLT5zZXNzaW9uID0gTlVMTDsKLSsgIHNyYy0+Y29va2llX2phciA9IE5VTEw7Ci0g
ICBzcmMtPm1zZyA9IE5VTEw7Ci0gICBzcmMtPnRpbWVvdXQgPSBERUZBVUxUX1RJTUVPVVQ7Ci0g
ICBzcmMtPmxvZ19sZXZlbCA9IERFRkFVTFRfU09VUF9MT0dfTEVWRUw7Ci1AQCAtOTQzLDYgKzk0
NCw5IEBAIGdzdF9zb3VwX2h0dHBfc3JjX3Nlc3Npb25fb3BlbiAoR3N0U291cEhUVFBTcmMgKiBz
cmMpCi0gICAgIHNvdXBfc2Vzc2lvbl9yZW1vdmVfZmVhdHVyZV9ieV90eXBlIChzcmMtPnNlc3Np
b24sCi0gICAgICAgICBTT1VQX1RZUEVfQ09OVEVOVF9ERUNPREVSKTsKLSAKLSsgIHNyYy0+Y29v
a2llX2phciA9IHNvdXBfY29va2llX2phcl9uZXcgKCk7Ci0rICBzb3VwX3Nlc3Npb25fYWRkX2Zl
YXR1cmUgKHNyYy0+c2Vzc2lvbiwKLSsgICAgICBTT1VQX1NFU1NJT05fRkVBVFVSRSAoc3JjLT5j
b29raWVfamFyKSk7Ci0gICByZXR1cm4gVFJVRTsKLSB9Ci0gCi1AQCAtOTU4LDYgKzk2MiwxMSBA
QCBnc3Rfc291cF9odHRwX3NyY19zZXNzaW9uX2Nsb3NlIChHc3RTb3VwSFRUUFNyYyAqIHNyYykK
LSAgICAgc3JjLT5tc2cgPSBOVUxMOwotICAgfQotIAotKyAgaWYgKHNyYy0+Y29va2llX2phcikg
ewotKyAgICBnX29iamVjdF91bnJlZiAoc3JjLT5jb29raWVfamFyKTsKLSsgICAgc3JjLT5jb29r
aWVfamFyID0gTlVMTDsKLSsgIH0KLSsKLSAgIGlmIChzcmMtPnNlc3Npb24pIHsKLSAgICAgc291
cF9zZXNzaW9uX2Fib3J0IChzcmMtPnNlc3Npb24pOwotICAgICBnX29iamVjdF91bnJlZiAoc3Jj
LT5zZXNzaW9uKTsKLUBAIC0xNDI2LDExICsxNDM1LDEyIEBAIGdzdF9zb3VwX2h0dHBfc3JjX2J1
aWxkX21lc3NhZ2UgKEdzdFNvdXBIVFRQU3JjICogc3JjLCBjb25zdCBnY2hhciAqIG1ldGhvZCkK
LSAgIH0KLSAgIGlmIChzcmMtPmNvb2tpZXMpIHsKLSAgICAgZ2NoYXIgKipjb29raWU7Ci0rICAg
IFNvdXBVUkkgKnVyaSA9IHNvdXBfdXJpX25ldyAoc3JjLT5sb2NhdGlvbik7Ci0gCi0gICAgIGZv
ciAoY29va2llID0gc3JjLT5jb29raWVzOyAqY29va2llICE9IE5VTEw7IGNvb2tpZSsrKSB7Ci0t
ICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kIChzcmMtPm1zZy0+cmVxdWVzdF9oZWFk
ZXJzLCAiQ29va2llIiwKLS0gICAgICAgICAgKmNvb2tpZSk7Ci0rICAgICAgc291cF9jb29raWVf
amFyX3NldF9jb29raWUgKHNyYy0+Y29va2llX2phciwgdXJpLCAqY29va2llKTsKLSAgICAgfQot
KyAgICBzb3VwX3VyaV9mcmVlICh1cmkpOwotICAgfQotIAotICAgc291cF9tZXNzYWdlX3NldF9m
bGFncyAoc3JjLT5tc2csIFNPVVBfTUVTU0FHRV9PVkVSV1JJVEVfQ0hVTktTIHwKLUBAIC0xOTEw
LDYgKzE5MjAsMTIgQEAgZ3N0X3NvdXBfaHR0cF9zcmNfcXVlcnkgKEdzdEJhc2VTcmMgKiBic3Jj
LCBHc3RRdWVyeSAqIHF1ZXJ5KQotICAgZ2Jvb2xlYW4gcmV0OwotICAgR3N0U2NoZWR1bGluZ0Zs
YWdzIGZsYWdzOwotICAgZ2ludCBtaW5zaXplLCBtYXhzaXplLCBhbGlnbjsKLSsgIEdzdENvbnRl
eHQgKmNvbnRleHQ7Ci0rICBHc3RTdHJ1Y3R1cmUgKmNvbnRleHRfc3RydWN0dXJlOwotKyAgY2hh
ciAqY29va2llOwotKyAgY29uc3QgZ2NoYXIgKmNvb2tpZXNbMl07Ci0rICBjb25zdCBnY2hhciAq
Y29udGV4dF90eXBlOwotKyAgU291cFVSSSAqdXJpOwotIAotICAgc3dpdGNoIChHU1RfUVVFUllf
VFlQRSAocXVlcnkpKSB7Ci0gICAgIGNhc2UgR1NUX1FVRVJZX1VSSToKLUBAIC0xOTIxLDYgKzE5
MzcsMjcgQEAgZ3N0X3NvdXBfaHR0cF9zcmNfcXVlcnkgKEdzdEJhc2VTcmMgKiBic3JjLCBHc3RR
dWVyeSAqIHF1ZXJ5KQotICAgICAgIH0KLSAgICAgICByZXQgPSBUUlVFOwotICAgICAgIGJyZWFr
OwotKyAgICBjYXNlIEdTVF9RVUVSWV9DT05URVhUOgotKyAgICAgIGlmIChnc3RfcXVlcnlfcGFy
c2VfY29udGV4dF90eXBlIChxdWVyeSwgJmNvbnRleHRfdHlwZSkKLSsgICAgICAgICAgJiYgIWdf
c3RyY21wMCAoY29udGV4dF90eXBlLCAiaHR0cC1oZWFkZXJzIikpIHsKLSsgICAgICAgIHVyaSA9
IHNvdXBfdXJpX25ldyAoc3JjLT5sb2NhdGlvbik7Ci0rICAgICAgICBjb29raWUgPSBzb3VwX2Nv
b2tpZV9qYXJfZ2V0X2Nvb2tpZXMgKHNyYy0+Y29va2llX2phciwgdXJpLCBUUlVFKTsKLSsgICAg
ICAgIGNvbnRleHQgPSBnc3RfY29udGV4dF9uZXcgKCJodHRwLWhlYWRlcnMiLCBGQUxTRSk7Ci0r
ICAgICAgICBnc3RfY29udGV4dF9tYWtlX3dyaXRhYmxlIChjb250ZXh0KTsKLSsgICAgICAgIGNv
bnRleHRfc3RydWN0dXJlID0gZ3N0X2NvbnRleHRfd3JpdGFibGVfc3RydWN0dXJlIChjb250ZXh0
KTsKLSsgICAgICAgIGlmIChjb29raWUgIT0gTlVMTCkgewotKyAgICAgICAgICBjb29raWVzWzBd
ID0gY29va2llOwotKyAgICAgICAgICBjb29raWVzWzFdID0gTlVMTDsKLSsgICAgICAgICAgZ3N0
X3N0cnVjdHVyZV9zZXQgKGNvbnRleHRfc3RydWN0dXJlLCAiY29va2llcyIsIEdfVFlQRV9TVFJW
LCBjb29raWVzLAotKyAgICAgICAgICAgICAgTlVMTCk7Ci0rICAgICAgICAgIGdfZnJlZSAoY29v
a2llKTsKLSsgICAgICAgIH0KLSsgICAgICAgIGdzdF9xdWVyeV9zZXRfY29udGV4dCAocXVlcnks
IGNvbnRleHQpOwotKyAgICAgICAgc291cF91cmlfZnJlZSAodXJpKTsKLSsgICAgICAgIHJldCA9
IFRSVUU7Ci0rICAgICAgICBicmVhazsKLSsgICAgICB9Ci0rCi0gICAgIGRlZmF1bHQ6Ci0gICAg
ICAgcmV0ID0gRkFMU0U7Ci0gICAgICAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvZXh0L3NvdXAvZ3N0
c291cGh0dHBzcmMuaCBiL2V4dC9zb3VwL2dzdHNvdXBodHRwc3JjLmgKLWluZGV4IGRkMDE2NTYu
LjljNmJiNWMgMTAwNjQ0Ci0tLS0gYS9leHQvc291cC9nc3Rzb3VwaHR0cHNyYy5oCi0rKysgYi9l
eHQvc291cC9nc3Rzb3VwaHR0cHNyYy5oCi1AQCAtNjAsNiArNjAsNyBAQCBzdHJ1Y3QgX0dzdFNv
dXBIVFRQU3JjIHsKLSAgIGdjaGFyICpwcm94eV9wdzsgICAgICAgICAgICAgLyogQXV0aGVudGlj
YXRpb24gdXNlciBwYXNzd29yZCBmb3IgcHJveHkgVVJJLiAqLwotICAgZ2NoYXIgKipjb29raWVz
OyAgICAgICAgICAgICAvKiBIVFRQIHJlcXVlc3QgY29va2llcy4gKi8KLSAgIFNvdXBTZXNzaW9u
ICpzZXNzaW9uOyAgICAgICAgLyogQXN5bmMgY29udGV4dC4gKi8KLSsgIFNvdXBDb29raWVKYXIg
KmNvb2tpZV9qYXI7ICAgLyogVm9sYXRpbGUgSFRUUCBjb29raWUgc3RvcmFnZSAqLwotICAgU291
cE1lc3NhZ2UgKm1zZzsgICAgICAgICAgICAvKiBSZXF1ZXN0IG1lc3NhZ2UuICovCi0gICBHc3RG
bG93UmV0dXJuIHJldDsgICAgICAgICAgIC8qIFJldHVybiBjb2RlIGZyb20gY2FsbGJhY2suICov
Ci0gICBnaW50IHJldHJ5X2NvdW50OyAgICAgICAgICAgIC8qIE51bWJlciBvZiByZXRyaWVzIHNp
bmNlIHdlIHJlY2VpdmVkIGRhdGEgKi8KLS0tIAotMS44LjMuMgotCmRpZmYgLS1naXQgYS9Ub29s
cy9ndGsvcGF0Y2hlcy9nc3QtcGx1Z2lucy1nb29kLTAwMDYtcXRkZW11eC1hZGQtY29udGV4dC1m
b3ItYS1wcmVmZXJyZWQtcHJvdGVjdGlvbi5wYXRjaCBiL1Rvb2xzL2d0ay9wYXRjaGVzL2dzdC1w
bHVnaW5zLWdvb2QtMDAwNi1xdGRlbXV4LWFkZC1jb250ZXh0LWZvci1hLXByZWZlcnJlZC1wcm90
ZWN0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZGRmZWNlNDJmMDdm
NWFlMGZlMmQ1ZTdkMmRiZjk4MmM3ZmE1Mzk5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL2d0ay9wYXRjaGVzL2dzdC1wbHVnaW5zLWdvb2QtMDAw
Ni1xdGRlbXV4LWFkZC1jb250ZXh0LWZvci1hLXByZWZlcnJlZC1wcm90ZWN0aW9uLnBhdGNoCisr
KyAvZGV2L251bGwKQEAgLTEsMzI5ICswLDAgQEAKLUZyb20gOWQ3MjAxY2E3NmU3ODc1Y2RkZDEw
NmRmMDZiNGQ3NjM3YzAyNTQ2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFhhYmll
ciBSb2RyaWd1ZXogQ2FsdmFyIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgotRGF0ZTogV2VkLCAyMSBK
dW4gMjAxNyAxNzo1OToyMSArMDIwMAotU3ViamVjdDogW1BBVENIIDIvM10gcXRkZW11eDogYWRk
IGNvbnRleHQgZm9yIGEgcHJlZmVycmVkIHByb3RlY3Rpb24KLQotcXRkZW11eCBzZWxlY3RlZCB0
aGUgZmlyc3Qgc3lzdGVtIGNvcnJlc3BvbmRpbmcgdG8gYSB3b3JraW5nIEdTdHJlYW1lcgotZGVj
cnlwdG9yLiBXaXRoIHRoaXMgY2hhbmdlLCBiZWZvcmUgc2VsZWN0aW5nIHRoYXQgZGVjcnlwdG9y
LCBxdGRlbXV4Ci13aWxsIGNoZWNrIGlmIGl0IGhhcyBjb250ZXh0IChhIHByZWZlcnJlZCBkZWNy
eXB0b3IgaWQpIGFuZCBpZiBub3QsIGl0Ci13aWxsIHJlcXVlc3QgaXQuCi0KLVRoZSByZXF1ZXN0
IGluY2x1ZGVzIHRyYWNrLWlkLCBhdmFpbGFibGUga2V5IHN5c3RlbSBpZHMgZm9yIHRoZQotYXZh
aWxhYmxlIGRlY3J5cHRvcnMgYW5kIGV2ZW4gdGhlIGV2ZW50cyBzbyB0aGF0IHRoZSBpbml0IGRh
dGEgaXMKLWFjY2Vzc2libGUuCi0KLVtlb2NhbmhhQGlnYWxpYS5jb206IHNlbGVjdCB0aGUgcHJl
ZmVycmVkIHByb3RlY3Rpb24gc3lzdGVtIGV2ZW4gaWYgbm90IGF2YWlsYWJsZV0KLQotVGVzdCAi
NC4gQ2xlYXJLZXlWaWRlbyIgaW4gWW91VHViZSBsZWFuYmFjayBFTUUgY29uZm9ybWFuY2UgdGVz
dHMgMjAxNiBmb3IKLUguMjY0WzFdIHVzZXMgYSBtZWRpYSBmaWxlWzJdIHdpdGggY2VuYyBlbmNy
eXB0aW9uIHdoaWNoIGVtYmVkcyAncHNzaCcgYm94ZXMKLXdpdGggdGhlIGluaXQgZGF0YSBmb3Ig
dGhlIFBsYXlyZWFkeSBhbmQgV2lkZXZpbmUgZW5jcnlwdGlvbiBzeXN0ZW1zLCBidXQgbm90Ci1m
b3IgdGhlIENsZWFyS2V5IGVuY3J5cHRpb24gc3lzdGVtIChhcyBkZWZpbmVkIGJ5IHRoZSBFTUV2
MC4xYiBzcGVjWzNdIGFuZCB3aXRoCi10aGUgZW5jcnlwdGlvbiBzeXN0ZW0gaWQgZGVmaW5lZCBp
biBbNF0pLgotCi1JbnN0ZWFkLCB0aGUgQ2xlYXJLZXkgZW5jcnlwdGlvbiBzeXN0ZW0gaXMgbWFu
dWFsbHkgc2VsZWN0ZWQgYnkgdGhlIHdlYiBwYWdlCi1jb2RlIChldmVuIGlmIG5vdCBvcmlnaW5h
bGx5IGRldGVjdGVkIGJ5IHF0ZGVtdXgpIGFuZCB0aGUgcHJvcGVyIGRlY3J5cHRpb24ga2V5Ci1p
cyBkaXNwYXRjaGVkIHRvIHRoZSBkZWNyeXB0b3IsIHdoaWNoIGNhbiB0aGVuIGRlY3J5cHQgdGhl
IHZpZGVvIHN1Y2Nlc3NmdWxseS4KLQotWzFdIGh0dHA6Ly95dC1kYXNoLW1zZS10ZXN0LmNvbW1v
bmRhdGFzdG9yYWdlLmdvb2dsZWFwaXMuY29tL3VuaXQtdGVzdHMvMjAxNi5odG1sP3Rlc3RfdHlw
ZT1lbmNyeXB0ZWRtZWRpYS10ZXN0JndlYm09ZmFsc2UKLVsyXSBodHRwOi8veXQtZGFzaC1tc2Ut
dGVzdC5jb21tb25kYXRhc3RvcmFnZS5nb29nbGVhcGlzLmNvbS91bml0LXRlc3RzL21lZGlhL2Nh
cl9jZW5jLTIwMTIwODI3LTg2Lm1wNAotWzNdIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1t
ZWRpYS9yYXctZmlsZS9lbWUtdjAuMWIvZW5jcnlwdGVkLW1lZGlhL2VuY3J5cHRlZC1tZWRpYS5o
dG1sI3NpbXBsZS1kZWNyeXB0aW9uLWNsZWFyLWtleQotWzRdIGh0dHBzOi8vd3d3LnczLm9yZy9C
dWdzL1B1YmxpYy9zaG93X2J1Zy5jZ2k/aWQ9MjQwMjcjYzIKLQotaHR0cHM6Ly9idWd6aWxsYS5n
bm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc3MDEwNwotLS0tCi0gZ3N0L2lzb21wNC9xdGRlbXV4
LmMgfCAyMDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
Ky0tCi0gZ3N0L2lzb21wNC9xdGRlbXV4LmggfCAgIDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgMTk1
IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nc3QvaXNvbXA0
L3F0ZGVtdXguYyBiL2dzdC9pc29tcDQvcXRkZW11eC5jCi1pbmRleCAwYTQxYjI2ZjIuLmFlNTdi
ZGY5YiAxMDA2NDQKLS0tLSBhL2dzdC9pc29tcDQvcXRkZW11eC5jCi0rKysgYi9nc3QvaXNvbXA0
L3F0ZGVtdXguYwotQEAgLTUxMyw2ICs1MTMsOCBAQCBzdGF0aWMgR3N0SW5kZXggKmdzdF9xdGRl
bXV4X2dldF9pbmRleCAoR3N0RWxlbWVudCAqIGVsZW1lbnQpOwotICNlbmRpZgotIHN0YXRpYyBH
c3RTdGF0ZUNoYW5nZVJldHVybiBnc3RfcXRkZW11eF9jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQg
KiBlbGVtZW50LAotICAgICBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKLStzdGF0aWMgdm9p
ZCBnc3RfcXRkZW11eF9zZXRfY29udGV4dCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCi0rICAgIEdz
dENvbnRleHQgKiBjb250ZXh0KTsKLSBzdGF0aWMgZ2Jvb2xlYW4gcXRkZW11eF9zaW5rX2FjdGl2
YXRlIChHc3RQYWQgKiBzaW5rcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQpOwotIHN0YXRpYyBnYm9v
bGVhbiBxdGRlbXV4X3NpbmtfYWN0aXZhdGVfbW9kZSAoR3N0UGFkICogc2lua3BhZCwKLSAgICAg
R3N0T2JqZWN0ICogcGFyZW50LCBHc3RQYWRNb2RlIG1vZGUsIGdib29sZWFuIGFjdGl2ZSk7Ci1A
QCAtNjAyLDYgKzYwNCw3IEBAIGdzdF9xdGRlbXV4X2NsYXNzX2luaXQgKEdzdFFURGVtdXhDbGFz
cyAqIGtsYXNzKQotICAgZ3N0ZWxlbWVudF9jbGFzcy0+c2V0X2luZGV4ID0gR1NUX0RFQlVHX0ZV
TkNQVFIgKGdzdF9xdGRlbXV4X3NldF9pbmRleCk7Ci0gICBnc3RlbGVtZW50X2NsYXNzLT5nZXRf
aW5kZXggPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3F0ZGVtdXhfZ2V0X2luZGV4KTsKLSAjZW5k
aWYKLSsgIGdzdGVsZW1lbnRfY2xhc3MtPnNldF9jb250ZXh0ID0gR1NUX0RFQlVHX0ZVTkNQVFIg
KGdzdF9xdGRlbXV4X3NldF9jb250ZXh0KTsKLSAKLSAgIGdzdF90YWdfcmVnaXN0ZXJfbXVzaWNi
cmFpbnpfdGFncyAoKTsKLSAKLUBAIC02NjAsNiArNjYzLDcgQEAgZ3N0X3F0ZGVtdXhfaW5pdCAo
R3N0UVREZW11eCAqIHF0ZGVtdXgpCi0gICBxdGRlbXV4LT5jZW5jX2F1eF9pbmZvX3NpemVzID0g
TlVMTDsKLSAgIHF0ZGVtdXgtPmNlbmNfYXV4X3NhbXBsZV9jb3VudCA9IDA7Ci0gICBxdGRlbXV4
LT5wcm90ZWN0aW9uX3N5c3RlbV9pZHMgPSBOVUxMOwotKyAgcXRkZW11eC0+cHJlZmVycmVkX3By
b3RlY3Rpb25fc3lzdGVtX2lkID0gTlVMTDsKLSAgIGdfcXVldWVfaW5pdCAoJnF0ZGVtdXgtPnBy
b3RlY3Rpb25fZXZlbnRfcXVldWUpOwotICAgZ3N0X3NlZ21lbnRfaW5pdCAoJnF0ZGVtdXgtPnNl
Z21lbnQsIEdTVF9GT1JNQVRfVElNRSk7Ci0gICBxdGRlbXV4LT50YWdfbGlzdCA9IGdzdF90YWdf
bGlzdF9uZXdfZW1wdHkgKCk7Ci1AQCAtMjExMyw2ICsyMTE3LDEwIEBAIGdzdF9xdGRlbXV4X3Jl
c2V0IChHc3RRVERlbXV4ICogcXRkZW11eCwgZ2Jvb2xlYW4gaGFyZCkKLSAgICAgICBnX3B0cl9h
cnJheV9mcmVlIChxdGRlbXV4LT5wcm90ZWN0aW9uX3N5c3RlbV9pZHMsIFRSVUUpOwotICAgICAg
IHF0ZGVtdXgtPnByb3RlY3Rpb25fc3lzdGVtX2lkcyA9IE5VTEw7Ci0gICAgIH0KLSsgICAgaWYg
KHF0ZGVtdXgtPnByZWZlcnJlZF9wcm90ZWN0aW9uX3N5c3RlbV9pZCkgewotKyAgICAgIGdfZnJl
ZSAocXRkZW11eC0+cHJlZmVycmVkX3Byb3RlY3Rpb25fc3lzdGVtX2lkKTsKLSsgICAgICBxdGRl
bXV4LT5wcmVmZXJyZWRfcHJvdGVjdGlvbl9zeXN0ZW1faWQgPSBOVUxMOwotKyAgICB9Ci0gICB9
IGVsc2UgaWYgKHF0ZGVtdXgtPm1zc19tb2RlKSB7Ci0gICAgIGdzdF9mbG93X2NvbWJpbmVyX3Jl
c2V0IChxdGRlbXV4LT5mbG93Y29tYmluZXIpOwotICAgICBmb3IgKG4gPSAwOyBuIDwgcXRkZW11
eC0+bl9zdHJlYW1zOyBuKyspCi1AQCAtMjU5MCw2ICsyNTk4LDI4IEBAIGdzdF9xdGRlbXV4X2No
YW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRp
b24pCi0gfQotIAotIHN0YXRpYyB2b2lkCi0rZ3N0X3F0ZGVtdXhfc2V0X2NvbnRleHQgKEdzdEVs
ZW1lbnQgKiBlbGVtZW50LCBHc3RDb250ZXh0ICogY29udGV4dCkKLSt7Ci0rICBHc3RRVERlbXV4
ICpxdGRlbXV4ID0gR1NUX1FUREVNVVggKGVsZW1lbnQpOwotKwotKyAgZ19yZXR1cm5faWZfZmFp
bCAoR1NUX0lTX0NPTlRFWFQgKGNvbnRleHQpKTsKLSsKLSsgIGlmIChnc3RfY29udGV4dF9oYXNf
Y29udGV4dF90eXBlIChjb250ZXh0LAotKyAgICAgICAgICAiZHJtLXByZWZlcnJlZC1kZWNyeXB0
aW9uLXN5c3RlbS1pZCIpKSB7Ci0rICAgIGNvbnN0IEdzdFN0cnVjdHVyZSAqczsKLSsKLSsgICAg
cyA9IGdzdF9jb250ZXh0X2dldF9zdHJ1Y3R1cmUgKGNvbnRleHQpOwotKyAgICBnX2ZyZWUgKHF0
ZGVtdXgtPnByZWZlcnJlZF9wcm90ZWN0aW9uX3N5c3RlbV9pZCk7Ci0rICAgIHF0ZGVtdXgtPnBy
ZWZlcnJlZF9wcm90ZWN0aW9uX3N5c3RlbV9pZCA9Ci0rICAgICAgICBnX3N0cmR1cCAoZ3N0X3N0
cnVjdHVyZV9nZXRfc3RyaW5nIChzLCAiZGVjcnlwdGlvbi1zeXN0ZW0taWQiKSk7Ci0rICAgIEdT
VF9ERUJVR19PQkpFQ1QgKGVsZW1lbnQsICJzZXQgcHJlZmVycmVkIGRlY3J5cHRpb24gc3lzdGVt
IHRvICVzIiwKLSsgICAgICAgIHF0ZGVtdXgtPnByZWZlcnJlZF9wcm90ZWN0aW9uX3N5c3RlbV9p
ZCk7Ci0rICB9Ci0rCi0rICBHU1RfRUxFTUVOVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+c2V0X2Nv
bnRleHQgKGVsZW1lbnQsIGNvbnRleHQpOwotK30KLSsKLStzdGF0aWMgdm9pZAotIHF0ZGVtdXhf
cGFyc2VfZnR5cCAoR3N0UVREZW11eCAqIHF0ZGVtdXgsIGNvbnN0IGd1aW50OCAqIGJ1ZmZlciwg
Z2ludCBsZW5ndGgpCi0gewotICAgLyogY291bnRzIGFzIGhlYWRlciBkYXRhICovCi1AQCAtMzgx
OSw2ICszODQ5LDggQEAgcXRkZW11eF9wYXJzZV9wc3NoIChHc3RRVERlbXV4ICogcXRkZW11eCwg
R05vZGUgKiBub2RlKQotICAgZXZlbnQgPSBnc3RfZXZlbnRfbmV3X3Byb3RlY3Rpb24gKHN5c2lk
X3N0cmluZywgcHNzaCwKLSAgICAgICAocGFyZW50X2JveF90eXBlID09IEZPVVJDQ19tb292KSA/
ICJpc29ibWZmL21vb3YiIDogImlzb2JtZmYvbW9vZiIpOwotICAgZm9yIChpID0gMDsgaSA8IHF0
ZGVtdXgtPm5fc3RyZWFtczsgKytpKSB7Ci0rICAgIEdTVF9UUkFDRV9PQkpFQ1QgKHF0ZGVtdXgs
Ci0rICAgICAgICAiYWRkaW5nIHByb3RlY3Rpb24gZXZlbnQgZm9yIHN0cmVhbSAlZCBhbmQgc3lz
dGVtICVzIiwgaSwgc3lzaWRfc3RyaW5nKTsKLSAgICAgZ19xdWV1ZV9wdXNoX3RhaWwgKCZxdGRl
bXV4LT5zdHJlYW1zW2ldLT5wcm90ZWN0aW9uX3NjaGVtZV9ldmVudF9xdWV1ZSwKLSAgICAgICAg
IGdzdF9ldmVudF9yZWYgKGV2ZW50KSk7Ci0gICB9Ci1AQCAtNTUyOSw2ICs1NTYxLDggQEAgZ3N0
X3F0ZGVtdXhfZGVjb3JhdGVfYW5kX3B1c2hfYnVmZmVyIChHc3RRVERlbXV4ICogcXRkZW11eCwK
LSAgICAgR3N0RXZlbnQgKmV2ZW50OwotIAotICAgICB3aGlsZSAoKGV2ZW50ID0gZ19xdWV1ZV9w
b3BfaGVhZCAoJnN0cmVhbS0+cHJvdGVjdGlvbl9zY2hlbWVfZXZlbnRfcXVldWUpKSkgewotKyAg
ICAgIEdTVF9UUkFDRV9PQkpFQ1QgKHN0cmVhbS0+cGFkLCAicHVzaGluZyBwcm90ZWN0aW9uIGV2
ZW50OiAlIgotKyAgICAgICAgICBHU1RfUFRSX0ZPUk1BVCwgZXZlbnQpOwotICAgICAgIGdzdF9w
YWRfcHVzaF9ldmVudCAoc3RyZWFtLT5wYWQsIGV2ZW50KTsKLSAgICAgfQotIAotQEAgLTc2ODgs
MTEgKzc3MjIsMTQxIEBAIHF0ZGVtdXhfZG9fYWxsb2NhdGlvbiAoR3N0UVREZW11eCAqIHF0ZGVt
dXgsIFF0RGVtdXhTdHJlYW0gKiBzdHJlYW0pCi0gfQotIAotIHN0YXRpYyBnYm9vbGVhbgotK3Bh
ZF9xdWVyeSAoY29uc3QgR1ZhbHVlICogaXRlbSwgR1ZhbHVlICogdmFsdWUsIGdwb2ludGVyIHVz
ZXJfZGF0YSkKLSt7Ci0rICBHc3RQYWQgKnBhZCA9IGdfdmFsdWVfZ2V0X29iamVjdCAoaXRlbSk7
Ci0rICBHc3RRdWVyeSAqcXVlcnkgPSB1c2VyX2RhdGE7Ci0rICBnYm9vbGVhbiByZXM7Ci0rCi0r
ICByZXMgPSBnc3RfcGFkX3BlZXJfcXVlcnkgKHBhZCwgcXVlcnkpOwotKwotKyAgaWYgKHJlcykg
ewotKyAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgVFJVRSk7Ci0rICAgIHJldHVybiBG
QUxTRTsKLSsgIH0KLSsKLSsgIEdTVF9JTkZPX09CSkVDVCAocGFkLCAicGFkIHBlZXIgcXVlcnkg
ZmFpbGVkIik7Ci0rICByZXR1cm4gVFJVRTsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rZ3N0
X3F0ZGVtdXhfcnVuX3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0UXVlcnkgKiBxdWVy
eSwKLSsgICAgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbikKLSt7Ci0rICBHc3RJdGVyYXRvciAq
aXQ7Ci0rICBHc3RJdGVyYXRvckZvbGRGdW5jdGlvbiBmdW5jID0gcGFkX3F1ZXJ5OwotKyAgR1Zh
bHVlIHJlcyA9IHsgMCwgfTsKLSsKLSsgIGdfdmFsdWVfaW5pdCAoJnJlcywgR19UWVBFX0JPT0xF
QU4pOwotKyAgZ192YWx1ZV9zZXRfYm9vbGVhbiAoJnJlcywgRkFMU0UpOwotKwotKyAgLyogQXNr
IG5laWdoYm9yICovCi0rICBpZiAoZGlyZWN0aW9uID09IEdTVF9QQURfU1JDKQotKyAgICBpdCA9
IGdzdF9lbGVtZW50X2l0ZXJhdGVfc3JjX3BhZHMgKGVsZW1lbnQpOwotKyAgZWxzZQotKyAgICBp
dCA9IGdzdF9lbGVtZW50X2l0ZXJhdGVfc2lua19wYWRzIChlbGVtZW50KTsKLSsKLSsgIHdoaWxl
IChnc3RfaXRlcmF0b3JfZm9sZCAoaXQsIGZ1bmMsICZyZXMsIHF1ZXJ5KSA9PSBHU1RfSVRFUkFU
T1JfUkVTWU5DKQotKyAgICBnc3RfaXRlcmF0b3JfcmVzeW5jIChpdCk7Ci0rCi0rICBnc3RfaXRl
cmF0b3JfZnJlZSAoaXQpOwotKwotKyAgcmV0dXJuIGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKCZyZXMp
OwotK30KLSsKLStzdGF0aWMgdm9pZAotK2dzdF9xdGRlbXV4X3JlcXVlc3RfcHJvdGVjdGlvbl9j
b250ZXh0IChHc3RRVERlbXV4ICogcXRkZW11eCwKLSsgICAgUXREZW11eFN0cmVhbSAqIHN0cmVh
bSkKLSt7Ci0rICBHc3RRdWVyeSAqcXVlcnk7Ci0rICBHc3RDb250ZXh0ICpjdHh0OwotKyAgR3N0
RWxlbWVudCAqZWxlbWVudCA9IEdTVF9FTEVNRU5UIChxdGRlbXV4KTsKLSsgIEdzdFN0cnVjdHVy
ZSAqc3Q7Ci0rICBnY2hhciAqKmZpbHRlcmVkX3N5c19pZHM7Ci0rICBHVmFsdWUgZXZlbnRfbGlz
dCA9IEdfVkFMVUVfSU5JVDsKLSsgIEdMaXN0ICp3YWxrOwotKwotKyAgLyogMS4gQ2hlY2sgaWYg
d2UgYWxyZWFkeSBoYXZlIHRoZSBjb250ZXh0LiAqLwotKyAgaWYgKHF0ZGVtdXgtPnByZWZlcnJl
ZF9wcm90ZWN0aW9uX3N5c3RlbV9pZCAhPSBOVUxMKSB7Ci0rICAgIEdTVF9MT0dfT0JKRUNUIChl
bGVtZW50LAotKyAgICAgICAgImFscmVhZHkgaGF2ZSB0aGUgcHJvdGVjdGlvbiBjb250ZXh0LCBu
byBuZWVkIHRvIHJlcXVlc3QgaXQgYWdhaW4iKTsKLSsgICAgcmV0dXJuOwotKyAgfQotKwotKyAg
Z19wdHJfYXJyYXlfYWRkIChxdGRlbXV4LT5wcm90ZWN0aW9uX3N5c3RlbV9pZHMsIE5VTEwpOwot
KyAgZmlsdGVyZWRfc3lzX2lkcyA9IGdzdF9wcm90ZWN0aW9uX2ZpbHRlcl9zeXN0ZW1zX2J5X2F2
YWlsYWJsZV9kZWNyeXB0b3JzICgKLSsgICAgICAoY29uc3QgZ2NoYXIgKiopIHF0ZGVtdXgtPnBy
b3RlY3Rpb25fc3lzdGVtX2lkcy0+cGRhdGEpOwotKyAgZ19wdHJfYXJyYXlfcmVtb3ZlX2luZGV4
IChxdGRlbXV4LT5wcm90ZWN0aW9uX3N5c3RlbV9pZHMsCi0rICAgICAgcXRkZW11eC0+cHJvdGVj
dGlvbl9zeXN0ZW1faWRzLT5sZW4gLSAxKTsKLSsgIEdTVF9UUkFDRV9PQkpFQ1QgKHF0ZGVtdXgs
ICJkZXRlY3RlZCAldSBwcm90ZWN0aW9uIHN5c3RlbXMsIHdlIGhhdmUgIgotKyAgICAgICJkZWNy
eXB0b3JzIGZvciAldSBvZiB0aGVtLCBydW5uaW5nIGNvbnRleHQgcmVxdWVzdCIsCi0rICAgICAg
cXRkZW11eC0+cHJvdGVjdGlvbl9zeXN0ZW1faWRzLT5sZW4sIGdfc3Rydl9sZW5ndGggKGZpbHRl
cmVkX3N5c19pZHMpKTsKLSsKLSsgIGlmIChzdHJlYW0tPnByb3RlY3Rpb25fc2NoZW1lX2V2ZW50
X3F1ZXVlLmxlbmd0aCkgewotKyAgICBHU1RfVFJBQ0VfT0JKRUNUIChxdGRlbXV4LCAidXNpbmcg
c3RyZWFtIGV2ZW50IHF1ZXVlLCBsZW5ndGggJXUiLAotKyAgICAgICAgc3RyZWFtLT5wcm90ZWN0
aW9uX3NjaGVtZV9ldmVudF9xdWV1ZS5sZW5ndGgpOwotKyAgICB3YWxrID0gc3RyZWFtLT5wcm90
ZWN0aW9uX3NjaGVtZV9ldmVudF9xdWV1ZS50YWlsOwotKyAgfSBlbHNlIHsKLSsgICAgR1NUX1RS
QUNFX09CSkVDVCAocXRkZW11eCwgInVzaW5nIGRlbXV4ZXIgZXZlbnQgcXVldWUsIGxlbmd0aCAl
dSIsCi0rICAgICAgICBxdGRlbXV4LT5wcm90ZWN0aW9uX2V2ZW50X3F1ZXVlLmxlbmd0aCk7Ci0r
ICAgIHdhbGsgPSBxdGRlbXV4LT5wcm90ZWN0aW9uX2V2ZW50X3F1ZXVlLnRhaWw7Ci0rICB9Ci0r
Ci0rICBnX3ZhbHVlX2luaXQgKCZldmVudF9saXN0LCBHU1RfVFlQRV9MSVNUKTsKLSsgIGZvciAo
OyB3YWxrOyB3YWxrID0gZ19saXN0X3ByZXZpb3VzICh3YWxrKSkgewotKyAgICBHVmFsdWUgKmV2
ZW50X3ZhbHVlID0gZ19uZXcwIChHVmFsdWUsIDEpOwotKyAgICBnX3ZhbHVlX2luaXQgKGV2ZW50
X3ZhbHVlLCBHU1RfVFlQRV9FVkVOVCk7Ci0rICAgIGdfdmFsdWVfc2V0X2JveGVkIChldmVudF92
YWx1ZSwgd2Fsay0+ZGF0YSk7Ci0rICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF9hbmRfdGFrZV92
YWx1ZSAoJmV2ZW50X2xpc3QsIGV2ZW50X3ZhbHVlKTsKLSsgIH0KLSsKLSsgIC8qICAyYSkgUXVl
cnkgZG93bnN0cmVhbSB3aXRoIEdTVF9RVUVSWV9DT05URVhUIGZvciB0aGUgY29udGV4dCBhbmQK
LSsgICAqICAgICAgY2hlY2sgaWYgZG93bnN0cmVhbSBhbHJlYWR5IGhhcyBhIGNvbnRleHQgb2Yg
dGhlIHNwZWNpZmljIHR5cGUKLSsgICAqICAyYikgUXVlcnkgdXBzdHJlYW0gYXMgYWJvdmUuCi0r
ICAgKi8KLSsgIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19jb250ZXh0ICgiZHJtLXByZWZlcnJlZC1k
ZWNyeXB0aW9uLXN5c3RlbS1pZCIpOwotKyAgc3QgPSBnc3RfcXVlcnlfd3JpdGFibGVfc3RydWN0
dXJlIChxdWVyeSk7Ci0rICBnc3Rfc3RydWN0dXJlX3NldCAoc3QsICJ0cmFjay1pZCIsIEdfVFlQ
RV9VSU5ULCBzdHJlYW0tPnRyYWNrX2lkLAotKyAgICAgICJzdHJlYW0tZW5jcnlwdGlvbi1zeXN0
ZW1zIiwgR19UWVBFX1NUUlYsIGZpbHRlcmVkX3N5c19pZHMsIE5VTEwpOwotKyAgZ3N0X3N0cnVj
dHVyZV9zZXRfdmFsdWUgKHN0LCAic3RyZWFtLWVuY3J5cHRpb24tZXZlbnRzIiwgJmV2ZW50X2xp
c3QpOwotKyAgaWYgKGdzdF9xdGRlbXV4X3J1bl9xdWVyeSAoZWxlbWVudCwgcXVlcnksIEdTVF9Q
QURfU1JDKSkgewotKyAgICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dCAocXVlcnksICZjdHh0KTsK
LSsgICAgR1NUX0lORk9fT0JKRUNUIChlbGVtZW50LCAiZm91bmQgY29udGV4dCAoJXApIGluIGRv
d25zdHJlYW0gcXVlcnkiLCBjdHh0KTsKLSsgICAgZ3N0X2VsZW1lbnRfc2V0X2NvbnRleHQgKGVs
ZW1lbnQsIGN0eHQpOwotKyAgfSBlbHNlIGlmIChnc3RfcXRkZW11eF9ydW5fcXVlcnkgKGVsZW1l
bnQsIHF1ZXJ5LCBHU1RfUEFEX1NJTkspKSB7Ci0rICAgIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0
IChxdWVyeSwgJmN0eHQpOwotKyAgICBHU1RfSU5GT19PQkpFQ1QgKGVsZW1lbnQsICJmb3VuZCBj
b250ZXh0ICglcCkgaW4gdXBzdHJlYW0gcXVlcnkiLCBjdHh0KTsKLSsgICAgZ3N0X2VsZW1lbnRf
c2V0X2NvbnRleHQgKGVsZW1lbnQsIGN0eHQpOwotKyAgfSBlbHNlIHsKLSsgICAgLyogMykgUG9z
dCBhIEdTVF9NRVNTQUdFX05FRURfQ09OVEVYVCBtZXNzYWdlIG9uIHRoZSBidXMgd2l0aAotKyAg
ICAgKiAgICB0aGUgcmVxdWlyZWQgY29udGV4dCB0eXBlIGFuZCBhZnRlcndhcmRzIGNoZWNrIGlm
IGEKLSsgICAgICogICAgdXNhYmxlIGNvbnRleHQgd2FzIHNldCBub3cgYXMgaW4gMSkuIFRoZSBt
ZXNzYWdlIGNvdWxkCi0rICAgICAqICAgIGJlIGhhbmRsZWQgYnkgdGhlIHBhcmVudCBiaW5zIG9m
IHRoZSBlbGVtZW50IGFuZCB0aGUKLSsgICAgICogICAgYXBwbGljYXRpb24uCi0rICAgICAqLwot
KyAgICBHc3RNZXNzYWdlICptc2c7Ci0rCi0rICAgIEdTVF9JTkZPX09CSkVDVCAoZWxlbWVudCwg
InBvc3RpbmcgbmVlZCBjb250ZXh0IG1lc3NhZ2UiKTsKLSsgICAgbXNnID0gZ3N0X21lc3NhZ2Vf
bmV3X25lZWRfY29udGV4dCAoR1NUX09CSkVDVF9DQVNUIChlbGVtZW50KSwKLSsgICAgICAgICJk
cm0tcHJlZmVycmVkLWRlY3J5cHRpb24tc3lzdGVtLWlkIik7Ci0rICAgIHN0ID0gKEdzdFN0cnVj
dHVyZSAqKSBnc3RfbWVzc2FnZV9nZXRfc3RydWN0dXJlIChtc2cpOwotKyAgICBnc3Rfc3RydWN0
dXJlX3NldCAoc3QsICJ0cmFjay1pZCIsIEdfVFlQRV9VSU5ULCBzdHJlYW0tPnRyYWNrX2lkLAot
KyAgICAgICAgInN0cmVhbS1lbmNyeXB0aW9uLXN5c3RlbXMiLCBHX1RZUEVfU1RSViwgZmlsdGVy
ZWRfc3lzX2lkcywgTlVMTCk7Ci0rICAgIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlIChzdCwgInN0
cmVhbS1lbmNyeXB0aW9uLWV2ZW50cyIsICZldmVudF9saXN0KTsKLSsgICAgZ3N0X2VsZW1lbnRf
cG9zdF9tZXNzYWdlIChlbGVtZW50LCBtc2cpOwotKyAgfQotKwotKyAgZ19zdHJmcmVldiAoZmls
dGVyZWRfc3lzX2lkcyk7Ci0rICBnX3ZhbHVlX3Vuc2V0ICgmZXZlbnRfbGlzdCk7Ci0rICBnc3Rf
cXVlcnlfdW5yZWYgKHF1ZXJ5KTsKLSt9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0gZ3N0X3F0ZGVt
dXhfY29uZmlndXJlX3Byb3RlY3RlZF9jYXBzIChHc3RRVERlbXV4ICogcXRkZW11eCwKLSAgICAg
UXREZW11eFN0cmVhbSAqIHN0cmVhbSkKLSB7Ci0gICBHc3RTdHJ1Y3R1cmUgKnM7Ci0tICBjb25z
dCBnY2hhciAqc2VsZWN0ZWRfc3lzdGVtOwotKyAgY29uc3QgZ2NoYXIgKnNlbGVjdGVkX3N5c3Rl
bSA9IE5VTEw7Ci0gCi0gICBnX3JldHVybl92YWxfaWZfZmFpbCAocXRkZW11eCAhPSBOVUxMLCBG
QUxTRSk7Ci0gICBnX3JldHVybl92YWxfaWZfZmFpbCAoc3RyZWFtICE9IE5VTEwsIEZBTFNFKTsK
LUBAIC03NzA4LDE3ICs3ODcyLDQxIEBAIGdzdF9xdGRlbXV4X2NvbmZpZ3VyZV9wcm90ZWN0ZWRf
Y2FwcyAoR3N0UVREZW11eCAqIHF0ZGVtdXgsCi0gICAgICAgICAiY2VuYyBwcm90ZWN0aW9uIHN5
c3RlbSBpbmZvcm1hdGlvbiBoYXMgYmVlbiBmb3VuZCIpOwotICAgICByZXR1cm4gRkFMU0U7Ci0g
ICB9Ci0tICBnX3B0cl9hcnJheV9hZGQgKHF0ZGVtdXgtPnByb3RlY3Rpb25fc3lzdGVtX2lkcywg
TlVMTCk7Ci0tICBzZWxlY3RlZF9zeXN0ZW0gPSBnc3RfcHJvdGVjdGlvbl9zZWxlY3Rfc3lzdGVt
ICgoY29uc3QgZ2NoYXIgKiopCi0tICAgICAgcXRkZW11eC0+cHJvdGVjdGlvbl9zeXN0ZW1faWRz
LT5wZGF0YSk7Ci0tICBnX3B0cl9hcnJheV9yZW1vdmVfaW5kZXggKHF0ZGVtdXgtPnByb3RlY3Rp
b25fc3lzdGVtX2lkcywKLS0gICAgICBxdGRlbXV4LT5wcm90ZWN0aW9uX3N5c3RlbV9pZHMtPmxl
biAtIDEpOwotKwotKyAgZ3N0X3F0ZGVtdXhfcmVxdWVzdF9wcm90ZWN0aW9uX2NvbnRleHQgKHF0
ZGVtdXgsIHN0cmVhbSk7Ci0rICBpZiAocXRkZW11eC0+cHJlZmVycmVkX3Byb3RlY3Rpb25fc3lz
dGVtX2lkICE9IE5VTEwpIHsKLSsgICAgY29uc3QgZ2NoYXIgKnByZWZlcnJlZF9zeXN0ZW1fYXJy
YXlbXSA9Ci0rICAgICAgICB7IHF0ZGVtdXgtPnByZWZlcnJlZF9wcm90ZWN0aW9uX3N5c3RlbV9p
ZCwgTlVMTCB9OwotKwotKyAgICBzZWxlY3RlZF9zeXN0ZW0gPSBnc3RfcHJvdGVjdGlvbl9zZWxl
Y3Rfc3lzdGVtIChwcmVmZXJyZWRfc3lzdGVtX2FycmF5KTsKLSsKLSsgICAgaWYgKHNlbGVjdGVk
X3N5c3RlbSkgewotKyAgICAgIEdTVF9UUkFDRV9PQkpFQ1QgKHF0ZGVtdXgsICJzZWxlY3RlZCBw
cmVmZXJyZWQgc3lzdGVtICVzIiwKLSsgICAgICAgICAgcXRkZW11eC0+cHJlZmVycmVkX3Byb3Rl
Y3Rpb25fc3lzdGVtX2lkKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICBHU1RfV0FSTklOR19PQkpF
Q1QgKHF0ZGVtdXgsICJjb3VsZCBub3Qgc2VsZWN0IHByZWZlcnJlZCBzeXN0ZW0gJXMgIgotKyAg
ICAgICAgICAiYmVjYXVzZSB0aGVyZSBpcyBubyBhdmFpbGFibGUgZGVjcnlwdG9yIiwKLSsgICAg
ICAgICAgcXRkZW11eC0+cHJlZmVycmVkX3Byb3RlY3Rpb25fc3lzdGVtX2lkKTsKLSsgICAgfQot
KyAgfQotKwotKyAgaWYgKCFzZWxlY3RlZF9zeXN0ZW0pIHsKLSsgICAgZ19wdHJfYXJyYXlfYWRk
IChxdGRlbXV4LT5wcm90ZWN0aW9uX3N5c3RlbV9pZHMsIE5VTEwpOwotKyAgICBzZWxlY3RlZF9z
eXN0ZW0gPSBnc3RfcHJvdGVjdGlvbl9zZWxlY3Rfc3lzdGVtICgoY29uc3QgZ2NoYXIgKiopCi0r
ICAgICAgICBxdGRlbXV4LT5wcm90ZWN0aW9uX3N5c3RlbV9pZHMtPnBkYXRhKTsKLSsgICAgZ19w
dHJfYXJyYXlfcmVtb3ZlX2luZGV4IChxdGRlbXV4LT5wcm90ZWN0aW9uX3N5c3RlbV9pZHMsCi0r
ICAgICAgICBxdGRlbXV4LT5wcm90ZWN0aW9uX3N5c3RlbV9pZHMtPmxlbiAtIDEpOwotKyAgfQot
KwotICAgaWYgKCFzZWxlY3RlZF9zeXN0ZW0pIHsKLSAgICAgR1NUX0VSUk9SX09CSkVDVCAocXRk
ZW11eCwgInN0cmVhbSBpcyBwcm90ZWN0ZWQsIGJ1dCBubyAiCi0gICAgICAgICAic3VpdGFibGUg
ZGVjcnlwdG9yIGVsZW1lbnQgaGFzIGJlZW4gZm91bmQiKTsKLSAgICAgcmV0dXJuIEZBTFNFOwot
ICAgfQotIAotKyAgR1NUX0RFQlVHX09CSkVDVCAocXRkZW11eCwgInNlbGVjdGVkIHByb3RlY3Rp
b24gc3lzdGVtIGlzICVzIiwKLSsgICAgICBzZWxlY3RlZF9zeXN0ZW0pOwotKwotICAgcyA9IGdz
dF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHN0cmVhbS0+Y2FwcywgMCk7Ci0gICBpZiAoIWdzdF9zdHJ1
Y3R1cmVfaGFzX25hbWUgKHMsICJhcHBsaWNhdGlvbi94LWNlbmMiKSkgewotICAgICBnc3Rfc3Ry
dWN0dXJlX3NldCAocywKLWRpZmYgLS1naXQgYS9nc3QvaXNvbXA0L3F0ZGVtdXguaCBiL2dzdC9p
c29tcDQvcXRkZW11eC5oCi1pbmRleCBlYmQ3MjU4NzEuLmIzZDY0YTRlOCAxMDA2NDQKLS0tLSBh
L2dzdC9pc29tcDQvcXRkZW11eC5oCi0rKysgYi9nc3QvaXNvbXA0L3F0ZGVtdXguaAotQEAgLTE1
NCw2ICsxNTQsNyBAQCBzdHJ1Y3QgX0dzdFFURGVtdXggewotICAgZ3VpbnQ2NCBjZW5jX2F1eF9p
bmZvX29mZnNldDsKLSAgIGd1aW50OCAqY2VuY19hdXhfaW5mb19zaXplczsKLSAgIGd1aW50MzIg
Y2VuY19hdXhfc2FtcGxlX2NvdW50OwotKyAgZ2NoYXIgKnByZWZlcnJlZF9wcm90ZWN0aW9uX3N5
c3RlbV9pZDsKLSAKLSAKLSAgIC8qCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9Ub29scy9n
dGsvcGF0Y2hlcy9nc3QtcGx1Z2lucy1nb29kLTAwMDgtcXRkZW11eC1hbHNvLXB1c2gtYnVmZmVy
cy13aXRob3V0LWVuY3J5cHRpb24taW5mby1pbi5wYXRjaCBiL1Rvb2xzL2d0ay9wYXRjaGVzL2dz
dC1wbHVnaW5zLWdvb2QtMDAwOC1xdGRlbXV4LWFsc28tcHVzaC1idWZmZXJzLXdpdGhvdXQtZW5j
cnlwdGlvbi1pbmZvLWluLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTAy
MWNjYmMwNGUxMGM2NGViMWU0YWI5NjY5M2JiZjA4ODgwOTZkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL2d0ay9wYXRjaGVzL2dzdC1wbHVnaW5z
LWdvb2QtMDAwOC1xdGRlbXV4LWFsc28tcHVzaC1idWZmZXJzLXdpdGhvdXQtZW5jcnlwdGlvbi1p
bmZvLWluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSA3ODU1OWJj
NWRiMzQ5NWYxMmIwMjg0ZTRiZTVmYzhiZmNkNzA0MWUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw
MQotRnJvbTogPT9VVEYtOD9xP0VucmlxdWU9MjBPY2E9QzM9QjFhPTIwR29uej1DMz1BMWxlej89
IDxlb2NhbmhhQGlnYWxpYS5jb20+Ci1EYXRlOiBNb24sIDI0IEFwciAyMDE3IDE3OjIyOjAyICsw
MDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHF0ZGVtdXg6IGFsc28gcHVzaCBidWZmZXJzIHdpdGhvdXQg
ZW5jcnlwdGlvbiBpbmZvIGluc3RlYWQgb2YKLSBkcm9wcGluZyB0aGVtCi0KLS0tLQotIGdzdC9p
c29tcDQvcXRkZW11eC5jIHwgMjYgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUg
Y2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQg
YS9nc3QvaXNvbXA0L3F0ZGVtdXguYyBiL2dzdC9pc29tcDQvcXRkZW11eC5jCi1pbmRleCA2YjBj
ODIwLi43YjcxMjM3IDEwMDY0NAotLS0tIGEvZ3N0L2lzb21wNC9xdGRlbXV4LmMKLSsrKyBiL2dz
dC9pc29tcDQvcXRkZW11eC5jCi1AQCAtNTQyMSwyMCArNTQyMSwxOCBAQCBnc3RfcXRkZW11eF9k
ZWNvcmF0ZV9hbmRfcHVzaF9idWZmZXIgKEdzdFFURGVtdXggKiBxdGRlbXV4LAotICAgICAgICAg
Z3N0X3BhZF9wdXNoX2V2ZW50IChzdHJlYW0tPnBhZCwgZXZlbnQpOwotICAgICB9Ci0gCi0tICAg
IGlmIChpbmZvLT5jcnlwdG9faW5mbyA9PSBOVUxMKSB7Ci0tICAgICAgR1NUX0RFQlVHX09CSkVD
VCAocXRkZW11eCwgImNlbmMgbWV0YWRhdGEgaGFzbid0IGJlZW4gcGFyc2VkIHlldCIpOwotLSAg
ICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7Ci0tICAgICAgZ290byBleGl0OwotLSAgICB9Ci0t
Ci0tICAgIGluZGV4ID0gc3RyZWFtLT5zYW1wbGVfaW5kZXggLSAoc3RyZWFtLT5uX3NhbXBsZXMg
LSBpbmZvLT5jcnlwdG9faW5mby0+bGVuKTsKLS0gICAgaWYgKEdfTElLRUxZIChpbmRleCA+PSAw
ICYmIGluZGV4IDwgaW5mby0+Y3J5cHRvX2luZm8tPmxlbikpIHsKLS0gICAgICAvKiBzdGVhbCBz
dHJ1Y3R1cmUgZnJvbSBhcnJheSAqLwotLSAgICAgIGNyeXB0b19pbmZvID0gZ19wdHJfYXJyYXlf
aW5kZXggKGluZm8tPmNyeXB0b19pbmZvLCBpbmRleCk7Ci0tICAgICAgZ19wdHJfYXJyYXlfaW5k
ZXggKGluZm8tPmNyeXB0b19pbmZvLCBpbmRleCkgPSBOVUxMOwotLSAgICAgIEdTVF9MT0dfT0JK
RUNUIChxdGRlbXV4LCAiYXR0YWNoaW5nIGNlbmMgbWV0YWRhdGEgWyV1XSIsIGluZGV4KTsKLS0g
ICAgICBpZiAoIWNyeXB0b19pbmZvIHx8ICFnc3RfYnVmZmVyX2FkZF9wcm90ZWN0aW9uX21ldGEg
KGJ1ZiwgY3J5cHRvX2luZm8pKQotLSAgICAgICAgR1NUX0VSUk9SX09CSkVDVCAocXRkZW11eCwg
ImZhaWxlZCB0byBhdHRhY2ggY2VuYyBtZXRhZGF0YSB0byBidWZmZXIiKTsKLSsgICAgaWYgKGlu
Zm8tPmNyeXB0b19pbmZvID09IE5VTEwpCi0rICAgICAgR1NUX0RFQlVHX09CSkVDVCAocXRkZW11
eCwgImNlbmMgbWV0YWRhdGEgaGFzbid0IGJlZW4gcGFyc2VkIHlldCwgcHVzaGluZyBidWZmZXIg
YXMgaWYgaXQgd2Fzbid0IGVuY3J5cHRlZCIpOwotKyAgICBlbHNlIHsKLSsgICAgICBpbmRleCA9
IHN0cmVhbS0+c2FtcGxlX2luZGV4IC0gKHN0cmVhbS0+bl9zYW1wbGVzIC0gaW5mby0+Y3J5cHRv
X2luZm8tPmxlbik7Ci0rICAgICAgaWYgKEdfTElLRUxZIChpbmRleCA+PSAwICYmIGluZGV4IDwg
aW5mby0+Y3J5cHRvX2luZm8tPmxlbikpIHsKLSsgICAgICAgIC8qIHN0ZWFsIHN0cnVjdHVyZSBm
cm9tIGFycmF5ICovCi0rICAgICAgICBjcnlwdG9faW5mbyA9IGdfcHRyX2FycmF5X2luZGV4IChp
bmZvLT5jcnlwdG9faW5mbywgaW5kZXgpOwotKyAgICAgICAgZ19wdHJfYXJyYXlfaW5kZXggKGlu
Zm8tPmNyeXB0b19pbmZvLCBpbmRleCkgPSBOVUxMOwotKyAgICAgICAgR1NUX0xPR19PQkpFQ1Qg
KHF0ZGVtdXgsICJhdHRhY2hpbmcgY2VuYyBtZXRhZGF0YSBbJXVdIiwgaW5kZXgpOwotKyAgICAg
ICAgaWYgKCFjcnlwdG9faW5mbyB8fCAhZ3N0X2J1ZmZlcl9hZGRfcHJvdGVjdGlvbl9tZXRhIChi
dWYsIGNyeXB0b19pbmZvKSkKLSsgICAgICAgICAgR1NUX0VSUk9SX09CSkVDVCAocXRkZW11eCwg
ImZhaWxlZCB0byBhdHRhY2ggY2VuYyBtZXRhZGF0YSB0byBidWZmZXIiKTsKLSsgICAgICB9Ci0g
ICAgIH0KLSAgIH0KLSAKLS0tIAotMS44LjMuMgotCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvcGF0
Y2hlcy9nc3RyZWFtZXItMDAwMS1wcm90ZWN0aW9uLWFkZGVkLWZ1bmN0aW9uLXRvLWZpbHRlci1z
eXN0ZW0taWRzLnBhdGNoIGIvVG9vbHMvZ3RrL3BhdGNoZXMvZ3N0cmVhbWVyLTAwMDEtcHJvdGVj
dGlvbi1hZGRlZC1mdW5jdGlvbi10by1maWx0ZXItc3lzdGVtLWlkcy5wYXRjaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZTcyZWY2YzEzMmM2MzE0MDIyNDRmNzI2MjczMGQ2ZGI0MTM4
MWQ4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29s
cy9ndGsvcGF0Y2hlcy9nc3RyZWFtZXItMDAwMS1wcm90ZWN0aW9uLWFkZGVkLWZ1bmN0aW9uLXRv
LWZpbHRlci1zeXN0ZW0taWRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAot
RnJvbSA3NzcyZWIzNTA1OTE2ODJiNmEzMTVjOGE4N2E1ODEzMWY3MzFmMWQ0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQotRnJvbTogWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgPGNhbHZhcmlzQGln
YWxpYS5jb20+Ci1EYXRlOiBXZWQsIDE5IE9jdCAyMDE2IDE2OjQ0OjE2ICswMjAwCi1TdWJqZWN0
OiBbUEFUQ0hdIHByb3RlY3Rpb246IGFkZGVkIGZ1bmN0aW9uIHRvIGZpbHRlciBzeXN0ZW0gaWRz
Ci0KLWdzdF9wcm90ZWN0aW9uX2ZpbHRlcl9zeXN0ZW1zX2J5X2F2YWlsYWJsZV9kZWNyeXB0b3Jz
IHRha2VzIGFuIGFycmF5IG9mCi1zdHJpbmdzIGFuZCByZXR1cm5zIGEgbmV3IGFycmF5IG9mIHN0
cmluZ3MgZmlsdGVyZWQgYnkgdGhlIGF2YWlibGUKLWRlY3J5cHRvcnMgZm9yIHRoZW0gc28gdGhl
IG9uZXMgeW91IGdldCBhcmUgdGhlIG9uZXMgdGhhdCB5b3Ugc2hvdWxkIGJlCi1hYmxlIHRvIGRl
Y3J5cHQuCi0tLS0KLSBnc3QvZ3N0cHJvdGVjdGlvbi5jIHwgMzYgKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrCi0gZ3N0L2dzdHByb3RlY3Rpb24uaCB8ICAyICsrCi0gMiBmaWxl
cyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nc3QvZ3N0cHJvdGVj
dGlvbi5jIGIvZ3N0L2dzdHByb3RlY3Rpb24uYwotaW5kZXggOGVlNTJlYS4uMmQ3ZTVlMCAxMDA2
NDQKLS0tLSBhL2dzdC9nc3Rwcm90ZWN0aW9uLmMKLSsrKyBiL2dzdC9nc3Rwcm90ZWN0aW9uLmMK
LUBAIC0xOTEsNiArMTkxLDQyIEBAIGdzdF9wcm90ZWN0aW9uX3NlbGVjdF9zeXN0ZW0gKGNvbnN0
IGdjaGFyICoqIHN5c3RlbV9pZGVudGlmaWVycykKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotIAot
K2djaGFyICoqCi0rZ3N0X3Byb3RlY3Rpb25fZmlsdGVyX3N5c3RlbXNfYnlfYXZhaWxhYmxlX2Rl
Y3J5cHRvcnMgKGNvbnN0IGdjaGFyICoqCi0rICAgIHN5c3RlbV9pZGVudGlmaWVycykKLSt7Ci0r
ICBHTGlzdCAqZGVjcnlwdG9ycywgKndhbGs7Ci0rICBnY2hhciAqKnJldHZhbDsKLSsgIGd1aW50
IGkgPSAwLCBkZWNyeXB0b3JzX251bWJlcjsKLSsKLSsgIGRlY3J5cHRvcnMgPQotKyAgICAgIGdz
dF9lbGVtZW50X2ZhY3RvcnlfbGlzdF9nZXRfZWxlbWVudHMgKEdTVF9FTEVNRU5UX0ZBQ1RPUllf
VFlQRV9ERUNSWVBUT1IsCi0rICAgICAgR1NUX1JBTktfTUFSR0lOQUwpOwotKwotKyAgZGVjcnlw
dG9yc19udW1iZXIgPSBnX2xpc3RfbGVuZ3RoIChkZWNyeXB0b3JzKTsKLSsgIHJldHZhbCA9IGdf
bmV3IChnY2hhciAqLCBkZWNyeXB0b3JzX251bWJlciArIDEpOwotKwotKyAgR1NUX1RSQUNFICgi
Zm91bmQgJXUgZGVjcnl0b3JzIiwgZGVjcnlwdG9yc19udW1iZXIpOwotKwotKyAgZm9yICh3YWxr
ID0gZGVjcnlwdG9yczsgd2Fsazsgd2FsayA9IGdfbGlzdF9uZXh0ICh3YWxrKSkgewotKyAgICBH
c3RFbGVtZW50RmFjdG9yeSAqZmFjdCA9IChHc3RFbGVtZW50RmFjdG9yeSAqKSB3YWxrLT5kYXRh
OwotKwotKyAgICBjb25zdCBjaGFyICpmb3VuZF9zeXNfaWQgPQotKyAgICAgICAgZ3N0X3Byb3Rl
Y3Rpb25fZmFjdG9yeV9jaGVjayAoZmFjdCwgc3lzdGVtX2lkZW50aWZpZXJzKTsKLSsgICAgR1NU
X1RSQUNFICgiZmFjdG9yeSAlcyBpcyB2YWxpZCBmb3IgJXMiLCBHU1RfT0JKRUNUX05BTUUgKGZh
Y3QpLAotKyAgICAgICAgZm91bmRfc3lzX2lkKTsKLSsKLSsgICAgaWYgKGZvdW5kX3N5c19pZCkg
ewotKyAgICAgIHJldHZhbFtpKytdID0gZ19zdHJkdXAgKGZvdW5kX3N5c19pZCk7Ci0rICAgIH0K
LSsgIH0KLSsgIHJldHZhbFtpXSA9IE5VTEw7Ci0rCi0rICBnc3RfcGx1Z2luX2ZlYXR1cmVfbGlz
dF9mcmVlIChkZWNyeXB0b3JzKTsKLSsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotIHN0YXRp
YyBjb25zdCBnY2hhciAqCi0gZ3N0X3Byb3RlY3Rpb25fZmFjdG9yeV9jaGVjayAoR3N0RWxlbWVu
dEZhY3RvcnkgKiBmYWN0LAotICAgICBjb25zdCBnY2hhciAqKiBzeXN0ZW1faWRlbnRpZmllcnMp
Ci1kaWZmIC0tZ2l0IGEvZ3N0L2dzdHByb3RlY3Rpb24uaCBiL2dzdC9nc3Rwcm90ZWN0aW9uLmgK
LWluZGV4IGYyZjU0YzQuLjk1OTc2YzUgMTAwNjQ0Ci0tLS0gYS9nc3QvZ3N0cHJvdGVjdGlvbi5o
Ci0rKysgYi9nc3QvZ3N0cHJvdGVjdGlvbi5oCi1AQCAtNjYsNiArNjYsOCBAQCBHc3RQcm90ZWN0
aW9uTWV0YSAqZ3N0X2J1ZmZlcl9hZGRfcHJvdGVjdGlvbl9tZXRhIChHc3RCdWZmZXIgKiBidWZm
ZXIsCi0gICAgIEdzdFN0cnVjdHVyZSAqIGluZm8pOwotIAotIGNvbnN0IGdjaGFyICpnc3RfcHJv
dGVjdGlvbl9zZWxlY3Rfc3lzdGVtIChjb25zdCBnY2hhciAqKiBzeXN0ZW1faWRlbnRpZmllcnMp
OwotK2djaGFyICoqIGdzdF9wcm90ZWN0aW9uX2ZpbHRlcl9zeXN0ZW1zX2J5X2F2YWlsYWJsZV9k
ZWNyeXB0b3JzICgKLSsgICAgY29uc3QgZ2NoYXIgKiogc3lzdGVtX2lkZW50aWZpZXJzKTsKLSAK
LSBHX0VORF9ERUNMUwotICNlbmRpZiAvKiBfX0dTVF9QUk9URUNUSU9OX01FVEFfSF9fICovCi0t
LSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvcGF0Y2hlcy9vcGVuaDI2NC1jb25m
aWd1cmUucGF0Y2ggYi9Ub29scy9ndGsvcGF0Y2hlcy9vcGVuaDI2NC1jb25maWd1cmUucGF0Y2gK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiZjFiZDVhMWVhMGM5NDA2YWE0MTAyNjdm
ZDhmZjk0YmQyZTI5M2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvVG9vbHMvZ3RrL3BhdGNoZXMvb3BlbmgyNjQtY29uZmlndXJlLnBhdGNoCisrKyAvZGV2
L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLS0tIC9kZXYvbnVsbAkyMDE1LTA2LTA1IDE1OjIwOjM0
LjAwMDAwMDAwMCArMTAwMAotKysrIHBzZXVkby1jb25maWd1cmUJMjAxNS0wNi0wNSAxNToyMDoz
Ny4wMDAwMDAwMDAgKzEwMDAKLUBAIC0wLDAgKzEsOCBAQAotKyMhL2Jpbi9zaAotKwotK1g9TWFr
ZWZpbGUKLStzZWQgLWUgInM6XlBSRUZJWD0uKjpQUkVGSVg9JEpIQlVJTERfUFJFRklYOiIgJHtY
fSA+ICR7WH0udG1wICYmIG12ICR7WH0udG1wICR7WH0KLStzZWQgLWUgInM6XlNIQVJFRExJQl9E
SVI9Lio6U0hBUkVETElCX0RJUj0kQ01BS0VfTElCUkFSWV9QQVRIOiIgJHtYfSA+ICR7WH0udG1w
ICYmIG12ICR7WH0udG1wICR7WH0KLSsKLStYPWJ1aWxkL3g4Ni1jb21tb24ubWsKLStzZWQgLWUg
InM6XkFTTSA9Lio6QVNNID0geWFzbToiICRYID4gJHtYfS50bXAgJiYgbXYgJHtYfS50bXAgJFgK
LQpkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2poYnVpbGQubW9kdWxlcyBiL1Rvb2xzL3dwZS9qaGJ1
aWxkLm1vZHVsZXMKaW5kZXggYTJlYjYyNjE2OWE2NjFlMTNjZTM4ZTY4MTEyNmMzOTIxMjg2MDkw
NS4uYTU5N2JkMjgyYTNmODQ3MGU3ZDViZGJlMGRkMjdhN2UzMDJmZWM0ZSAxMDA2NDQKLS0tIGEv
VG9vbHMvd3BlL2poYnVpbGQubW9kdWxlcworKysgYi9Ub29scy93cGUvamhidWlsZC5tb2R1bGVz
CkBAIC0zLDYgKzMsOCBAQAogPD94bWwtc3R5bGVzaGVldCB0eXBlPSJ0ZXh0L3hzbCIgaHJlZj0i
bW9kdWxlc2V0LnhzbCI/PgogPG1vZHVsZXNldD4KIAorICA8aW5jbHVkZSBocmVmPSIuLi9nc3Ry
ZWFtZXIvamhidWlsZC5tb2R1bGVzIi8+CisKICAgPG1ldGFtb2R1bGUgaWQ9IndlYmtpdHdwZS10
ZXN0aW5nLWRlcGVuZGVuY2llcyI+CiAgICAgPGRlcGVuZGVuY2llcz4KICAgICAgIDxkZXAgcGFj
a2FnZT0iZ2xpYiIvPgpAQCAtMTUsMTEgKzE3LDcgQEAKICAgICAgIDxkZXAgcGFja2FnZT0iaGFy
ZmJ1enoiLz4KICAgICAgIDxkZXAgcGFja2FnZT0ieGtiY29tbW9uIi8+CiAgICAgICA8ZGVwIHBh
Y2thZ2U9IndheWxhbmQiLz4KLSAgICAgIDxkZXAgcGFja2FnZT0iZ3N0cmVhbWVyIi8+Ci0gICAg
ICA8ZGVwIHBhY2thZ2U9ImdzdC1wbHVnaW5zLWJhc2UiLz4KLSAgICAgIDxkZXAgcGFja2FnZT0i
Z3N0LXBsdWdpbnMtZ29vZCIvPgotICAgICAgPGRlcCBwYWNrYWdlPSJnc3QtcGx1Z2lucy1iYWQi
Lz4KLSAgICAgIDxkZXAgcGFja2FnZT0iZ3N0LWxpYmF2Ii8+CisgICAgICA8ZGVwIHBhY2thZ2U9
IndlYmtpdC1nc3RyZWFtZXItdGVzdGluZy1kZXBlbmRlbmNpZXMiLz4KICAgICAgIDxkZXAgcGFj
a2FnZT0id3BlIi8+CiAgICAgICA8ZGVwIHBhY2thZ2U9IndwZS1tZXNhIi8+CiAgICAgICA8ZGVw
IHBhY2thZ2U9ImxpYmdwZy1lcnJvciIvPgpAQCAtNDQsOCArNDIsNiBAQAogICAgICAgaHJlZj0i
aHR0cHM6Ly9naXRodWIuY29tIi8+CiAgIDxyZXBvc2l0b3J5IHR5cGU9InRhcmJhbGwiIG5hbWU9
ImdpdGh1Yi10YXJiYWxsIgogICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLyIvPgotICA8
cmVwb3NpdG9yeSB0eXBlPSJ0YXJiYWxsIiBuYW1lPSJnc3RyZWFtZXIiCi0gICAgICBocmVmPSJo
dHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvIi8+CiAgIDxyZXBvc2l0b3J5IHR5
cGU9InRhcmJhbGwiIG5hbWU9InhrYmNvbW1vbi5vcmciCiAgICAgICBocmVmPSJodHRwOi8veGti
Y29tbW9uLm9yZyIvPgogICA8cmVwb3NpdG9yeSB0eXBlPSJ0YXJiYWxsIiBuYW1lPSJzYXZhbm5h
aC5nbnUub3JnIgpAQCAtMTcwLDY5ICsxNjYsNiBAQAogICAgICAgICAgICAgaGFzaD0ic2hhMjU2
OjljODc3MDcyMGFhMDAzNDQ3OTczNWY1OGE0ZGM0Y2E5YjE3MmVjZmVkZTI4ZjUxMzQzMTJlMTM1
YjczMDFlZmEiLz4KICAgPC9hdXRvdG9vbHM+CiAKLSAgPGF1dG90b29scyBpZD0ib3JjIiBhdXRv
Z2VuYXJncz0iLS1kaXNhYmxlLWd0ay1kb2MiIGF1dG9nZW4tc2g9ImNvbmZpZ3VyZSI+Ci0gICAg
PGJyYW5jaCBtb2R1bGU9Im9yYy9vcmMtMC40LjE3LnRhci5neiIgdmVyc2lvbj0iMC40LjE3Igot
ICAgICAgICAgICAgcmVwbz0iZ3N0cmVhbWVyIgotICAgICAgICAgICAgaGFzaD0ic2hhMjU2OjRm
YzdjY2E0OGM1OWZmZjIzYWZlZTc4ZmI2NDJjZGJkZTAwMWY1NjQwMWM4ZjQ3Yjk1YTE2NTc4ZDFk
NWQ3ZTgiCi0gICAgICAgICAgICBtZDVzdW09ImFmMWJmM2RhYjllNjlmM2MzNmYzODkyODVlMmEx
MmExIi8+Ci0gIDwvYXV0b3Rvb2xzPgotCi0gIDxhdXRvdG9vbHMgaWQ9ImdzdHJlYW1lciIgYXV0
b2dlbi1zaD0iY29uZmlndXJlIiBhdXRvZ2VuYXJncz0iLS1kaXNhYmxlLWd0ay1kb2MiPgotICAg
IDxkZXBlbmRlbmNpZXM+Ci0gICAgICA8ZGVwIHBhY2thZ2U9Im9yYyIvPgotICAgIDwvZGVwZW5k
ZW5jaWVzPgotICAgIDxicmFuY2ggbW9kdWxlPSJnc3RyZWFtZXIvZ3N0cmVhbWVyLSR7dmVyc2lv
bn0udGFyLnh6IiB2ZXJzaW9uPSIxLjEwLjUiCi0gICAgICAgICAgICByZXBvPSJnc3RyZWFtZXIi
Ci0gICAgICAgICAgICBoYXNoPSJzaGEyNTY6YmMwNjI0MzYwMDgxN2Y2MzcwMjlkYTI5ZDA4OWQ1
OTA4ZDFkMjY2NTQyZjY4YmY2NjI2YTEwYzVmMDVmMWYxZCI+Ci0gICAgICA8cGF0Y2ggZmlsZT0i
Z3N0cmVhbWVyLTAwMDEtcHJvdGVjdGlvbi1hZGRlZC1mdW5jdGlvbi10by1maWx0ZXItc3lzdGVt
LWlkcy5wYXRjaCIgc3RyaXA9IjEiLz4KLSAgICA8L2JyYW5jaD4KLSAgPC9hdXRvdG9vbHM+Ci0K
LSAgPGF1dG90b29scyBpZD0iZ3N0LXBsdWdpbnMtYmFzZSIKLSAgICAgICAgICAgICBhdXRvZ2Vu
LXNoPSJjb25maWd1cmUiCi0gICAgICAgICAgICAgYXV0b2dlbmFyZ3M9Ii0tZGlzYWJsZS1leGFt
cGxlcyAtLWRpc2FibGUtZ3RrLWRvYyI+Ci0gICAgPGRlcGVuZGVuY2llcz4KLSAgICAgIDxkZXAg
cGFja2FnZT0iZ3N0cmVhbWVyIi8+Ci0gICAgPC9kZXBlbmRlbmNpZXM+Ci0gICAgPGJyYW5jaCBt
b2R1bGU9ImdzdC1wbHVnaW5zLWJhc2UvZ3N0LXBsdWdpbnMtYmFzZS0ke3ZlcnNpb259LnRhci54
eiIgdmVyc2lvbj0iMS4xMC41IgotICAgICAgICAgICAgcmVwbz0iZ3N0cmVhbWVyIgotICAgICAg
ICAgICAgaGFzaD0ic2hhMjU2OjFjNDAxYTc5YmQxZTQ1MjFjNmVmMWI2NjU3OWJkZGVkZDkxMzZl
MTY0ZTU0NzkyYWFiNGJmY2YzNDg1YmY5YTciLz4KLSAgPC9hdXRvdG9vbHM+Ci0KLSAgPGF1dG90
b29scyBpZD0iZ3N0LXBsdWdpbnMtZ29vZCIgYXV0b2dlbi1zaD0iY29uZmlndXJlIiBhdXRvZ2Vu
YXJncz0iLS1kaXNhYmxlLWV4YW1wbGVzIC0tZGlzYWJsZS1zb3VwIC0tZGlzYWJsZS1ndGstZG9j
Ij4KLSAgICA8ZGVwZW5kZW5jaWVzPgotICAgICAgPGRlcCBwYWNrYWdlPSJnc3QtcGx1Z2lucy1i
YXNlIi8+Ci0gICAgPC9kZXBlbmRlbmNpZXM+Ci0KLSAgICA8YnJhbmNoIG1vZHVsZT0iZ3N0LXBs
dWdpbnMtZ29vZC9nc3QtcGx1Z2lucy1nb29kLSR7dmVyc2lvbn0udGFyLnh6IiB2ZXJzaW9uPSIx
LjEwLjUiCi0gICAgICAgICAgICByZXBvPSJnc3RyZWFtZXIiCi0gICAgICAgICAgICBoYXNoPSJz
aGEyNTY6YmUwNTNmNmVkNzE2ZWViNTE3Y2VjMTQ4Y2VjNjM3Y2RjZTU3MWM2ZTA0ZDVjMjE0MDll
Mjg3NmZiNzZjNzYzOSI+Ci0gICAgICA8cGF0Y2ggZmlsZT0iZ3N0LXBsdWdpbnMtZ29vZC0wMDAz
LXJ0cGJpbi1yZWNlaXZlLWJ1bmRsZS1zdXBwb3J0LnBhdGNoIiBzdHJpcD0iMSIvPgotICAgICAg
PHBhdGNoIGZpbGU9ImdzdC1wbHVnaW5zLWdvb2QtMDAwNS1zb3VwaHR0cHNyYy1jb29raWUtamFy
LWFuZC1jb250ZXh0LXF1ZXJ5LXN1cHBvcnQucGF0Y2giIHN0cmlwPSIxIi8+Ci0gICAgICA8cGF0
Y2ggZmlsZT0iZ3N0LXBsdWdpbnMtZ29vZC0wMDA2LXF0ZGVtdXgtYWRkLWNvbnRleHQtZm9yLWEt
cHJlZmVycmVkLXByb3RlY3Rpb24ucGF0Y2giIHN0cmlwPSIxIi8+Ci0gICAgICA8cGF0Y2ggZmls
ZT0iZ3N0LXBsdWdpbnMtZ29vZC0wMDA4LXF0ZGVtdXgtYWxzby1wdXNoLWJ1ZmZlcnMtd2l0aG91
dC1lbmNyeXB0aW9uLWluZm8taW4ucGF0Y2giIHN0cmlwPSIxIi8+Ci0gICAgPC9icmFuY2g+Ci0g
IDwvYXV0b3Rvb2xzPgotCi0gIDxhdXRvdG9vbHMgaWQ9ImdzdC1wbHVnaW5zLWJhZCIgYXV0b2dl
bi1zaD0iY29uZmlndXJlIiBhdXRvZ2VuYXJncz0iLS1kaXNhYmxlLWV4YW1wbGVzIC0tZGlzYWJs
ZS1ndGstZG9jIC0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uIj4KLSAgICA8ZGVwZW5kZW5jaWVzPgot
ICAgICAgPGRlcCBwYWNrYWdlPSJnc3QtcGx1Z2lucy1iYXNlIi8+Ci0gICAgPC9kZXBlbmRlbmNp
ZXM+Ci0gICAgPGJyYW5jaCBtb2R1bGU9ImdzdC1wbHVnaW5zLWJhZC9nc3QtcGx1Z2lucy1iYWQt
JHt2ZXJzaW9ufS50YXIueHoiIHZlcnNpb249IjEuMTAuNSIKLSAgICAgICAgICAgIHJlcG89Imdz
dHJlYW1lciIKLSAgICAgICAgICAgIGhhc2g9InNoYTI1NjpjNTgwNjA0MGJiODNiNDNiZTg2Y2U1
OTJlNmExOWM1ZDgzZDc3NzZmN2Q5ZjQzNGViNGI5MTFjNGVmZmYzNTczIj4KLSAgICA8L2JyYW5j
aD4KLSAgPC9hdXRvdG9vbHM+Ci0KLSAgPGF1dG90b29scyBpZD0iZ3N0LWxpYmF2IiBhdXRvZ2Vu
LXNoPSJjb25maWd1cmUiIGF1dG9nZW5hcmdzPSItLXdpdGgtbGliYXYtZXh0cmEtY29uZmlndXJl
PSctLWRpc2FibGUteWFzbScgLS1kaXNhYmxlLWd0ay1kb2MiPgotICAgIDxkZXBlbmRlbmNpZXM+
Ci0gICAgICA8ZGVwIHBhY2thZ2U9ImdzdC1wbHVnaW5zLWJhc2UiLz4KLSAgICA8L2RlcGVuZGVu
Y2llcz4KLSAgICA8YnJhbmNoIG1vZHVsZT0iZ3N0LWxpYmF2L2dzdC1saWJhdi0ke3ZlcnNpb259
LnRhci54eiIgdmVyc2lvbj0iMS4xMC41IgotICAgICAgICAgICAgcmVwbz0iZ3N0cmVhbWVyIgot
ICAgICAgICAgICAgaGFzaD0ic2hhMjU2OmU0ZDJmMzE1ZjQ3OGQ0NzI4MWZiZmRmYmQ1OTBhNjNk
MjM3MDRjYTM3OTExZDcxNDJkNTk5MjYxNmY0YjI4ZDMiLz4KLSAgPC9hdXRvdG9vbHM+Ci0KICAg
PGNtYWtlIGlkPSJ3cGUiPgogICAgIDxicmFuY2ggcmVwbz0iZ2l0aHViLmNvbSIgbW9kdWxlPSJX
ZWJQbGF0Zm9ybUZvckVtYmVkZGVkL1dQRUJhY2tlbmQuZ2l0IgogICAgICAgICAgICAgdGFnPSI1
ZTJhMjlkMmNjYzYzN2Y3MTIyYmE3MmMxZDYyZWY2NjliNDJmMDVjIiAvPgpkaWZmIC0tZ2l0IGEv
VG9vbHMvd3BlL3BhdGNoZXMvZ3N0LXBsdWdpbnMtZ29vZC0wMDAzLXJ0cGJpbi1yZWNlaXZlLWJ1
bmRsZS1zdXBwb3J0LnBhdGNoIGIvVG9vbHMvd3BlL3BhdGNoZXMvZ3N0LXBsdWdpbnMtZ29vZC0w
MDAzLXJ0cGJpbi1yZWNlaXZlLWJ1bmRsZS1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmZjg5YzgxOTk4YmRjYTVkZTg0ODIzNWYxMDMxMWZhNzM5Yzk3YmE3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL3dwZS9w
YXRjaGVzL2dzdC1wbHVnaW5zLWdvb2QtMDAwMy1ydHBiaW4tcmVjZWl2ZS1idW5kbGUtc3VwcG9y
dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMTggKzAsMCBAQAotRnJvbSBkY2QzY2U5NzUx
Y2RlZjBiNWFiMWZhMTE4MzU1ZjkyYmRmZTgyY2IzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot
RnJvbTogUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4KLURhdGU6IFdlZCwgMTYg
Tm92IDIwMTYgMDg6NTY6MzQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gcnRwYmluOiByZWNlaXZl
IGJ1bmRsZSBzdXBwb3J0Ci0KLUEgbmV3IHNpZ25hbCBuYW1lZCBvbi1idW5kbGVkLXNzcmMgaXMg
cHJvdmlkZWQgYW5kIGNhbiBiZQotdXNlZCBieSB0aGUgYXBwbGljYXRpb24gdG8gcmVkaXJlY3Qg
YSBzdHJlYW0gdG8gYSBkaWZmZXJlbnQKLUdzdFJ0cFNlc3Npb24gb3IgdG8ga2VlcCB0aGUgUlRY
IHN0cmVhbSBncm91cGVkIHdpdGhpbiB0aGUKLUdzdFJ0cFNlc3Npb24gb2YgdGhlIHNhbWUgbWVk
aWEgdHlwZS4KLQotaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc3
Mjc0MAotLS0tCi0gZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWdvb2QtcGx1Z2lucy5zaWduYWxz
IHwgICA4ICsKLSBnc3QvcnRwbWFuYWdlci9nc3RydHBiaW4uYyAgICAgICAgICAgICAgICAgICAg
fCA1NjIgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KLSBnc3QvcnRwbWFuYWdlci9nc3RydHBi
aW4uaCAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwotIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFt
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArCi0gdGVzdHMvY2hlY2svZWxlbWVudHMvLmdp
dGlnbm9yZSAgICAgICAgICAgICAgIHwgICAxICsKLSB0ZXN0cy9jaGVjay9lbGVtZW50cy9ydHBi
dW5kbGUuYyAgICAgICAgICAgICAgfCAzOTAgKysrKysrKysrKysrKysrKysrCi0gdGVzdHMvY2hl
Y2svbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKLSB0ZXN0cy9leGFt
cGxlcy9ydHAvLmdpdGlnbm9yZSAgICAgICAgICAgICAgICAgfCAgIDIgKwotIHRlc3RzL2V4YW1w
bGVzL3J0cC9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICB8ICAxMCArLQotIHRlc3RzL2V4YW1w
bGVzL3J0cC9jbGllbnQtcnRwYnVuZGxlLmMgICAgICAgICB8IDI2NiArKysrKysrKysrKysKLSB0
ZXN0cy9leGFtcGxlcy9ydHAvc2VydmVyLXJ0cGJ1bmRsZS5jICAgICAgICAgfCAxNzkgKysrKysr
KysKLSAxMSBmaWxlcyBjaGFuZ2VkLCAxMjY1IGluc2VydGlvbnMoKyksIDE2MCBkZWxldGlvbnMo
LSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvY2hlY2svZWxlbWVudHMvcnRwYnVuZGxlLmMK
LSBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvZXhhbXBsZXMvcnRwL2NsaWVudC1ydHBidW5kbGUu
YwotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9leGFtcGxlcy9ydHAvc2VydmVyLXJ0cGJ1bmRs
ZS5jCi0KLWRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtZ29vZC1wbHVnaW5z
LnNpZ25hbHMgYi9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtZ29vZC1wbHVnaW5zLnNpZ25hbHMK
LWluZGV4IDNkYjE3ZTkuLjQ0YmJkZGEgMTAwNjQ0Ci0tLS0gYS9kb2NzL3BsdWdpbnMvZ3N0LXBs
dWdpbnMtZ29vZC1wbHVnaW5zLnNpZ25hbHMKLSsrKyBiL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lu
cy1nb29kLXBsdWdpbnMuc2lnbmFscwotQEAgLTM3NSw2ICszNzUsMTQgQEAgZ3VpbnQgIGFyZzEK
LSA8L1NJR05BTD4KLSAKLSA8U0lHTkFMPgotKzxOQU1FPkdzdFJ0cEJpbjo6b24tYnVuZGxlZC1z
c3JjPC9OQU1FPgotKzxSRVRVUk5TPmd1aW50PC9SRVRVUk5TPgotKzxGTEFHUz5sPC9GTEFHUz4K
LStHc3RSdHBCaW4gKmdzdHJ0cGJpbgotK2d1aW50ICBhcmcxCi0rPC9TSUdOQUw+Ci0rCi0rPFNJ
R05BTD4KLSA8TkFNRT5Hc3RSdHBKaXR0ZXJCdWZmZXI6OmNsZWFyLXB0LW1hcDwvTkFNRT4KLSA8
UkVUVVJOUz52b2lkPC9SRVRVUk5TPgotIDxGTEFHUz5sYTwvRkxBR1M+Ci1kaWZmIC0tZ2l0IGEv
Z3N0L3J0cG1hbmFnZXIvZ3N0cnRwYmluLmMgYi9nc3QvcnRwbWFuYWdlci9nc3RydHBiaW4uYwot
aW5kZXggNjQ4YWRiOS4uZjU4ZGUwMSAxMDA2NDQKLS0tLSBhL2dzdC9ydHBtYW5hZ2VyL2dzdHJ0
cGJpbi5jCi0rKysgYi9nc3QvcnRwbWFuYWdlci9nc3RydHBiaW4uYwotQEAgLTUzLDYgKzUzLDEz
IEBACi0gICogU1NSQyBpbiB0aGUgUlRQIHBhY2tldHMgdG8gaXRzIG93biBTU1JDIGFuZCB3aWwg
Zm9yd2FyZCB0aGUgcGFja2V0cyBvbiB0aGUKLSAgKiBzZW5kX3J0cF9zcmNfXCV1IHBhZCBhZnRl
ciB1cGRhdGluZyBpdHMgaW50ZXJuYWwgc3RhdGUuCi0gICoKLSsgKiAjR3N0UnRwQmluIGNhbiBh
bHNvIGRlbXVsdGlwbGV4IGluY29taW5nIGJ1bmRsZWQgc3RyZWFtcy4gVGhlIGZpcnN0Ci0rICog
I0dzdFJ0cFNlc3Npb24gd2lsbCBoYXZlIGEgI0dzdFJ0cFNzcmNEZW11eCBlbGVtZW50IHNwbGl0
dGluZyB0aGUgc3RyZWFtcwotKyAqIGJhc2VkIG9uIHRoZWlyIFNTUkMgYW5kIHBvdGVudGlhbGx5
IGRpc3BhdGNoZWQgdG8gYSBkaWZmZXJlbnQgI0dzdFJ0cFNlc3Npb24uCi0rICogQmVjYXVzZSBy
ZXRyYW5zbWlzc2lvbiBTU1JDcyBuZWVkIHRvIGJlIG1lcmdlZCB3aXRoIHRoZSBjb3JyZXNwb25k
aW5nIG1lZGlhCi0rICogc3RyZWFtIHRoZSAjR3N0UnRwQmluOjpvbi1idW5kbGVkLXNzcmMgc2ln
bmFsIGlzIGVtaXR0ZWQgc28gdGhhdCB0aGUKLSsgKiBhcHBsaWNhdGlvbiBjYW4gZmluZCBvdXQg
dG8gd2hpY2ggc2Vzc2lvbiB0aGUgU1NSQyBiZWxvbmdzLgotKyAqCi0gICogVGhlIHNlc3Npb24g
bWFuYWdlciBuZWVkcyB0aGUgY2xvY2stcmF0ZSBvZiB0aGUgcGF5bG9hZCB0eXBlcyBpdCBpcyBo
YW5kbGluZwotICAqIGFuZCB3aWxsIHNpZ25hbCB0aGUgI0dzdFJ0cFNlc3Npb246OnJlcXVlc3Qt
cHQtbWFwIHNpZ25hbCB3aGVuIGl0IG5lZWRzIHN1Y2ggYQotICAqIG1hcHBpbmcuIE9uZSBjYW4g
Y2xlYXIgdGhlIGNhY2hlZCB2YWx1ZXMgd2l0aCB0aGUgI0dzdFJ0cFNlc3Npb246OmNsZWFyLXB0
LW1hcAotQEAgLTI3Niw2ICsyODMsOCBAQCBlbnVtCi0gICBTSUdOQUxfT05fTkVXX1NFTkRFUl9T
U1JDLAotICAgU0lHTkFMX09OX1NFTkRFUl9TU1JDX0FDVElWRSwKLSAKLSsgIFNJR05BTF9PTl9C
VU5ETEVEX1NTUkMsCi0rCi0gICBMQVNUX1NJR05BTAotIH07Ci0gCi1AQCAtMzYyLDYgKzM3MSwx
NCBAQCBzdGF0aWMgdm9pZCByZW1vdmVfc2VuZF9ydHAgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0
UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24pOwotIHN0YXRpYyB2b2lkIHJlbW92ZV9ydGNwIChHc3RS
dHBCaW4gKiBydHBiaW4sIEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9uKTsKLSBzdGF0aWMgdm9p
ZCBmcmVlX2NsaWVudCAoR3N0UnRwQmluQ2xpZW50ICogY2xpZW50LCBHc3RSdHBCaW4gKiBiaW4p
OwotIHN0YXRpYyB2b2lkIGZyZWVfc3RyZWFtIChHc3RSdHBCaW5TdHJlYW0gKiBzdHJlYW0sIEdz
dFJ0cEJpbiAqIGJpbik7Ci0rc3RhdGljIEdzdFJ0cEJpblNlc3Npb24gKmNyZWF0ZV9zZXNzaW9u
IChHc3RSdHBCaW4gKiBydHBiaW4sIGdpbnQgaWQpOwotK3N0YXRpYyBHc3RQYWQgKmNvbXBsZXRl
X3Nlc3Npb25fc2luayAoR3N0UnRwQmluICogcnRwYmluLAotKyAgICBHc3RSdHBCaW5TZXNzaW9u
ICogc2Vzc2lvbiwgZ2Jvb2xlYW4gYnVuZGxlX2RlbXV4ZXJfbmVlZGVkKTsKLStzdGF0aWMgdm9p
ZAotK2NvbXBsZXRlX3Nlc3Npb25fcmVjZWl2ZXIgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0UnRw
QmluU2Vzc2lvbiAqIHNlc3Npb24sCi0rICAgIGd1aW50IHNlc3NpZCk7Ci0rc3RhdGljIEdzdFBh
ZCAqY29tcGxldGVfc2Vzc2lvbl9ydGNwIChHc3RSdHBCaW4gKiBydHBiaW4sCi0rICAgIEdzdFJ0
cEJpblNlc3Npb24gKiBzZXNzaW9uLCBndWludCBzZXNzaWQsIGdib29sZWFuIGJ1bmRsZV9kZW11
eGVyX25lZWRlZCk7Ci0gCi0gLyogTWFuYWdlcyB0aGUgUlRQIHN0cmVhbSBmb3Igb25lIFNTUkMu
Ci0gICoKLUBAIC00MjgsNiArNDQ1LDEyIEBAIHN0cnVjdCBfR3N0UnRwQmluU2Vzc2lvbgotICAg
Z3Vsb25nIGRlbXV4X25ld3BhZF9zaWc7Ci0gICBndWxvbmcgZGVtdXhfcGFkcmVtb3ZlZF9zaWc7
Ci0gCi0rICAvKiBCdW5kbGluZyBzdXBwb3J0ICovCi0rICBHc3RFbGVtZW50ICpydHBfZnVubmVs
OwotKyAgR3N0RWxlbWVudCAqcnRjcF9mdW5uZWw7Ci0rICBHc3RFbGVtZW50ICpidW5kbGVfZGVt
dXg7Ci0rICBndWxvbmcgYnVuZGxlX2RlbXV4X25ld3BhZF9zaWc7Ci0rCi0gICBHTXV0ZXggbG9j
azsKLSAKLSAgIC8qIGxpc3Qgb2YgR3N0UnRwQmluU3RyZWFtICovCi1AQCAtNjI5LDYgKzY1Miw5
NiBAQCBzc3JjX2RlbXV4X3BhZF9yZW1vdmVkIChHc3RFbGVtZW50ICogZWxlbWVudCwgZ3VpbnQg
c3NyYywgR3N0UGFkICogcGFkLAotICAgR1NUX1JUUF9CSU5fVU5MT0NLIChydHBiaW4pOwotIH0K
LSAKLStzdGF0aWMgdm9pZAotK25ld19idW5kbGVkX3NzcmNfcGFkX2ZvdW5kIChHc3RFbGVtZW50
ICogZWxlbWVudCwgZ3VpbnQgc3NyYywgR3N0UGFkICogcGFkLAotKyAgICBHc3RSdHBCaW5TZXNz
aW9uICogc2Vzc2lvbikKLSt7Ci0rICBHVmFsdWUgcmVzdWx0ID0gR19WQUxVRV9JTklUOwotKyAg
R1ZhbHVlIHBhcmFtc1syXSA9IHsgR19WQUxVRV9JTklULCBHX1ZBTFVFX0lOSVQgfTsKLSsgIGd1
aW50IHNlc3Npb25faWQgPSAwOwotKyAgR3N0UnRwQmluU2Vzc2lvbiAqdGFyZ2V0X3Nlc3Npb24g
PSBOVUxMOwotKyAgR3N0UnRwQmluICpydHBiaW4gPSBzZXNzaW9uLT5iaW47Ci0rICBnY2hhciAq
bmFtZTsKLSsgIEdzdFBhZCAqc3JjX3BhZDsKLSsgIEdzdFBhZCAqcmVjdl9ydHBfc2luayA9IE5V
TEw7Ci0rICBHc3RQYWQgKnJlY3ZfcnRjcF9zaW5rID0gTlVMTDsKLSsgIEdzdFBhZExpbmtSZXR1
cm4gcmV0OwotKwotKyAgR1NUX1JUUF9CSU5fRFlOX0xPQ0sgKHJ0cGJpbik7Ci0rICBHU1RfREVC
VUdfT0JKRUNUIChydHBiaW4sICJuZXcgYnVuZGxlZCBTU1JDIHBhZCAlMDh4LCAlczolcyIsIHNz
cmMsCi0rICAgICAgR1NUX0RFQlVHX1BBRF9OQU1FIChwYWQpKTsKLSsKLSsgIGdfdmFsdWVfaW5p
dCAoJnJlc3VsdCwgR19UWVBFX1VJTlQpOwotKyAgZ192YWx1ZV9pbml0ICgmcGFyYW1zWzBdLCBH
U1RfVFlQRV9FTEVNRU5UKTsKLSsgIGdfdmFsdWVfc2V0X29iamVjdCAoJnBhcmFtc1swXSwgcnRw
YmluKTsKLSsgIGdfdmFsdWVfaW5pdCAoJnBhcmFtc1sxXSwgR19UWVBFX1VJTlQpOwotKyAgZ192
YWx1ZV9zZXRfdWludCAoJnBhcmFtc1sxXSwgc3NyYyk7Ci0rCi0rICBnX3NpZ25hbF9lbWl0diAo
cGFyYW1zLAotKyAgICAgIGdzdF9ydHBfYmluX3NpZ25hbHNbU0lHTkFMX09OX0JVTkRMRURfU1NS
Q10sIDAsICZyZXN1bHQpOwotKyAgZ192YWx1ZV91bnNldCAoJnBhcmFtc1swXSk7Ci0rCi0rICBz
ZXNzaW9uX2lkID0gZ192YWx1ZV9nZXRfdWludCAoJnJlc3VsdCk7Ci0rICBpZiAoc2Vzc2lvbl9p
ZCA9PSAwKSB7Ci0rICAgIHRhcmdldF9zZXNzaW9uID0gc2Vzc2lvbjsKLSsgIH0gZWxzZSB7Ci0r
ICAgIHRhcmdldF9zZXNzaW9uID0gZmluZF9zZXNzaW9uX2J5X2lkIChydHBiaW4sIChnaW50KSBz
ZXNzaW9uX2lkKTsKLSsgICAgaWYgKCF0YXJnZXRfc2Vzc2lvbikgewotKyAgICAgIHRhcmdldF9z
ZXNzaW9uID0gY3JlYXRlX3Nlc3Npb24gKHJ0cGJpbiwgc2Vzc2lvbl9pZCk7Ci0rICAgIH0KLSsg
ICAgaWYgKCF0YXJnZXRfc2Vzc2lvbi0+cmVjdl9ydHBfc2luaykgewotKyAgICAgIHJlY3ZfcnRw
X3NpbmsgPSBjb21wbGV0ZV9zZXNzaW9uX3NpbmsgKHJ0cGJpbiwgdGFyZ2V0X3Nlc3Npb24sIEZB
TFNFKTsKLSsgICAgfQotKwotKyAgICBpZiAoIXRhcmdldF9zZXNzaW9uLT5yZWN2X3J0cF9zcmMp
Ci0rICAgICAgY29tcGxldGVfc2Vzc2lvbl9yZWNlaXZlciAocnRwYmluLCB0YXJnZXRfc2Vzc2lv
biwgc2Vzc2lvbl9pZCk7Ci0rCi0rICAgIGlmICghdGFyZ2V0X3Nlc3Npb24tPnJlY3ZfcnRjcF9z
aW5rKSB7Ci0rICAgICAgcmVjdl9ydGNwX3NpbmsgPQotKyAgICAgICAgICBjb21wbGV0ZV9zZXNz
aW9uX3J0Y3AgKHJ0cGJpbiwgdGFyZ2V0X3Nlc3Npb24sIHNlc3Npb25faWQsIEZBTFNFKTsKLSsg
ICAgfQotKyAgfQotKwotKyAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAiQXNzaWduaW5nIGJ1
bmRsZWQgc3NyYyAldSB0byBzZXNzaW9uICV1Iiwgc3NyYywKLSsgICAgICBzZXNzaW9uX2lkKTsK
LSsKLSsgIGlmICghcmVjdl9ydHBfc2luaykgewotKyAgICByZWN2X3J0cF9zaW5rID0KLSsgICAg
ICAgIGdzdF9lbGVtZW50X2dldF9yZXF1ZXN0X3BhZCAodGFyZ2V0X3Nlc3Npb24tPnJ0cF9mdW5u
ZWwsICJzaW5rXyV1Iik7Ci0rICB9Ci0rCi0rICBpZiAoIXJlY3ZfcnRjcF9zaW5rKSB7Ci0rICAg
IHJlY3ZfcnRjcF9zaW5rID0KLSsgICAgICAgIGdzdF9lbGVtZW50X2dldF9yZXF1ZXN0X3BhZCAo
dGFyZ2V0X3Nlc3Npb24tPnJ0Y3BfZnVubmVsLCAic2lua18ldSIpOwotKyAgfQotKwotKyAgbmFt
ZSA9IGdfc3RyZHVwX3ByaW50ZiAoInNyY18ldSIsIHNzcmMpOwotKyAgc3JjX3BhZCA9IGdzdF9l
bGVtZW50X2dldF9zdGF0aWNfcGFkIChlbGVtZW50LCBuYW1lKTsKLSsgIHJldCA9IGdzdF9wYWRf
bGluayAoc3JjX3BhZCwgcmVjdl9ydHBfc2luayk7Ci0rICBnX2ZyZWUgKG5hbWUpOwotKyAgZ3N0
X29iamVjdF91bnJlZiAoc3JjX3BhZCk7Ci0rICBnc3Rfb2JqZWN0X3VucmVmIChyZWN2X3J0cF9z
aW5rKTsKLSsgIGlmIChyZXQgIT0gR1NUX1BBRF9MSU5LX09LKSB7Ci0rICAgIGdfd2FybmluZwot
KyAgICAgICAgKCJydHBiaW46IGZhaWxlZCB0byBsaW5rIGJ1bmRsZSBkZW11eGVyIHRvIHJlY2Vp
dmUgcnRwIGZ1bm5lbCBmb3Igc2Vzc2lvbiAldSIsCi0rICAgICAgICBzZXNzaW9uX2lkKTsKLSsg
IH0KLSsKLSsgIG5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJydGNwX3NyY18ldSIsIHNzcmMpOwot
KyAgc3JjX3BhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChlbGVtZW50LCBuYW1lKTsK
LSsgIGdzdF9wYWRfbGluayAoc3JjX3BhZCwgcmVjdl9ydGNwX3NpbmspOwotKyAgZ19mcmVlIChu
YW1lKTsKLSsgIGdzdF9vYmplY3RfdW5yZWYgKHNyY19wYWQpOwotKyAgZ3N0X29iamVjdF91bnJl
ZiAocmVjdl9ydGNwX3NpbmspOwotKyAgaWYgKHJldCAhPSBHU1RfUEFEX0xJTktfT0spIHsKLSsg
ICAgZ193YXJuaW5nCi0rICAgICAgICAoInJ0cGJpbjogZmFpbGVkIHRvIGxpbmsgYnVuZGxlIGRl
bXV4ZXIgdG8gcmVjZWl2ZSBydGNwIHNpbmsgcGFkIGZvciBzZXNzaW9uICV1IiwKLSsgICAgICAg
IHNlc3Npb25faWQpOwotKyAgfQotKwotKyAgR1NUX1JUUF9CSU5fRFlOX1VOTE9DSyAocnRwYmlu
KTsKLSt9Ci0rCi0gLyogY3JlYXRlIGEgc2Vzc2lvbiB3aXRoIHRoZSBnaXZlbiBpZC4gIE11c3Qg
YmUgY2FsbGVkIHdpdGggUlRQX0JJTl9MT0NLICovCi0gc3RhdGljIEdzdFJ0cEJpblNlc3Npb24g
KgotIGNyZWF0ZV9zZXNzaW9uIChHc3RSdHBCaW4gKiBydHBiaW4sIGdpbnQgaWQpCi1AQCAtNjQ5
LDYgKzc2MiwxMCBAQCBjcmVhdGVfc2Vzc2lvbiAoR3N0UnRwQmluICogcnRwYmluLCBnaW50IGlk
KQotICAgc2Vzcy0+YmluID0gcnRwYmluOwotICAgc2Vzcy0+c2Vzc2lvbiA9IHNlc3Npb247Ci0g
ICBzZXNzLT5kZW11eCA9IGRlbXV4OwotKwotKyAgc2Vzcy0+cnRwX2Z1bm5lbCA9IGdzdF9lbGVt
ZW50X2ZhY3RvcnlfbWFrZSAoImZ1bm5lbCIsIE5VTEwpOwotKyAgc2Vzcy0+cnRjcF9mdW5uZWwg
PSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJmdW5uZWwiLCBOVUxMKTsKLSsKLSAgIHNlc3Mt
PnB0bWFwID0gZ19oYXNoX3RhYmxlX25ld19mdWxsIChOVUxMLCBOVUxMLCBOVUxMLAotICAgICAg
IChHRGVzdHJveU5vdGlmeSkgZ3N0X2NhcHNfdW5yZWYpOwotICAgcnRwYmluLT5zZXNzaW9ucyA9
IGdfc2xpc3RfcHJlcGVuZCAocnRwYmluLT5zZXNzaW9ucywgc2Vzcyk7Ci1AQCAtNjk2LDYgKzgx
Myw4IEBAIGNyZWF0ZV9zZXNzaW9uIChHc3RSdHBCaW4gKiBydHBiaW4sIGdpbnQgaWQpCi0gCi0g
ICBnc3RfYmluX2FkZCAoR1NUX0JJTl9DQVNUIChydHBiaW4pLCBzZXNzaW9uKTsKLSAgIGdzdF9i
aW5fYWRkIChHU1RfQklOX0NBU1QgKHJ0cGJpbiksIGRlbXV4KTsKLSsgIGdzdF9iaW5fYWRkIChH
U1RfQklOX0NBU1QgKHJ0cGJpbiksIHNlc3MtPnJ0cF9mdW5uZWwpOwotKyAgZ3N0X2Jpbl9hZGQg
KEdTVF9CSU5fQ0FTVCAocnRwYmluKSwgc2Vzcy0+cnRjcF9mdW5uZWwpOwotIAotICAgR1NUX09C
SkVDVF9MT0NLIChydHBiaW4pOwotICAgdGFyZ2V0ID0gR1NUX1NUQVRFX1RBUkdFVCAocnRwYmlu
KTsKLUBAIC03MDQsNiArODIzLDggQEAgY3JlYXRlX3Nlc3Npb24gKEdzdFJ0cEJpbiAqIHJ0cGJp
biwgZ2ludCBpZCkKLSAgIC8qIGNoYW5nZSBzdGF0ZSBvbmx5IHRvIHdoYXQncyBuZWVkZWQgKi8K
LSAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoZGVtdXgsIHRhcmdldCk7Ci0gICBnc3RfZWxlbWVu
dF9zZXRfc3RhdGUgKHNlc3Npb24sIHRhcmdldCk7Ci0rICBnc3RfZWxlbWVudF9zZXRfc3RhdGUg
KHNlc3MtPnJ0cF9mdW5uZWwsIHRhcmdldCk7Ci0rICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHNl
c3MtPnJ0Y3BfZnVubmVsLCB0YXJnZXQpOwotIAotICAgcmV0dXJuIHNlc3M7Ci0gCi1AQCAtODA3
LDcgKzkyOCw3IEBAIGdldF9wdF9tYXAgKEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9uLCBndWlu
dCBwdCkKLSAgIEdWYWx1ZSByZXQgPSB7IDAgfTsKLSAgIEdWYWx1ZSBhcmdzWzNdID0geyB7MH0s
IHswfSwgezB9IH07Ci0gCi0tICBHU1RfREVCVUcgKCJzZWFyY2hpbmcgcHQgJWQgaW4gY2FjaGUi
LCBwdCk7Ci0rICBHU1RfREVCVUcgKCJzZWFyY2hpbmcgcHQgJXUgaW4gY2FjaGUiLCBwdCk7Ci0g
Ci0gICBHU1RfUlRQX1NFU1NJT05fTE9DSyAoc2Vzc2lvbik7Ci0gCi1AQCAtODIwLDcgKzk0MSw3
IEBAIGdldF9wdF9tYXAgKEdzdFJ0cEJpblNlc3Npb24gKiBzZXNzaW9uLCBndWludCBwdCkKLSAK
LSAgIGJpbiA9IHNlc3Npb24tPmJpbjsKLSAKLS0gIEdTVF9ERUJVRyAoImVtaXRpbmcgc2lnbmFs
IGZvciBwdCAlZCBpbiBzZXNzaW9uICVkIiwgcHQsIHNlc3Npb24tPmlkKTsKLSsgIEdTVF9ERUJV
RyAoImVtaXRpbmcgc2lnbmFsIGZvciBwdCAldSBpbiBzZXNzaW9uICV1IiwgcHQsIHNlc3Npb24t
PmlkKTsKLSAKLSAgIC8qIG5vdCBpbiBjYWNoZSwgc2VuZCBzaWduYWwgdG8gcmVxdWVzdCBjYXBz
ICovCi0gICBnX3ZhbHVlX2luaXQgKCZhcmdzWzBdLCBHU1RfVFlQRV9FTEVNRU5UKTsKLUBAIC04
NTYsNyArOTc3LDcgQEAgZ2V0X3B0X21hcCAoR3N0UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24sIGd1
aW50IHB0KQotICAgaWYgKCFjYXBzKQotICAgICBnb3RvIG5vX2NhcHM7Ci0gCi0tICBHU1RfREVC
VUcgKCJjYWNoaW5nIHB0ICVkIGFzICUiIEdTVF9QVFJfRk9STUFULCBwdCwgY2Fwcyk7Ci0rICBH
U1RfREVCVUcgKCJjYWNoaW5nIHB0ICV1IGFzICUiIEdTVF9QVFJfRk9STUFULCBwdCwgY2Fwcyk7
Ci0gCi0gICAvKiBzdG9yZSBpbiBjYWNoZSwgdGFrZSBhZGRpdGlvbmFsIHJlZiAqLwotICAgZ19o
YXNoX3RhYmxlX2luc2VydCAoc2Vzc2lvbi0+cHRtYXAsIEdJTlRfVE9fUE9JTlRFUiAocHQpLAot
QEAgLTk0Nyw3ICsxMDY4LDcgQEAgZ3N0X3J0cF9iaW5fZ2V0X3Nlc3Npb24gKEdzdFJ0cEJpbiAq
IGJpbiwgZ3VpbnQgc2Vzc2lvbl9pZCkKLSAgIEdzdEVsZW1lbnQgKnJldCA9IE5VTEw7Ci0gCi0g
ICBHU1RfUlRQX0JJTl9MT0NLIChiaW4pOwotLSAgR1NUX0RFQlVHX09CSkVDVCAoYmluLCAicmV0
cmlldmluZyBHc3RSdHBTZXNzaW9uLCBpbmRleDogJWQiLCBzZXNzaW9uX2lkKTsKLSsgIEdTVF9E
RUJVR19PQkpFQ1QgKGJpbiwgInJldHJpZXZpbmcgR3N0UnRwU2Vzc2lvbiwgaW5kZXg6ICV1Iiwg
c2Vzc2lvbl9pZCk7Ci0gICBzZXNzaW9uID0gZmluZF9zZXNzaW9uX2J5X2lkIChiaW4sIChnaW50
KSBzZXNzaW9uX2lkKTsKLSAgIGlmIChzZXNzaW9uKSB7Ci0gICAgIHJldCA9IGdzdF9vYmplY3Rf
cmVmIChzZXNzaW9uLT5zZXNzaW9uKTsKLUBAIC05NjQsNyArMTA4NSw3IEBAIGdzdF9ydHBfYmlu
X2dldF9pbnRlcm5hbF9zZXNzaW9uIChHc3RSdHBCaW4gKiBiaW4sIGd1aW50IHNlc3Npb25faWQp
Ci0gICBHc3RSdHBCaW5TZXNzaW9uICpzZXNzaW9uOwotIAotICAgR1NUX1JUUF9CSU5fTE9DSyAo
YmluKTsKLS0gIEdTVF9ERUJVR19PQkpFQ1QgKGJpbiwgInJldHJpZXZpbmcgaW50ZXJuYWwgUlRQ
U2Vzc2lvbiBvYmplY3QsIGluZGV4OiAlZCIsCi0rICBHU1RfREVCVUdfT0JKRUNUIChiaW4sICJy
ZXRyaWV2aW5nIGludGVybmFsIFJUUFNlc3Npb24gb2JqZWN0LCBpbmRleDogJXUiLAotICAgICAg
IHNlc3Npb25faWQpOwotICAgc2Vzc2lvbiA9IGZpbmRfc2Vzc2lvbl9ieV9pZCAoYmluLCAoZ2lu
dCkgc2Vzc2lvbl9pZCk7Ci0gICBpZiAoc2Vzc2lvbikgewotQEAgLTIxOTQsNiArMjMxNSwyOSBA
QCBnc3RfcnRwX2Jpbl9jbGFzc19pbml0IChHc3RSdHBCaW5DbGFzcyAqIGtsYXNzKQotICAgICAg
ICAgICBvbl9zZW5kZXJfc3NyY19hY3RpdmUpLCBOVUxMLCBOVUxMLCBnX2NjbG9zdXJlX21hcnNo
YWxfZ2VuZXJpYywKLSAgICAgICBHX1RZUEVfTk9ORSwgMiwgR19UWVBFX1VJTlQsIEdfVFlQRV9V
SU5UKTsKLSAKLSsKLSsgIC8qKgotKyAgICogR3N0UnRwQmluOjpvbi1idW5kbGVkLXNzcmM6Ci0r
ICAgKiBAcnRwYmluOiB0aGUgb2JqZWN0IHdoaWNoIHJlY2VpdmVkIHRoZSBzaWduYWwKLSsgICAq
IEBzc3JjOiB0aGUgYnVuZGxlZCBTU1JDCi0rICAgKgotKyAgICogTm90aWZ5IG9mIGEgbmV3IGlu
Y29taW5nIGJ1bmRsZWQgU1NSQy4gSWYgbm8gaGFuZGxlciBpcyBjb25uZWN0ZWQgdG8gdGhlCi0r
ICAgKiBzaWduYWwgdGhlbiB0aGUgI0dzdFJ0cFNlc3Npb24gY3JlYXRlZCBmb3IgdGhlIHJlY3Zf
cnRwX3NpbmtfXCV1Ci0rICAgKiByZXF1ZXN0IHBhZCB3aWxsIGJlIG1hbmFnaW5nIHRoaXMgbmV3
IFNTUkMuIEhvd2V2ZXIgaWYgdGhlcmUgaXMgYSBoYW5kbGVyCi0rICAgKiBjb25uZWN0ZWQgdGhl
biB0aGUgYXBwbGljYXRpb24gY2FuIGRlY2lkZWQgdG8gZGlzcGF0Y2ggdGhpcyBuZXcgc3RyZWFt
IHRvCi0rICAgKiBhbm90aGVyIHNlc3Npb24gYnkgcHJvdmlkaW5nIGl0cyBJRCBhcyByZXR1cm4g
dmFsdWUgb2YgdGhlIGhhbmRsZXIuIFRoaXMKLSsgICAqIGNhbiBiZSBwYXJ0aWN1bGFybHkgdXNl
ZnVsIHRvIGtlZXAgcmV0cmFuc21pc3Npb24gU1NSQ3MgZ3JvdXBlZCB3aXRoIHRoZQotKyAgICog
c2Vzc2lvbiBmb3Igd2hpY2ggdGhleSBoYW5kbGUgcmV0cmFuc21pc3Npb24uCi0rICAgKgotKyAg
ICogU2luY2U6IDEuMTIKLSsgICAqLwotKyAgZ3N0X3J0cF9iaW5fc2lnbmFsc1tTSUdOQUxfT05f
QlVORExFRF9TU1JDXSA9Ci0rICAgICAgZ19zaWduYWxfbmV3ICgib24tYnVuZGxlZC1zc3JjIiwg
R19UWVBFX0ZST01fQ0xBU1MgKGtsYXNzKSwKLSsgICAgICBHX1NJR05BTF9SVU5fTEFTVCwgR19T
VFJVQ1RfT0ZGU0VUIChHc3RSdHBCaW5DbGFzcywKLSsgICAgICAgICAgb25fYnVuZGxlZF9zc3Jj
KSwgTlVMTCwgTlVMTCwKLSsgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfZ2VuZXJpYywgR19UWVBF
X1VJTlQsIDEsIEdfVFlQRV9VSU5UKTsKLSsKLSsKLSAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfU0RFUywKLSAgICAgICBnX3BhcmFtX3NwZWNf
Ym94ZWQgKCJzZGVzIiwgIlNERVMiLAotICAgICAgICAgICAiVGhlIFNERVMgaXRlbXMgb2YgdGhp
cyBzZXNzaW9uIiwKLUBAIC0zMDIxLDcgKzMxNjUsNyBAQCBuZXdfcGF5bG9hZF9mb3VuZCAoR3N0
RWxlbWVudCAqIGVsZW1lbnQsIGd1aW50IHB0LCBHc3RQYWQgKiBwYWQsCi0gCi0gICBydHBiaW4g
PSBzdHJlYW0tPmJpbjsKLSAKLS0gIEdTVF9ERUJVRyAoIm5ldyBwYXlsb2FkIHBhZCAlZCIsIHB0
KTsKLSsgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGJpbiwgIm5ldyBwYXlsb2FkIHBhZCAldSIsIHB0
KTsKLSAKLSAgIEdTVF9SVFBfQklOX1NIVVRET1dOX0xPQ0sgKHJ0cGJpbiwgc2h1dGRvd24pOwot
IAotQEAgLTMwNzgsNyArMzIyMiw3IEBAIHB0X21hcF9yZXF1ZXN0ZWQgKEdzdEVsZW1lbnQgKiBl
bGVtZW50LCBndWludCBwdCwgR3N0UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24pCi0gCi0gICBydHBi
aW4gPSBzZXNzaW9uLT5iaW47Ci0gCi0tICBHU1RfREVCVUdfT0JKRUNUIChydHBiaW4sICJwYXls
b2FkIG1hcCByZXF1ZXN0ZWQgZm9yIHB0ICVkIGluIHNlc3Npb24gJWQiLCBwdCwKLSsgIEdTVF9E
RUJVR19PQkpFQ1QgKHJ0cGJpbiwgInBheWxvYWQgbWFwIHJlcXVlc3RlZCBmb3IgcHQgJXUgaW4g
c2Vzc2lvbiAldSIsIHB0LAotICAgICAgIHNlc3Npb24tPmlkKTsKLSAKLSAgIGNhcHMgPSBnZXRf
cHRfbWFwIChzZXNzaW9uLCBwdCk7Ci1AQCAtMzA5OSw3ICszMjQzLDcgQEAgc3RhdGljIHZvaWQK
LSBwYXlsb2FkX3R5cGVfY2hhbmdlIChHc3RFbGVtZW50ICogZWxlbWVudCwgZ3VpbnQgcHQsIEdz
dFJ0cEJpblNlc3Npb24gKiBzZXNzaW9uKQotIHsKLSAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlc3Np
b24tPmJpbiwKLS0gICAgICAiZW1pdGluZyBzaWduYWwgZm9yIHB0IHR5cGUgY2hhbmdlZCB0byAl
ZCBpbiBzZXNzaW9uICVkIiwgcHQsCi0rICAgICAgImVtaXRpbmcgc2lnbmFsIGZvciBwdCB0eXBl
IGNoYW5nZWQgdG8gJXUgaW4gc2Vzc2lvbiAldSIsIHB0LAotICAgICAgIHNlc3Npb24tPmlkKTsK
LSAKLSAgIGdfc2lnbmFsX2VtaXQgKHNlc3Npb24tPmJpbiwgZ3N0X3J0cF9iaW5fc2lnbmFsc1tT
SUdOQUxfUEFZTE9BRF9UWVBFX0NIQU5HRV0sCi1AQCAtMzI0NiwxNSArMzM5MCw0MiBAQCBub19z
dHJlYW06Ci0gICB9Ci0gfQotIAotLXN0YXRpYyBnYm9vbGVhbgotLWNvbXBsZXRlX3Nlc3Npb25f
c2luayAoR3N0UnRwQmluICogcnRwYmluLCBHc3RSdHBCaW5TZXNzaW9uICogc2Vzc2lvbikKLStz
dGF0aWMgdm9pZAotK3Nlc3Npb25fbWF5YmVfY3JlYXRlX2J1bmRsZV9kZW11eGVyIChHc3RSdHBC
aW5TZXNzaW9uICogc2Vzc2lvbikKLSt7Ci0rICBHc3RSdHBCaW4gKnJ0cGJpbjsKLSsKLSsgIGlm
IChzZXNzaW9uLT5idW5kbGVfZGVtdXgpCi0rICAgIHJldHVybjsKLSsKLSsgIHJ0cGJpbiA9IHNl
c3Npb24tPmJpbjsKLSsgIGlmIChnX3NpZ25hbF9oYXNfaGFuZGxlcl9wZW5kaW5nIChydHBiaW4s
Ci0rICAgICAgICAgIGdzdF9ydHBfYmluX3NpZ25hbHNbU0lHTkFMX09OX0JVTkRMRURfU1NSQ10s
IDAsIFRSVUUpKSB7Ci0rICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGJpbiwgIkFkZGluZyBhIGJ1
bmRsZSBTU1JDIGRlbXV4ZXIgdG8gc2Vzc2lvbiAldSIsCi0rICAgICAgICBzZXNzaW9uLT5pZCk7
Ci0rICAgIHNlc3Npb24tPmJ1bmRsZV9kZW11eCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAo
InJ0cHNzcmNkZW11eCIsIE5VTEwpOwotKyAgICBzZXNzaW9uLT5idW5kbGVfZGVtdXhfbmV3cGFk
X3NpZyA9IGdfc2lnbmFsX2Nvbm5lY3QgKHNlc3Npb24tPmJ1bmRsZV9kZW11eCwKLSsgICAgICAg
ICJuZXctc3NyYy1wYWQiLCAoR0NhbGxiYWNrKSBuZXdfYnVuZGxlZF9zc3JjX3BhZF9mb3VuZCwg
c2Vzc2lvbik7Ci0rCi0rICAgIGdzdF9iaW5fYWRkIChHU1RfQklOX0NBU1QgKHJ0cGJpbiksIHNl
c3Npb24tPmJ1bmRsZV9kZW11eCk7Ci0rICAgIGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9w
YXJlbnQgKHNlc3Npb24tPmJ1bmRsZV9kZW11eCk7Ci0rICB9IGVsc2UgewotKyAgICBHU1RfREVC
VUdfT0JKRUNUIChydHBiaW4sCi0rICAgICAgICAiTm8gaGFuZGxlciBmb3IgdGhlIG9uLWJ1bmRs
ZWQtc3NyYyBzaWduYWwgc28gbm8gbmVlZCBmb3IgYSBidW5kbGUgU1NSQyBkZW11eGVyIGluIHNl
c3Npb24gJXUiLAotKyAgICAgICAgc2Vzc2lvbi0+aWQpOwotKyAgfQotK30KLSsKLStzdGF0aWMg
R3N0UGFkICoKLStjb21wbGV0ZV9zZXNzaW9uX3NpbmsgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0
UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24sCi0rICAgIGdib29sZWFuIGJ1bmRsZV9kZW11eGVyX25l
ZWRlZCkKLSB7Ci0tICBnY2hhciAqZ25hbWU7Ci0gICBndWludCBzZXNzaWQgPSBzZXNzaW9uLT5p
ZDsKLSAgIEdzdFBhZCAqcmVjdl9ydHBfc2luazsKLSsgIEdzdFBhZCAqZnVubmVsX3NyYzsKLSAg
IEdzdEVsZW1lbnQgKmRlY29kZXI7Ci0tICBHc3RFbGVtZW50Q2xhc3MgKmtsYXNzOwotLSAgR3N0
UGFkVGVtcGxhdGUgKnRlbXBsOwotKwotKyAgZ19hc3NlcnQgKCFzZXNzaW9uLT5yZWN2X3J0cF9z
aW5rKTsKLSAKLSAgIC8qIGdldCByZWN2X3J0cCBwYWQgYW5kIHN0b3JlICovCi0gICBzZXNzaW9u
LT5yZWN2X3J0cF9zaW5rID0KLUBAIC0zMjY1LDYgKzM0MzYsOSBAQCBjb21wbGV0ZV9zZXNzaW9u
X3NpbmsgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24pCi0g
ICBnX3NpZ25hbF9jb25uZWN0IChzZXNzaW9uLT5yZWN2X3J0cF9zaW5rLCAibm90aWZ5OjpjYXBz
IiwKLSAgICAgICAoR0NhbGxiYWNrKSBjYXBzX2NoYW5nZWQsIHNlc3Npb24pOwotIAotKyAgaWYg
KGJ1bmRsZV9kZW11eGVyX25lZWRlZCkKLSsgICAgc2Vzc2lvbl9tYXliZV9jcmVhdGVfYnVuZGxl
X2RlbXV4ZXIgKHNlc3Npb24pOwotKwotICAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAicmVx
dWVzdGluZyBSVFAgZGVjb2RlciIpOwotICAgZGVjb2RlciA9IHNlc3Npb25fcmVxdWVzdF9lbGVt
ZW50IChzZXNzaW9uLCBTSUdOQUxfUkVRVUVTVF9SVFBfREVDT0RFUik7Ci0gICBpZiAoZGVjb2Rl
cikgewotQEAgLTMyODIsNyArMzQ1NiwxNCBAQCBjb21wbGV0ZV9zZXNzaW9uX3NpbmsgKEdzdFJ0
cEJpbiAqIHJ0cGJpbiwgR3N0UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24pCi0gICAgIGlmIChkZWNz
cmMgPT0gTlVMTCkKLSAgICAgICBnb3RvIGRlY19zcmNfZmFpbGVkOwotIAotLSAgICByZXQgPSBn
c3RfcGFkX2xpbmsgKGRlY3NyYywgc2Vzc2lvbi0+cmVjdl9ydHBfc2luayk7Ci0rICAgIGlmIChz
ZXNzaW9uLT5idW5kbGVfZGVtdXgpIHsKLSsgICAgICBHc3RQYWQgKmRlbXV4X3Npbms7Ci0rICAg
ICAgZGVtdXhfc2luayA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChzZXNzaW9uLT5idW5k
bGVfZGVtdXgsICJzaW5rIik7Ci0rICAgICAgcmV0ID0gZ3N0X3BhZF9saW5rIChkZWNzcmMsIGRl
bXV4X3NpbmspOwotKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGRlbXV4X3NpbmspOwotKyAgICB9
IGVsc2UgewotKyAgICAgIHJldCA9IGdzdF9wYWRfbGluayAoZGVjc3JjLCBzZXNzaW9uLT5yZWN2
X3J0cF9zaW5rKTsKLSsgICAgfQotICAgICBnc3Rfb2JqZWN0X3VucmVmIChkZWNzcmMpOwotIAot
ICAgICBpZiAocmV0ICE9IEdTVF9QQURfTElOS19PSykKLUBAIC0zMjkwLDgxICszNDcxLDU0IEBA
IGNvbXBsZXRlX3Nlc3Npb25fc2luayAoR3N0UnRwQmluICogcnRwYmluLCBHc3RSdHBCaW5TZXNz
aW9uICogc2Vzc2lvbikKLSAKLSAgIH0gZWxzZSB7Ci0gICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0
cGJpbiwgIm5vIFJUUCBkZWNvZGVyIGdpdmVuIik7Ci0tICAgIHJlY3ZfcnRwX3NpbmsgPSBnc3Rf
b2JqZWN0X3JlZiAoc2Vzc2lvbi0+cmVjdl9ydHBfc2luayk7Ci0rICAgIGlmIChzZXNzaW9uLT5i
dW5kbGVfZGVtdXgpIHsKLSsgICAgICByZWN2X3J0cF9zaW5rID0KLSsgICAgICAgICAgZ3N0X2Vs
ZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHNlc3Npb24tPmJ1bmRsZV9kZW11eCwgInNpbmsiKTsKLSsg
ICAgfSBlbHNlIHsKLSsgICAgICByZWN2X3J0cF9zaW5rID0KLSsgICAgICAgICAgZ3N0X2VsZW1l
bnRfZ2V0X3JlcXVlc3RfcGFkIChzZXNzaW9uLT5ydHBfZnVubmVsLCAic2lua18ldSIpOwotKyAg
ICB9Ci0gICB9Ci0gCi0tICBHU1RfREVCVUdfT0JKRUNUIChydHBiaW4sICJnaG9zdGluZyBzZXNz
aW9uIHNpbmsgcGFkIik7Ci0tICBrbGFzcyA9IEdTVF9FTEVNRU5UX0dFVF9DTEFTUyAocnRwYmlu
KTsKLS0gIGduYW1lID0gZ19zdHJkdXBfcHJpbnRmICgicmVjdl9ydHBfc2lua18ldSIsIHNlc3Np
ZCk7Ci0tICB0ZW1wbCA9IGdzdF9lbGVtZW50X2NsYXNzX2dldF9wYWRfdGVtcGxhdGUgKGtsYXNz
LCAicmVjdl9ydHBfc2lua18ldSIpOwotLSAgc2Vzc2lvbi0+cmVjdl9ydHBfc2lua19naG9zdCA9
Ci0tICAgICAgZ3N0X2dob3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZSAoZ25hbWUsIHJlY3ZfcnRw
X3NpbmssIHRlbXBsKTsKLS0gIGdzdF9vYmplY3RfdW5yZWYgKHJlY3ZfcnRwX3NpbmspOwotLSAg
Z3N0X3BhZF9zZXRfYWN0aXZlIChzZXNzaW9uLT5yZWN2X3J0cF9zaW5rX2dob3N0LCBUUlVFKTsK
LS0gIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UX0NBU1QgKHJ0cGJpbiksIHNlc3Np
b24tPnJlY3ZfcnRwX3NpbmtfZ2hvc3QpOwotLSAgZ19mcmVlIChnbmFtZSk7Ci0rICBmdW5uZWxf
c3JjID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHNlc3Npb24tPnJ0cF9mdW5uZWwsICJz
cmMiKTsKLSsgIGdzdF9wYWRfbGluayAoZnVubmVsX3NyYywgc2Vzc2lvbi0+cmVjdl9ydHBfc2lu
ayk7Ci0rICBnc3Rfb2JqZWN0X3VucmVmIChmdW5uZWxfc3JjKTsKLSAKLS0gIHJldHVybiBUUlVF
OwotKyAgcmV0dXJuIHJlY3ZfcnRwX3Npbms7Ci0gCi0gICAvKiBFUlJPUlMgKi8KLSBwYWRfZmFp
bGVkOgotICAgewotICAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgc2Vzc2lv
biByZWN2X3J0cF9zaW5rIHBhZCIpOwotLSAgICByZXR1cm4gRkFMU0U7Ci0rICAgIHJldHVybiBO
VUxMOwotICAgfQotIGRlY19zaW5rX2ZhaWxlZDoKLSAgIHsKLS0gICAgZ193YXJuaW5nICgicnRw
YmluOiBmYWlsZWQgdG8gZ2V0IGRlY29kZXIgc2luayBwYWQgZm9yIHNlc3Npb24gJWQiLCBzZXNz
aWQpOwotLSAgICByZXR1cm4gRkFMU0U7Ci0rICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVk
IHRvIGdldCBkZWNvZGVyIHNpbmsgcGFkIGZvciBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKLSsgICAg
cmV0dXJuIE5VTEw7Ci0gICB9Ci0gZGVjX3NyY19mYWlsZWQ6Ci0gICB7Ci0tICAgIGdfd2Fybmlu
ZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBkZWNvZGVyIHNyYyBwYWQgZm9yIHNlc3Npb24gJWQi
LCBzZXNzaWQpOwotKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgZGVjb2Rl
ciBzcmMgcGFkIGZvciBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKLSAgICAgZ3N0X29iamVjdF91bnJl
ZiAocmVjdl9ydHBfc2luayk7Ci0tICAgIHJldHVybiBGQUxTRTsKLSsgICAgcmV0dXJuIE5VTEw7
Ci0gICB9Ci0gZGVjX2xpbmtfZmFpbGVkOgotICAgewotLSAgICBnX3dhcm5pbmcgKCJydHBiaW46
IGZhaWxlZCB0byBsaW5rIHJ0cCBkZWNvZGVyIGZvciBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLSsg
ICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gbGluayBydHAgZGVjb2RlciBmb3Igc2Vz
c2lvbiAldSIsIHNlc3NpZCk7Ci0gICAgIGdzdF9vYmplY3RfdW5yZWYgKHJlY3ZfcnRwX3Npbmsp
OwotLSAgICByZXR1cm4gRkFMU0U7Ci0rICAgIHJldHVybiBOVUxMOwotICAgfQotIH0KLSAKLS0v
KiBDcmVhdGUgYSBwYWQgZm9yIHJlY2VpdmluZyBSVFAgZm9yIHRoZSBzZXNzaW9uIGluIEBuYW1l
LiBNdXN0IGJlIGNhbGxlZCB3aXRoCi0tICogUlRQX0JJTl9MT0NLLgotLSAqLwotLXN0YXRpYyBH
c3RQYWQgKgotLWNyZWF0ZV9yZWN2X3J0cCAoR3N0UnRwQmluICogcnRwYmluLCBHc3RQYWRUZW1w
bGF0ZSAqIHRlbXBsLCBjb25zdCBnY2hhciAqIG5hbWUpCi0rc3RhdGljIHZvaWQKLStjb21wbGV0
ZV9zZXNzaW9uX3JlY2VpdmVyIChHc3RSdHBCaW4gKiBydHBiaW4sIEdzdFJ0cEJpblNlc3Npb24g
KiBzZXNzaW9uLAotKyAgICBndWludCBzZXNzaWQpCi0gewotLSAgZ3VpbnQgc2Vzc2lkOwotICAg
R3N0RWxlbWVudCAqYXV4OwotICAgR3N0UGFkICpyZWN2X3J0cF9zcmM7Ci0tICBHc3RSdHBCaW5T
ZXNzaW9uICpzZXNzaW9uOwotLQotLSAgLyogZmlyc3QgZ2V0IHRoZSBzZXNzaW9uIG51bWJlciAq
LwotLSAgaWYgKG5hbWUgPT0gTlVMTCB8fCBzc2NhbmYgKG5hbWUsICJyZWN2X3J0cF9zaW5rXyV1
IiwgJnNlc3NpZCkgIT0gMSkKLS0gICAgZ290byBub19uYW1lOwotLQotLSAgR1NUX0RFQlVHX09C
SkVDVCAocnRwYmluLCAiZmluZGluZyBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLSAKLS0gIC8qIGdl
dCBvciBjcmVhdGUgc2Vzc2lvbiAqLwotLSAgc2Vzc2lvbiA9IGZpbmRfc2Vzc2lvbl9ieV9pZCAo
cnRwYmluLCBzZXNzaWQpOwotLSAgaWYgKCFzZXNzaW9uKSB7Ci0tICAgIEdTVF9ERUJVR19PQkpF
Q1QgKHJ0cGJpbiwgImNyZWF0aW5nIHNlc3Npb24gJWQiLCBzZXNzaWQpOwotLSAgICAvKiBjcmVh
dGUgc2Vzc2lvbiBub3cgKi8KLS0gICAgc2Vzc2lvbiA9IGNyZWF0ZV9zZXNzaW9uIChydHBiaW4s
IHNlc3NpZCk7Ci0tICAgIGlmIChzZXNzaW9uID09IE5VTEwpCi0tICAgICAgZ290byBjcmVhdGVf
ZXJyb3I7Ci0tICB9Ci0tCi0tICAvKiBjaGVjayBpZiBwYWQgd2FzIHJlcXVlc3RlZCAqLwotLSAg
aWYgKHNlc3Npb24tPnJlY3ZfcnRwX3NpbmtfZ2hvc3QgIT0gTlVMTCkKLS0gICAgcmV0dXJuIHNl
c3Npb24tPnJlY3ZfcnRwX3NpbmtfZ2hvc3Q7Ci0tCi0tICAvKiBzZXR1cCB0aGUgc2Vzc2lvbiBz
aW5rIHBhZCAqLwotLSAgaWYgKCFjb21wbGV0ZV9zZXNzaW9uX3NpbmsgKHJ0cGJpbiwgc2Vzc2lv
bikpCi0tICAgIGdvdG8gc2Vzc2lvbl9zaW5rX2ZhaWxlZDsKLSsgIGdfYXNzZXJ0ICghc2Vzc2lv
bi0+cmVjdl9ydHBfc3JjKTsKLSAKLSAgIHNlc3Npb24tPnJlY3ZfcnRwX3NyYyA9Ci0gICAgICAg
Z3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHNlc3Npb24tPnNlc3Npb24sICJyZWN2X3J0cF9z
cmMiKTsKLUBAIC0zMzgxLDcgKzM1MzUsNyBAQCBjcmVhdGVfcmVjdl9ydHAgKEdzdFJ0cEJpbiAq
IHJ0cGJpbiwgR3N0UGFkVGVtcGxhdGUgKiB0ZW1wbCwgY29uc3QgZ2NoYXIgKiBuYW1lKQotIAot
ICAgICBHU1RfREVCVUdfT0JKRUNUIChydHBiaW4sICJsaW5raW5nIEFVWCByZWNlaXZlciIpOwot
IAotLSAgICBwbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInNpbmtfJWQiLCBzZXNzaWQpOwotKyAg
ICBwbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInNpbmtfJXUiLCBzZXNzaWQpOwotICAgICBhdXhz
aW5rID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKGF1eCwgcG5hbWUpOwotICAgICBnX2Zy
ZWUgKHBuYW1lKTsKLSAgICAgaWYgKGF1eHNpbmsgPT0gTlVMTCkKLUBAIC0zMzk0LDcgKzM1NDgs
NyBAQCBjcmVhdGVfcmVjdl9ydHAgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0UGFkVGVtcGxhdGUg
KiB0ZW1wbCwgY29uc3QgZ2NoYXIgKiBuYW1lKQotIAotICAgICAvKiB0aGlzIGNhbiBiZSBOVUxM
IHdoZW4gdGhpcyBBVVggZWxlbWVudCBpcyBub3QgdG8gYmUgbGlua2VkIHRvCi0gICAgICAqIGFu
IFNTUkMgZGVtdXhlciAqLwotLSAgICBwbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInNyY18lZCIs
IHNlc3NpZCk7Ci0rICAgIHBuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgic3JjXyV1Iiwgc2Vzc2lk
KTsKLSAgICAgcmVjdl9ydHBfc3JjID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKGF1eCwg
cG5hbWUpOwotICAgICBnX2ZyZWUgKHBuYW1lKTsKLSAgIH0gZWxzZSB7Ci1AQCAtMzQwOCw4ICsz
NTYyLDggQEAgY3JlYXRlX3JlY3ZfcnRwIChHc3RSdHBCaW4gKiBydHBiaW4sIEdzdFBhZFRlbXBs
YXRlICogdGVtcGwsIGNvbnN0IGdjaGFyICogbmFtZSkKLSAgICAgc2lua2RwYWQgPSBnc3RfZWxl
bWVudF9nZXRfc3RhdGljX3BhZCAoc2Vzc2lvbi0+ZGVtdXgsICJzaW5rIik7Ci0gICAgIEdTVF9E
RUJVR19PQkpFQ1QgKHJ0cGJpbiwgImxpbmtpbmcgZGVtdXhlciBSVFAgc2luayBwYWQiKTsKLSAg
ICAgZ3N0X3BhZF9saW5rX2Z1bGwgKHJlY3ZfcnRwX3NyYywgc2lua2RwYWQsIEdTVF9QQURfTElO
S19DSEVDS19OT1RISU5HKTsKLS0gICAgZ3N0X29iamVjdF91bnJlZiAocmVjdl9ydHBfc3JjKTsK
LSAgICAgZ3N0X29iamVjdF91bnJlZiAoc2lua2RwYWQpOwotKyAgICBnc3Rfb2JqZWN0X3VucmVm
IChyZWN2X3J0cF9zcmMpOwotIAotICAgICAvKiBjb25uZWN0IHRvIHRoZSBuZXctc3NyYy1wYWQg
c2lnbmFsIG9mIHRoZSBTU1JDIGRlbXV4ZXIgKi8KLSAgICAgc2Vzc2lvbi0+ZGVtdXhfbmV3cGFk
X3NpZyA9IGdfc2lnbmFsX2Nvbm5lY3QgKHNlc3Npb24tPmRlbXV4LAotQEAgLTM0MTcsNiArMzU3
MSw3MSBAQCBjcmVhdGVfcmVjdl9ydHAgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0UGFkVGVtcGxh
dGUgKiB0ZW1wbCwgY29uc3QgZ2NoYXIgKiBuYW1lKQotICAgICBzZXNzaW9uLT5kZW11eF9wYWRy
ZW1vdmVkX3NpZyA9IGdfc2lnbmFsX2Nvbm5lY3QgKHNlc3Npb24tPmRlbXV4LAotICAgICAgICAg
InJlbW92ZWQtc3NyYy1wYWQiLCAoR0NhbGxiYWNrKSBzc3JjX2RlbXV4X3BhZF9yZW1vdmVkLCBz
ZXNzaW9uKTsKLSAgIH0KLSsKLSsgIHJldHVybjsKLSsKLStwYWRfZmFpbGVkOgotKyAgewotKyAg
ICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgc2Vzc2lvbiByZWN2X3J0cF9zcmMg
cGFkIik7Ci0rICAgIHJldHVybjsKLSsgIH0KLSthdXhfc2lua19mYWlsZWQ6Ci0rICB7Ci0rICAg
IGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBBVVggc2luayBwYWQgZm9yIHNlc3Np
b24gJXUiLCBzZXNzaWQpOwotKyAgICByZXR1cm47Ci0rICB9Ci0rYXV4X2xpbmtfZmFpbGVkOgot
KyAgewotKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBsaW5rIEFVWCBwYWQgdG8g
c2Vzc2lvbiAldSIsIHNlc3NpZCk7Ci0rICAgIHJldHVybjsKLSsgIH0KLSt9Ci0rCi0rLyogQ3Jl
YXRlIGEgcGFkIGZvciByZWNlaXZpbmcgUlRQIGZvciB0aGUgc2Vzc2lvbiBpbiBAbmFtZS4gTXVz
dCBiZSBjYWxsZWQgd2l0aAotKyAqIFJUUF9CSU5fTE9DSy4KLSsgKi8KLStzdGF0aWMgR3N0UGFk
ICoKLStjcmVhdGVfcmVjdl9ydHAgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0UGFkVGVtcGxhdGUg
KiB0ZW1wbCwgY29uc3QgZ2NoYXIgKiBuYW1lKQotK3sKLSsgIGd1aW50IHNlc3NpZDsKLSsgIEdz
dFJ0cEJpblNlc3Npb24gKnNlc3Npb247Ci0rICBHc3RQYWQgKnJlY3ZfcnRwX3Npbms7Ci0rCi0r
ICAvKiBmaXJzdCBnZXQgdGhlIHNlc3Npb24gbnVtYmVyICovCi0rICBpZiAobmFtZSA9PSBOVUxM
IHx8IHNzY2FuZiAobmFtZSwgInJlY3ZfcnRwX3NpbmtfJXUiLCAmc2Vzc2lkKSAhPSAxKQotKyAg
ICBnb3RvIG5vX25hbWU7Ci0rCi0rICBHU1RfREVCVUdfT0JKRUNUIChydHBiaW4sICJmaW5kaW5n
IHNlc3Npb24gJXUiLCBzZXNzaWQpOwotKwotKyAgLyogZ2V0IG9yIGNyZWF0ZSBzZXNzaW9uICov
Ci0rICBzZXNzaW9uID0gZmluZF9zZXNzaW9uX2J5X2lkIChydHBiaW4sIHNlc3NpZCk7Ci0rICBp
ZiAoIXNlc3Npb24pIHsKLSsgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAiY3JlYXRpbmcg
c2Vzc2lvbiAldSIsIHNlc3NpZCk7Ci0rICAgIC8qIGNyZWF0ZSBzZXNzaW9uIG5vdyAqLwotKyAg
ICBzZXNzaW9uID0gY3JlYXRlX3Nlc3Npb24gKHJ0cGJpbiwgc2Vzc2lkKTsKLSsgICAgaWYgKHNl
c3Npb24gPT0gTlVMTCkKLSsgICAgICBnb3RvIGNyZWF0ZV9lcnJvcjsKLSsgIH0KLSsKLSsgIC8q
IGNoZWNrIGlmIHBhZCB3YXMgcmVxdWVzdGVkICovCi0rICBpZiAoc2Vzc2lvbi0+cmVjdl9ydHBf
c2lua19naG9zdCAhPSBOVUxMKQotKyAgICByZXR1cm4gc2Vzc2lvbi0+cmVjdl9ydHBfc2lua19n
aG9zdDsKLSsKLSsgIC8qIHNldHVwIHRoZSBzZXNzaW9uIHNpbmsgcGFkICovCi0rICByZWN2X3J0
cF9zaW5rID0gY29tcGxldGVfc2Vzc2lvbl9zaW5rIChydHBiaW4sIHNlc3Npb24sIFRSVUUpOwot
KyAgaWYgKCFyZWN2X3J0cF9zaW5rKQotKyAgICBnb3RvIHNlc3Npb25fc2lua19mYWlsZWQ7Ci0r
Ci0rCi0rICBHU1RfREVCVUdfT0JKRUNUIChydHBiaW4sICJnaG9zdGluZyBzZXNzaW9uIHNpbmsg
cGFkIik7Ci0rICBzZXNzaW9uLT5yZWN2X3J0cF9zaW5rX2dob3N0ID0KLSsgICAgICBnc3RfZ2hv
c3RfcGFkX25ld19mcm9tX3RlbXBsYXRlIChuYW1lLCByZWN2X3J0cF9zaW5rLCB0ZW1wbCk7Ci0r
ICBnc3Rfb2JqZWN0X3VucmVmIChyZWN2X3J0cF9zaW5rKTsKLSsgIGdzdF9wYWRfc2V0X2FjdGl2
ZSAoc2Vzc2lvbi0+cmVjdl9ydHBfc2lua19naG9zdCwgVFJVRSk7Ci0rICBnc3RfZWxlbWVudF9h
ZGRfcGFkIChHU1RfRUxFTUVOVF9DQVNUIChydHBiaW4pLCBzZXNzaW9uLT5yZWN2X3J0cF9zaW5r
X2dob3N0KTsKLSsKLSsgIGNvbXBsZXRlX3Nlc3Npb25fcmVjZWl2ZXIgKHJ0cGJpbiwgc2Vzc2lv
biwgc2Vzc2lkKTsKLSsKLSAgIHJldHVybiBzZXNzaW9uLT5yZWN2X3J0cF9zaW5rX2dob3N0Owot
IAotICAgLyogRVJST1JTICovCi1AQCAtMzQzNSwyMSArMzY1NCw2IEBAIHNlc3Npb25fc2lua19m
YWlsZWQ6Ci0gICAgIC8qIHdhcm5pbmcgYWxyZWFkeSBkb25lICovCi0gICAgIHJldHVybiBOVUxM
OwotICAgfQotLXBhZF9mYWlsZWQ6Ci0tICB7Ci0tICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFp
bGVkIHRvIGdldCBzZXNzaW9uIHJlY3ZfcnRwX3NyYyBwYWQiKTsKLS0gICAgcmV0dXJuIE5VTEw7
Ci0tICB9Ci0tYXV4X3NpbmtfZmFpbGVkOgotLSAgewotLSAgICBnX3dhcm5pbmcgKCJydHBiaW46
IGZhaWxlZCB0byBnZXQgQVVYIHNpbmsgcGFkIGZvciBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLS0g
ICAgcmV0dXJuIE5VTEw7Ci0tICB9Ci0tYXV4X2xpbmtfZmFpbGVkOgotLSAgewotLSAgICBnX3dh
cm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBsaW5rIEFVWCBwYWQgdG8gc2Vzc2lvbiAlZCIsIHNl
c3NpZCk7Ci0tICAgIHJldHVybiBOVUxMOwotLSAgfQotIH0KLSAKLSBzdGF0aWMgdm9pZAotQEAg
LTM0NjMsNiArMzY2NywxMSBAQCByZW1vdmVfcmVjdl9ydHAgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwg
R3N0UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24pCi0gICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29u
bmVjdCAoc2Vzc2lvbi0+ZGVtdXgsIHNlc3Npb24tPmRlbXV4X3BhZHJlbW92ZWRfc2lnKTsKLSAg
ICAgc2Vzc2lvbi0+ZGVtdXhfcGFkcmVtb3ZlZF9zaWcgPSAwOwotICAgfQotKyAgaWYgKHNlc3Np
b24tPmJ1bmRsZV9kZW11eF9uZXdwYWRfc2lnKSB7Ci0rICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlz
Y29ubmVjdCAoc2Vzc2lvbi0+YnVuZGxlX2RlbXV4LAotKyAgICAgICAgc2Vzc2lvbi0+YnVuZGxl
X2RlbXV4X25ld3BhZF9zaWcpOwotKyAgICBzZXNzaW9uLT5idW5kbGVfZGVtdXhfbmV3cGFkX3Np
ZyA9IDA7Ci0rICB9Ci0gICBpZiAoc2Vzc2lvbi0+cmVjdl9ydHBfc3JjKSB7Ci0gICAgIGdzdF9v
YmplY3RfdW5yZWYgKHNlc3Npb24tPnJlY3ZfcnRwX3NyYyk7Ci0gICAgIHNlc3Npb24tPnJlY3Zf
cnRwX3NyYyA9IE5VTEw7Ci1AQCAtMzQ4MCwzNyArMzY4OSwxNCBAQCByZW1vdmVfcmVjdl9ydHAg
KEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24pCi0gICB9Ci0g
fQotIAotLS8qIENyZWF0ZSBhIHBhZCBmb3IgcmVjZWl2aW5nIFJUQ1AgZm9yIHRoZSBzZXNzaW9u
IGluIEBuYW1lLiBNdXN0IGJlIGNhbGxlZCB3aXRoCi0tICogUlRQX0JJTl9MT0NLLgotLSAqLwot
IHN0YXRpYyBHc3RQYWQgKgotLWNyZWF0ZV9yZWN2X3J0Y3AgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwg
R3N0UGFkVGVtcGxhdGUgKiB0ZW1wbCwKLS0gICAgY29uc3QgZ2NoYXIgKiBuYW1lKQotK2NvbXBs
ZXRlX3Nlc3Npb25fcnRjcCAoR3N0UnRwQmluICogcnRwYmluLCBHc3RSdHBCaW5TZXNzaW9uICog
c2Vzc2lvbiwKLSsgICAgZ3VpbnQgc2Vzc2lkLCBnYm9vbGVhbiBidW5kbGVfZGVtdXhlcl9uZWVk
ZWQpCi0gewotLSAgZ3VpbnQgc2Vzc2lkOwotICAgR3N0RWxlbWVudCAqZGVjb2RlcjsKLS0gIEdz
dFJ0cEJpblNlc3Npb24gKnNlc3Npb247Ci0tICBHc3RQYWQgKnNpbmtkcGFkLCAqZGVjc2luazsK
LS0KLS0gIC8qIGZpcnN0IGdldCB0aGUgc2Vzc2lvbiBudW1iZXIgKi8KLS0gIGlmIChuYW1lID09
IE5VTEwgfHwgc3NjYW5mIChuYW1lLCAicmVjdl9ydGNwX3NpbmtfJXUiLCAmc2Vzc2lkKSAhPSAx
KQotLSAgICBnb3RvIG5vX25hbWU7Ci0tCi0tICBHU1RfREVCVUdfT0JKRUNUIChydHBiaW4sICJm
aW5kaW5nIHNlc3Npb24gJWQiLCBzZXNzaWQpOwotLQotLSAgLyogZ2V0IG9yIGNyZWF0ZSB0aGUg
c2Vzc2lvbiAqLwotLSAgc2Vzc2lvbiA9IGZpbmRfc2Vzc2lvbl9ieV9pZCAocnRwYmluLCBzZXNz
aWQpOwotLSAgaWYgKCFzZXNzaW9uKSB7Ci0tICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGJpbiwg
ImNyZWF0aW5nIHNlc3Npb24gJWQiLCBzZXNzaWQpOwotLSAgICAvKiBjcmVhdGUgc2Vzc2lvbiBu
b3cgKi8KLS0gICAgc2Vzc2lvbiA9IGNyZWF0ZV9zZXNzaW9uIChydHBiaW4sIHNlc3NpZCk7Ci0t
ICAgIGlmIChzZXNzaW9uID09IE5VTEwpCi0tICAgICAgZ290byBjcmVhdGVfZXJyb3I7Ci0tICB9
Ci0tCi0tICAvKiBjaGVjayBpZiBwYWQgd2FzIHJlcXVlc3RlZCAqLwotLSAgaWYgKHNlc3Npb24t
PnJlY3ZfcnRjcF9zaW5rX2dob3N0ICE9IE5VTEwpCi0tICAgIHJldHVybiBzZXNzaW9uLT5yZWN2
X3J0Y3Bfc2lua19naG9zdDsKLSsgIEdzdFBhZCAqc2lua2RwYWQ7Ci0rICBHc3RQYWQgKmRlY3Np
bmsgPSBOVUxMOwotKyAgR3N0UGFkICpmdW5uZWxfc3JjOwotIAotICAgLyogZ2V0IHJlY3ZfcnRw
IHBhZCBhbmQgc3RvcmUgKi8KLSAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGJpbiwgImdldHRpbmcg
UlRDUCBzaW5rIHBhZCIpOwotQEAgLTM1MTksNiArMzcwNSw5IEBAIGNyZWF0ZV9yZWN2X3J0Y3Ag
KEdzdFJ0cEJpbiAqIHJ0cGJpbiwgR3N0UGFkVGVtcGxhdGUgKiB0ZW1wbCwKLSAgIGlmIChzZXNz
aW9uLT5yZWN2X3J0Y3Bfc2luayA9PSBOVUxMKQotICAgICBnb3RvIHBhZF9mYWlsZWQ7Ci0gCi0r
ICBpZiAoYnVuZGxlX2RlbXV4ZXJfbmVlZGVkKQotKyAgICBzZXNzaW9uX21heWJlX2NyZWF0ZV9i
dW5kbGVfZGVtdXhlciAoc2Vzc2lvbik7Ci0rCi0gICBHU1RfREVCVUdfT0JKRUNUIChydHBiaW4s
ICJnZXR0aW5nIFJUQ1AgZGVjb2RlciIpOwotICAgZGVjb2RlciA9IHNlc3Npb25fcmVxdWVzdF9l
bGVtZW50IChzZXNzaW9uLCBTSUdOQUxfUkVRVUVTVF9SVENQX0RFQ09ERVIpOwotICAgaWYgKGRl
Y29kZXIpIHsKLUBAIC0zNTM1LDE0ICszNzI0LDI2IEBAIGNyZWF0ZV9yZWN2X3J0Y3AgKEdzdFJ0
cEJpbiAqIHJ0cGJpbiwgR3N0UGFkVGVtcGxhdGUgKiB0ZW1wbCwKLSAgICAgaWYgKGRlY3NyYyA9
PSBOVUxMKQotICAgICAgIGdvdG8gZGVjX3NyY19mYWlsZWQ7Ci0gCi0tICAgIHJldCA9IGdzdF9w
YWRfbGluayAoZGVjc3JjLCBzZXNzaW9uLT5yZWN2X3J0Y3Bfc2luayk7Ci0rICAgIGlmIChzZXNz
aW9uLT5idW5kbGVfZGVtdXgpIHsKLSsgICAgICBHc3RQYWQgKmRlbXV4X3Npbms7Ci0rICAgICAg
ZGVtdXhfc2luayA9Ci0rICAgICAgICAgIGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChzZXNz
aW9uLT5idW5kbGVfZGVtdXgsICJydGNwX3NpbmsiKTsKLSsgICAgICByZXQgPSBnc3RfcGFkX2xp
bmsgKGRlY3NyYywgZGVtdXhfc2luayk7Ci0rICAgICAgZ3N0X29iamVjdF91bnJlZiAoZGVtdXhf
c2luayk7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgcmV0ID0gZ3N0X3BhZF9saW5rIChkZWNzcmMs
IHNlc3Npb24tPnJlY3ZfcnRjcF9zaW5rKTsKLSsgICAgfQotICAgICBnc3Rfb2JqZWN0X3VucmVm
IChkZWNzcmMpOwotIAotICAgICBpZiAocmV0ICE9IEdTVF9QQURfTElOS19PSykKLSAgICAgICBn
b3RvIGRlY19saW5rX2ZhaWxlZDsKLSAgIH0gZWxzZSB7Ci0gICAgIEdTVF9ERUJVR19PQkpFQ1Qg
KHJ0cGJpbiwgIm5vIFJUQ1AgZGVjb2RlciBnaXZlbiIpOwotLSAgICBkZWNzaW5rID0gZ3N0X29i
amVjdF9yZWYgKHNlc3Npb24tPnJlY3ZfcnRjcF9zaW5rKTsKLSsgICAgaWYgKHNlc3Npb24tPmJ1
bmRsZV9kZW11eCkgewotKyAgICAgIGRlY3NpbmsgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3Bh
ZCAoc2Vzc2lvbi0+YnVuZGxlX2RlbXV4LCAicnRjcF9zaW5rIik7Ci0rICAgIH0gZWxzZSB7Ci0r
ICAgICAgZGVjc2luayA9IGdzdF9lbGVtZW50X2dldF9yZXF1ZXN0X3BhZCAoc2Vzc2lvbi0+cnRj
cF9mdW5uZWwsICJzaW5rXyV1Iik7Ci0rICAgIH0KLSAgIH0KLSAKLSAgIC8qIGdldCBzcmNwYWQs
IGxpbmsgdG8gU1NSQ0RlbXV4ICovCi1AQCAtMzU1NiwyNiArMzc1NywxMiBAQCBjcmVhdGVfcmVj
dl9ydGNwIChHc3RSdHBCaW4gKiBydHBiaW4sIEdzdFBhZFRlbXBsYXRlICogdGVtcGwsCi0gICBn
c3RfcGFkX2xpbmtfZnVsbCAoc2Vzc2lvbi0+c3luY19zcmMsIHNpbmtkcGFkLCBHU1RfUEFEX0xJ
TktfQ0hFQ0tfTk9USElORyk7Ci0gICBnc3Rfb2JqZWN0X3VucmVmIChzaW5rZHBhZCk7Ci0gCi0t
ICBzZXNzaW9uLT5yZWN2X3J0Y3Bfc2lua19naG9zdCA9Ci0tICAgICAgZ3N0X2dob3N0X3BhZF9u
ZXdfZnJvbV90ZW1wbGF0ZSAobmFtZSwgZGVjc2luaywgdGVtcGwpOwotLSAgZ3N0X29iamVjdF91
bnJlZiAoZGVjc2luayk7Ci0tICBnc3RfcGFkX3NldF9hY3RpdmUgKHNlc3Npb24tPnJlY3ZfcnRj
cF9zaW5rX2dob3N0LCBUUlVFKTsKLS0gIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5U
X0NBU1QgKHJ0cGJpbiksCi0tICAgICAgc2Vzc2lvbi0+cmVjdl9ydGNwX3NpbmtfZ2hvc3QpOwot
KyAgZnVubmVsX3NyYyA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChzZXNzaW9uLT5ydGNw
X2Z1bm5lbCwgInNyYyIpOwotKyAgZ3N0X3BhZF9saW5rIChmdW5uZWxfc3JjLCBzZXNzaW9uLT5y
ZWN2X3J0Y3Bfc2luayk7Ci0rICBnc3Rfb2JqZWN0X3VucmVmIChmdW5uZWxfc3JjKTsKLSAKLS0g
IHJldHVybiBzZXNzaW9uLT5yZWN2X3J0Y3Bfc2lua19naG9zdDsKLSsgIHJldHVybiBkZWNzaW5r
OwotIAotLSAgLyogRVJST1JTICovCi0tbm9fbmFtZToKLS0gIHsKLS0gICAgZ193YXJuaW5nICgi
cnRwYmluOiBpbnZhbGlkIG5hbWUgZ2l2ZW4iKTsKLS0gICAgcmV0dXJuIE5VTEw7Ci0tICB9Ci0t
Y3JlYXRlX2Vycm9yOgotLSAgewotLSAgICAvKiBjcmVhdGVfc2Vzc2lvbiBhbHJlYWR5IHdhcm5l
ZCAqLwotLSAgICByZXR1cm4gTlVMTDsKLS0gIH0KLSBwYWRfZmFpbGVkOgotICAgewotICAgICBn
X3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgc2Vzc2lvbiBydGNwX3NpbmsgcGFkIik7
Ci1AQCAtMzU4MywyNSArMzc3MCw4MiBAQCBwYWRfZmFpbGVkOgotICAgfQotIGRlY19zaW5rX2Zh
aWxlZDoKLSAgIHsKLS0gICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IGRlY29k
ZXIgc2luayBwYWQgZm9yIHNlc3Npb24gJWQiLCBzZXNzaWQpOwotKyAgICBnX3dhcm5pbmcgKCJy
dHBiaW46IGZhaWxlZCB0byBnZXQgZGVjb2RlciBzaW5rIHBhZCBmb3Igc2Vzc2lvbiAldSIsIHNl
c3NpZCk7Ci0gICAgIHJldHVybiBOVUxMOwotICAgfQotIGRlY19zcmNfZmFpbGVkOgotICAgewot
LSAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgZGVjb2RlciBzcmMgcGFkIGZv
ciBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLS0gICAgZ3N0X29iamVjdF91bnJlZiAoZGVjc2luayk7
Ci0tICAgIHJldHVybiBOVUxMOwotKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBn
ZXQgZGVjb2RlciBzcmMgcGFkIGZvciBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKLSsgICAgZ290byBj
bGVhbnVwOwotICAgfQotIGRlY19saW5rX2ZhaWxlZDoKLSAgIHsKLS0gICAgZ193YXJuaW5nICgi
cnRwYmluOiBmYWlsZWQgdG8gbGluayBydGNwIGRlY29kZXIgZm9yIHNlc3Npb24gJWQiLCBzZXNz
aWQpOwotLSAgICBnc3Rfb2JqZWN0X3VucmVmIChkZWNzaW5rKTsKLS0gICAgcmV0dXJuIE5VTEw7
Ci0rICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGxpbmsgcnRjcCBkZWNvZGVyIGZv
ciBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKLSsgICAgZ290byBjbGVhbnVwOwotICAgfQotIHNyY19w
YWRfZmFpbGVkOgotICAgewotICAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQg
c2Vzc2lvbiBzeW5jX3NyYyBwYWQiKTsKLS0gICAgZ3N0X29iamVjdF91bnJlZiAoZGVjc2luayk7
Ci0rICB9Ci0rCi0rY2xlYW51cDoKLSsgIGdzdF9vYmplY3RfdW5yZWYgKGRlY3NpbmspOwotKyAg
cmV0dXJuIE5VTEw7Ci0rfQotKwotKy8qIENyZWF0ZSBhIHBhZCBmb3IgcmVjZWl2aW5nIFJUQ1Ag
Zm9yIHRoZSBzZXNzaW9uIGluIEBuYW1lLiBNdXN0IGJlIGNhbGxlZCB3aXRoCi0rICogUlRQX0JJ
Tl9MT0NLLgotKyAqLwotK3N0YXRpYyBHc3RQYWQgKgotK2NyZWF0ZV9yZWN2X3J0Y3AgKEdzdFJ0
cEJpbiAqIHJ0cGJpbiwgR3N0UGFkVGVtcGxhdGUgKiB0ZW1wbCwKLSsgICAgY29uc3QgZ2NoYXIg
KiBuYW1lKQotK3sKLSsgIGd1aW50IHNlc3NpZDsKLSsgIEdzdFJ0cEJpblNlc3Npb24gKnNlc3Np
b247Ci0rICBHc3RQYWQgKmRlY3NpbmsgPSBOVUxMOwotKwotKyAgLyogZmlyc3QgZ2V0IHRoZSBz
ZXNzaW9uIG51bWJlciAqLwotKyAgaWYgKG5hbWUgPT0gTlVMTCB8fCBzc2NhbmYgKG5hbWUsICJy
ZWN2X3J0Y3Bfc2lua18ldSIsICZzZXNzaWQpICE9IDEpCi0rICAgIGdvdG8gbm9fbmFtZTsKLSsK
LSsgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGJpbiwgImZpbmRpbmcgc2Vzc2lvbiAldSIsIHNlc3Np
ZCk7Ci0rCi0rICAvKiBnZXQgb3IgY3JlYXRlIHRoZSBzZXNzaW9uICovCi0rICBzZXNzaW9uID0g
ZmluZF9zZXNzaW9uX2J5X2lkIChydHBiaW4sIHNlc3NpZCk7Ci0rICBpZiAoIXNlc3Npb24pIHsK
LSsgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAiY3JlYXRpbmcgc2Vzc2lvbiAldSIsIHNl
c3NpZCk7Ci0rICAgIC8qIGNyZWF0ZSBzZXNzaW9uIG5vdyAqLwotKyAgICBzZXNzaW9uID0gY3Jl
YXRlX3Nlc3Npb24gKHJ0cGJpbiwgc2Vzc2lkKTsKLSsgICAgaWYgKHNlc3Npb24gPT0gTlVMTCkK
LSsgICAgICBnb3RvIGNyZWF0ZV9lcnJvcjsKLSsgIH0KLSsKLSsgIC8qIGNoZWNrIGlmIHBhZCB3
YXMgcmVxdWVzdGVkICovCi0rICBpZiAoc2Vzc2lvbi0+cmVjdl9ydGNwX3NpbmtfZ2hvc3QgIT0g
TlVMTCkKLSsgICAgcmV0dXJuIHNlc3Npb24tPnJlY3ZfcnRjcF9zaW5rX2dob3N0OwotKwotKyAg
ZGVjc2luayA9IGNvbXBsZXRlX3Nlc3Npb25fcnRjcCAocnRwYmluLCBzZXNzaW9uLCBzZXNzaWQs
IFRSVUUpOwotKyAgaWYgKCFkZWNzaW5rKQotKyAgICBnb3RvIGNyZWF0ZV9lcnJvcjsKLSsKLSsg
IHNlc3Npb24tPnJlY3ZfcnRjcF9zaW5rX2dob3N0ID0KLSsgICAgICBnc3RfZ2hvc3RfcGFkX25l
d19mcm9tX3RlbXBsYXRlIChuYW1lLCBkZWNzaW5rLCB0ZW1wbCk7Ci0rICBnc3Rfb2JqZWN0X3Vu
cmVmIChkZWNzaW5rKTsKLSsgIGdzdF9wYWRfc2V0X2FjdGl2ZSAoc2Vzc2lvbi0+cmVjdl9ydGNw
X3NpbmtfZ2hvc3QsIFRSVUUpOwotKyAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlRf
Q0FTVCAocnRwYmluKSwKLSsgICAgICBzZXNzaW9uLT5yZWN2X3J0Y3Bfc2lua19naG9zdCk7Ci0r
Ci0rICByZXR1cm4gc2Vzc2lvbi0+cmVjdl9ydGNwX3NpbmtfZ2hvc3Q7Ci0rCi0rICAvKiBFUlJP
UlMgKi8KLStub19uYW1lOgotKyAgewotKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGludmFsaWQg
bmFtZSBnaXZlbiIpOwotKyAgICByZXR1cm4gTlVMTDsKLSsgIH0KLStjcmVhdGVfZXJyb3I6Ci0r
ICB7Ci0rICAgIC8qIGNyZWF0ZV9zZXNzaW9uIGFscmVhZHkgd2FybmVkICovCi0gICAgIHJldHVy
biBOVUxMOwotICAgfQotIH0KLUBAIC0zNjUxLDcgKzM4OTUsNyBAQCBjb21wbGV0ZV9zZXNzaW9u
X3NyYyAoR3N0UnRwQmluICogcnRwYmluLCBHc3RSdHBCaW5TZXNzaW9uICogc2Vzc2lvbikKLSAg
ICAgR3N0UGFkTGlua1JldHVybiByZXQ7Ci0gCi0gICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGJp
biwgImxpbmtpbmcgUlRQIGVuY29kZXIiKTsKLS0gICAgZW5hbWUgPSBnX3N0cmR1cF9wcmludGYg
KCJydHBfc3JjXyVkIiwgc2Vzc2lkKTsKLSsgICAgZW5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJy
dHBfc3JjXyV1Iiwgc2Vzc2lkKTsKLSAgICAgZW5jc3JjID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRp
Y19wYWQgKGVuY29kZXIsIGVuYW1lKTsKLSAgICAgZ19mcmVlIChlbmFtZSk7Ci0gCi1AQCAtMzY2
MCw3ICszOTA0LDcgQEAgY29tcGxldGVfc2Vzc2lvbl9zcmMgKEdzdFJ0cEJpbiAqIHJ0cGJpbiwg
R3N0UnRwQmluU2Vzc2lvbiAqIHNlc3Npb24pCi0gCi0gICAgIHNlbmRfcnRwX3NyYyA9IGVuY3Ny
YzsKLSAKLS0gICAgZW5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJydHBfc2lua18lZCIsIHNlc3Np
ZCk7Ci0rICAgIGVuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgicnRwX3NpbmtfJXUiLCBzZXNzaWQp
OwotICAgICBlbmNzaW5rID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKGVuY29kZXIsIGVu
YW1lKTsKLSAgICAgZ19mcmVlIChlbmFtZSk7Ci0gICAgIGlmIChlbmNzaW5rID09IE5VTEwpCi1A
QCAtMzY5NCwyMyArMzkzOCwyMyBAQCBjb21wbGV0ZV9zZXNzaW9uX3NyYyAoR3N0UnRwQmluICog
cnRwYmluLCBHc3RSdHBCaW5TZXNzaW9uICogc2Vzc2lvbikKLSAgIC8qIEVSUk9SUyAqLwotIG5v
X3NyY3BhZDoKLSAgIHsKLS0gICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IHJ0
cCBzb3VyY2UgcGFkIGZvciBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLSsgICAgZ193YXJuaW5nICgi
cnRwYmluOiBmYWlsZWQgdG8gZ2V0IHJ0cCBzb3VyY2UgcGFkIGZvciBzZXNzaW9uICV1Iiwgc2Vz
c2lkKTsKLSAgICAgcmV0dXJuIEZBTFNFOwotICAgfQotIGVuY19zcmNfZmFpbGVkOgotICAgewot
LSAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgZW5jb2RlciBzcmMgcGFkIGZv
ciBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLSsgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQg
dG8gZ2V0IGVuY29kZXIgc3JjIHBhZCBmb3Igc2Vzc2lvbiAldSIsIHNlc3NpZCk7Ci0gICAgIHJl
dHVybiBGQUxTRTsKLSAgIH0KLSBlbmNfc2lua19mYWlsZWQ6Ci0gICB7Ci0tICAgIGdfd2Fybmlu
ZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBlbmNvZGVyIHNpbmsgcGFkIGZvciBzZXNzaW9uICVk
Iiwgc2Vzc2lkKTsKLSsgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IGVuY29k
ZXIgc2luayBwYWQgZm9yIHNlc3Npb24gJXUiLCBzZXNzaWQpOwotICAgICBnc3Rfb2JqZWN0X3Vu
cmVmIChzZW5kX3J0cF9zcmMpOwotICAgICByZXR1cm4gRkFMU0U7Ci0gICB9Ci0gZW5jX2xpbmtf
ZmFpbGVkOgotICAgewotLSAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBsaW5rIHJ0
cCBlbmNvZGVyIGZvciBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLSsgICAgZ193YXJuaW5nICgicnRw
YmluOiBmYWlsZWQgdG8gbGluayBydHAgZW5jb2RlciBmb3Igc2Vzc2lvbiAldSIsIHNlc3NpZCk7
Ci0gICAgIGdzdF9vYmplY3RfdW5yZWYgKHNlbmRfcnRwX3NyYyk7Ci0gICAgIHJldHVybiBGQUxT
RTsKLSAgIH0KLUBAIC0zNzcyLDIyICs0MDE2LDIyIEBAIGNyZWF0ZV9lcnJvcjoKLSAgIH0KLSBl
eGlzdGluZ19zZXNzaW9uOgotICAgewotLSAgICBnX3dhcm5pbmcgKCJydHBiaW46IHNlc3Npb24g
JWQgaXMgYWxyZWFkeSBhIHNlbmRlciIsIHNlc3NpZCk7Ci0rICAgIGdfd2FybmluZyAoInJ0cGJp
bjogc2Vzc2lvbiAldSBpcyBhbHJlYWR5IGEgc2VuZGVyIiwgc2Vzc2lkKTsKLSAgICAgcmV0dXJu
IEZBTFNFOwotICAgfQotIHBhZF9mYWlsZWQ6Ci0gICB7Ci0tICAgIGdfd2FybmluZyAoInJ0cGJp
bjogZmFpbGVkIHRvIGdldCBzZXNzaW9uIHBhZCBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7Ci0r
ICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBzZXNzaW9uIHBhZCBmb3Igc2Vz
c2lvbiAldSIsIHNlc3NpZCk7Ci0gICAgIHJldHVybiBGQUxTRTsKLSAgIH0KLSBhdXhfbGlua19m
YWlsZWQ6Ci0gICB7Ci0tICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGxpbmsgQVVY
IGZvciBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLSsgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWls
ZWQgdG8gbGluayBBVVggZm9yIHNlc3Npb24gJXUiLCBzZXNzaWQpOwotICAgICByZXR1cm4gRkFM
U0U7Ci0gICB9Ci0gc2Vzc2lvbl9zcmNfZmFpbGVkOgotICAgewotLSAgICBnX3dhcm5pbmcgKCJy
dHBiaW46IGZhaWxlZCB0byBjb21wbGV0ZSBBVVggZm9yIHNlc3Npb24gJWQiLCBzZXNzaWQpOwot
KyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBjb21wbGV0ZSBBVVggZm9yIHNlc3Np
b24gJXUiLCBzZXNzaWQpOwotICAgICByZXR1cm4gRkFMU0U7Ci0gICB9Ci0gfQotQEAgLTM4NDcs
NyArNDA5MSw3IEBAIGNyZWF0ZV9zZW5kX3J0cCAoR3N0UnRwQmluICogcnRwYmluLCBHc3RQYWRU
ZW1wbGF0ZSAqIHRlbXBsLCBjb25zdCBnY2hhciAqIG5hbWUpCi0gICAgIGlmICghc2V0dXBfYXV4
X3NlbmRlciAocnRwYmluLCBzZXNzaW9uLCBhdXgpKQotICAgICAgIGdvdG8gYXV4X3Nlc3Npb25f
ZmFpbGVkOwotIAotLSAgICBwbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInNpbmtfJWQiLCBzZXNz
aWQpOwotKyAgICBwbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInNpbmtfJXUiLCBzZXNzaWQpOwot
ICAgICBzZW5kX3J0cF9zaW5rID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKGF1eCwgcG5h
bWUpOwotICAgICBnX2ZyZWUgKHBuYW1lKTsKLSAKLUBAIC0zODg3LDI3ICs0MTMxLDI3IEBAIGNy
ZWF0ZV9lcnJvcjoKLSAgIH0KLSBleGlzdGluZ19zZXNzaW9uOgotICAgewotLSAgICBnX3dhcm5p
bmcgKCJydHBiaW46IHNlc3Npb24gJWQgaXMgYWxyZWFkeSBpbiB1c2UiLCBzZXNzaWQpOwotKyAg
ICBnX3dhcm5pbmcgKCJydHBiaW46IHNlc3Npb24gJXUgaXMgYWxyZWFkeSBpbiB1c2UiLCBzZXNz
aWQpOwotICAgICByZXR1cm4gTlVMTDsKLSAgIH0KLSBhdXhfc2Vzc2lvbl9mYWlsZWQ6Ci0gICB7
Ci0tICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBBVVggc2luayBwYWQgZm9y
IHNlc3Npb24gJWQiLCBzZXNzaWQpOwotKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0
byBnZXQgQVVYIHNpbmsgcGFkIGZvciBzZXNzaW9uICV1Iiwgc2Vzc2lkKTsKLSAgICAgcmV0dXJu
IE5VTEw7Ci0gICB9Ci0gYXV4X3NpbmtfZmFpbGVkOgotICAgewotLSAgICBnX3dhcm5pbmcgKCJy
dHBiaW46IGZhaWxlZCB0byBnZXQgQVVYIHNpbmsgcGFkIGZvciBzZXNzaW9uICVkIiwgc2Vzc2lk
KTsKLSsgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IEFVWCBzaW5rIHBhZCBm
b3Igc2Vzc2lvbiAldSIsIHNlc3NpZCk7Ci0gICAgIHJldHVybiBOVUxMOwotICAgfQotIHBhZF9m
YWlsZWQ6Ci0gICB7Ci0tICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBzZXNz
aW9uIHBhZCBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7Ci0rICAgIGdfd2FybmluZyAoInJ0cGJp
bjogZmFpbGVkIHRvIGdldCBzZXNzaW9uIHBhZCBmb3Igc2Vzc2lvbiAldSIsIHNlc3NpZCk7Ci0g
ICAgIHJldHVybiBOVUxMOwotICAgfQotIHNlc3Npb25fc3JjX2ZhaWxlZDoKLSAgIHsKLS0gICAg
Z193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gc2V0dXAgc291cmNlIHBhZHMgZm9yIHNlc3Np
b24gJWQiLCBzZXNzaWQpOwotKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBzZXR1
cCBzb3VyY2UgcGFkcyBmb3Igc2Vzc2lvbiAldSIsIHNlc3NpZCk7Ci0gICAgIHJldHVybiBOVUxM
OwotICAgfQotIH0KLUBAIC0zOTc4LDEzICs0MjIyLDEzIEBAIGNyZWF0ZV9ydGNwIChHc3RSdHBC
aW4gKiBydHBiaW4sIEdzdFBhZFRlbXBsYXRlICogdGVtcGwsIGNvbnN0IGdjaGFyICogbmFtZSkK
LSAKLSAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwYmluLCAibGlua2luZyBSVENQIGVuY29kZXIi
KTsKLSAKLS0gICAgZW5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJydGNwX3NyY18lZCIsIHNlc3Np
ZCk7Ci0rICAgIGVuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgicnRjcF9zcmNfJXUiLCBzZXNzaWQp
OwotICAgICBlbmNzcmMgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAoZW5jb2RlciwgZW5h
bWUpOwotICAgICBnX2ZyZWUgKGVuYW1lKTsKLSAgICAgaWYgKGVuY3NyYyA9PSBOVUxMKQotICAg
ICAgIGdvdG8gZW5jX3NyY19mYWlsZWQ7Ci0gCi0tICAgIGVuYW1lID0gZ19zdHJkdXBfcHJpbnRm
ICgicnRjcF9zaW5rXyVkIiwgc2Vzc2lkKTsKLSsgICAgZW5hbWUgPSBnX3N0cmR1cF9wcmludGYg
KCJydGNwX3NpbmtfJXUiLCBzZXNzaWQpOwotICAgICBlbmNzaW5rID0gZ3N0X2VsZW1lbnRfZ2V0
X3N0YXRpY19wYWQgKGVuY29kZXIsIGVuYW1lKTsKLSAgICAgZ19mcmVlIChlbmFtZSk7Ci0gICAg
IGlmIChlbmNzaW5rID09IE5VTEwpCi1AQCAtNDAyMSwyMyArNDI2NSwyMyBAQCBub19zZXNzaW9u
OgotICAgfQotIHBhZF9mYWlsZWQ6Ci0gICB7Ci0tICAgIGdfd2FybmluZyAoInJ0cGJpbjogZmFp
bGVkIHRvIGdldCBydGNwIHBhZCBmb3Igc2Vzc2lvbiAlZCIsIHNlc3NpZCk7Ci0rICAgIGdfd2Fy
bmluZyAoInJ0cGJpbjogZmFpbGVkIHRvIGdldCBydGNwIHBhZCBmb3Igc2Vzc2lvbiAldSIsIHNl
c3NpZCk7Ci0gICAgIHJldHVybiBOVUxMOwotICAgfQotIGVuY19zcmNfZmFpbGVkOgotICAgewot
LSAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgZW5jb2RlciBzcmMgcGFkIGZv
ciBzZXNzaW9uICVkIiwgc2Vzc2lkKTsKLSsgICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQg
dG8gZ2V0IGVuY29kZXIgc3JjIHBhZCBmb3Igc2Vzc2lvbiAldSIsIHNlc3NpZCk7Ci0gICAgIHJl
dHVybiBOVUxMOwotICAgfQotIGVuY19zaW5rX2ZhaWxlZDoKLSAgIHsKLS0gICAgZ193YXJuaW5n
ICgicnRwYmluOiBmYWlsZWQgdG8gZ2V0IGVuY29kZXIgc2luayBwYWQgZm9yIHNlc3Npb24gJWQi
LCBzZXNzaWQpOwotKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZhaWxlZCB0byBnZXQgZW5jb2Rl
ciBzaW5rIHBhZCBmb3Igc2Vzc2lvbiAldSIsIHNlc3NpZCk7Ci0gICAgIGdzdF9vYmplY3RfdW5y
ZWYgKGVuY3NyYyk7Ci0gICAgIHJldHVybiBOVUxMOwotICAgfQotIGVuY19saW5rX2ZhaWxlZDoK
LSAgIHsKLS0gICAgZ193YXJuaW5nICgicnRwYmluOiBmYWlsZWQgdG8gbGluayBydGNwIGVuY29k
ZXIgZm9yIHNlc3Npb24gJWQiLCBzZXNzaWQpOwotKyAgICBnX3dhcm5pbmcgKCJydHBiaW46IGZh
aWxlZCB0byBsaW5rIHJ0Y3AgZW5jb2RlciBmb3Igc2Vzc2lvbiAldSIsIHNlc3NpZCk7Ci0gICAg
IGdzdF9vYmplY3RfdW5yZWYgKGVuY3NyYyk7Ci0gICAgIHJldHVybiBOVUxMOwotICAgfQotZGlm
ZiAtLWdpdCBhL2dzdC9ydHBtYW5hZ2VyL2dzdHJ0cGJpbi5oIGIvZ3N0L3J0cG1hbmFnZXIvZ3N0
cnRwYmluLmgKLWluZGV4IGZiMTNhNDcuLjM4NGI3NmQgMTAwNjQ0Ci0tLS0gYS9nc3QvcnRwbWFu
YWdlci9nc3RydHBiaW4uaAotKysrIGIvZ3N0L3J0cG1hbmFnZXIvZ3N0cnRwYmluLmgKLUBAIC0x
MjcsNiArMTI3LDggQEAgc3RydWN0IF9Hc3RSdHBCaW5DbGFzcyB7Ci0gCi0gICB2b2lkICAgICAo
Km9uX25ld19zZW5kZXJfc3NyYykgICAgICAoR3N0UnRwQmluICpydHBiaW4sIGd1aW50IHNlc3Np
b24sIGd1aW50MzIgc3NyYyk7Ci0gICB2b2lkICAgICAoKm9uX3NlbmRlcl9zc3JjX2FjdGl2ZSkg
ICAoR3N0UnRwQmluICpydHBiaW4sIGd1aW50IHNlc3Npb24sIGd1aW50MzIgc3NyYyk7Ci0rCi0r
ICBndWludCAgICAoKm9uX2J1bmRsZWRfc3NyYykgICAgICAgICAoR3N0UnRwQmluICpydHBiaW4s
IGd1aW50IHNzcmMpOwotIH07Ci0gCi0gR1R5cGUgZ3N0X3J0cF9iaW5fZ2V0X3R5cGUgKHZvaWQp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL3BhdGNoZXMvZ3N0LXBsdWdpbnMtZ29vZC0wMDA1LXNv
dXBodHRwc3JjLWNvb2tpZS1qYXItYW5kLWNvbnRleHQtcXVlcnktc3VwcG9ydC5wYXRjaCBiL1Rv
b2xzL3dwZS9wYXRjaGVzL2dzdC1wbHVnaW5zLWdvb2QtMDAwNS1zb3VwaHR0cHNyYy1jb29raWUt
amFyLWFuZC1jb250ZXh0LXF1ZXJ5LXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDg0ZWRiZDZmODNlZmViNjQ3YzdkMmJiM2ZiYWY1YTk1ZGNjN2UwZWEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvd3BlL3BhdGNo
ZXMvZ3N0LXBsdWdpbnMtZ29vZC0wMDA1LXNvdXBodHRwc3JjLWNvb2tpZS1qYXItYW5kLWNvbnRl
eHQtcXVlcnktc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi1G
cm9tIDhlMDNhNjNmZDU1ZjVhZTQ0Nzk5NDU3OTg5MGU4NjMwYjI3ZjRhMWIgTW9uIFNlcCAxNyAw
MDowMDowMCAyMDAxCi1Gcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPgot
RGF0ZTogV2VkLCAyOCBPY3QgMjAxNSAxMjowMDowOSArMDEwMAotU3ViamVjdDogW1BBVENIIDIv
M10gc291cGh0dHBzcmM6IGNvb2tpZSBqYXIgYW5kIGNvbnRleHQgcXVlcnkgc3VwcG9ydAotCi1V
c2UgYSB2b2xhdGlsZSBDb29raWUgamFyIHRvIHN0b3JlIGNvb2tpZXMgYW5kIGhhbmRsZSB0aGUg
Y29udGV4dAotcXVlcnkgc28gdGhhdCBzZXNzaW9uIGRhdGEgY2FuIGJlIHNoYXJlZCB3aXRoIG90
aGVyIGVsZW1lbnRzIChsaWtlCi1hZGFwdGl2ZWRlbXV4KS4KLQotaHR0cHM6Ly9idWd6aWxsYS5n
bm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTcyNjMxNAotLS0tCi0gZXh0L3NvdXAvZ3N0c291cGh0
dHBzcmMuYyB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCi0g
ZXh0L3NvdXAvZ3N0c291cGh0dHBzcmMuaCB8ICAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDQwIGlu
c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9leHQvc291cC9nc3Rz
b3VwaHR0cHNyYy5jIGIvZXh0L3NvdXAvZ3N0c291cGh0dHBzcmMuYwotaW5kZXggZmM3Y2JhNy4u
MGQzZTg4NiAxMDA2NDQKLS0tLSBhL2V4dC9zb3VwL2dzdHNvdXBodHRwc3JjLmMKLSsrKyBiL2V4
dC9zb3VwL2dzdHNvdXBodHRwc3JjLmMKLUBAIC00ODIsNiArNDgyLDcgQEAgZ3N0X3NvdXBfaHR0
cF9zcmNfaW5pdCAoR3N0U291cEhUVFBTcmMgKiBzcmMpCi0gICBzcmMtPmNvb2tpZXMgPSBOVUxM
OwotICAgc3JjLT5pcmFkaW9fbW9kZSA9IERFRkFVTFRfSVJBRElPX01PREU7Ci0gICBzcmMtPnNl
c3Npb24gPSBOVUxMOwotKyAgc3JjLT5jb29raWVfamFyID0gTlVMTDsKLSAgIHNyYy0+bXNnID0g
TlVMTDsKLSAgIHNyYy0+dGltZW91dCA9IERFRkFVTFRfVElNRU9VVDsKLSAgIHNyYy0+bG9nX2xl
dmVsID0gREVGQVVMVF9TT1VQX0xPR19MRVZFTDsKLUBAIC05NDMsNiArOTQ0LDkgQEAgZ3N0X3Nv
dXBfaHR0cF9zcmNfc2Vzc2lvbl9vcGVuIChHc3RTb3VwSFRUUFNyYyAqIHNyYykKLSAgICAgc291
cF9zZXNzaW9uX3JlbW92ZV9mZWF0dXJlX2J5X3R5cGUgKHNyYy0+c2Vzc2lvbiwKLSAgICAgICAg
IFNPVVBfVFlQRV9DT05URU5UX0RFQ09ERVIpOwotIAotKyAgc3JjLT5jb29raWVfamFyID0gc291
cF9jb29raWVfamFyX25ldyAoKTsKLSsgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZSAoc3JjLT5z
ZXNzaW9uLAotKyAgICAgIFNPVVBfU0VTU0lPTl9GRUFUVVJFIChzcmMtPmNvb2tpZV9qYXIpKTsK
LSAgIHJldHVybiBUUlVFOwotIH0KLSAKLUBAIC05NTgsNiArOTYyLDExIEBAIGdzdF9zb3VwX2h0
dHBfc3JjX3Nlc3Npb25fY2xvc2UgKEdzdFNvdXBIVFRQU3JjICogc3JjKQotICAgICBzcmMtPm1z
ZyA9IE5VTEw7Ci0gICB9Ci0gCi0rICBpZiAoc3JjLT5jb29raWVfamFyKSB7Ci0rICAgIGdfb2Jq
ZWN0X3VucmVmIChzcmMtPmNvb2tpZV9qYXIpOwotKyAgICBzcmMtPmNvb2tpZV9qYXIgPSBOVUxM
OwotKyAgfQotKwotICAgaWYgKHNyYy0+c2Vzc2lvbikgewotICAgICBzb3VwX3Nlc3Npb25fYWJv
cnQgKHNyYy0+c2Vzc2lvbik7Ci0gICAgIGdfb2JqZWN0X3VucmVmIChzcmMtPnNlc3Npb24pOwot
QEAgLTE0MjYsMTEgKzE0MzUsMTIgQEAgZ3N0X3NvdXBfaHR0cF9zcmNfYnVpbGRfbWVzc2FnZSAo
R3N0U291cEhUVFBTcmMgKiBzcmMsIGNvbnN0IGdjaGFyICogbWV0aG9kKQotICAgfQotICAgaWYg
KHNyYy0+Y29va2llcykgewotICAgICBnY2hhciAqKmNvb2tpZTsKLSsgICAgU291cFVSSSAqdXJp
ID0gc291cF91cmlfbmV3IChzcmMtPmxvY2F0aW9uKTsKLSAKLSAgICAgZm9yIChjb29raWUgPSBz
cmMtPmNvb2tpZXM7ICpjb29raWUgIT0gTlVMTDsgY29va2llKyspIHsKLS0gICAgICBzb3VwX21l
c3NhZ2VfaGVhZGVyc19hcHBlbmQgKHNyYy0+bXNnLT5yZXF1ZXN0X2hlYWRlcnMsICJDb29raWUi
LAotLSAgICAgICAgICAqY29va2llKTsKLSsgICAgICBzb3VwX2Nvb2tpZV9qYXJfc2V0X2Nvb2tp
ZSAoc3JjLT5jb29raWVfamFyLCB1cmksICpjb29raWUpOwotICAgICB9Ci0rICAgIHNvdXBfdXJp
X2ZyZWUgKHVyaSk7Ci0gICB9Ci0gCi0gICBzb3VwX21lc3NhZ2Vfc2V0X2ZsYWdzIChzcmMtPm1z
ZywgU09VUF9NRVNTQUdFX09WRVJXUklURV9DSFVOS1MgfAotQEAgLTE5MTAsNiArMTkyMCwxMiBA
QCBnc3Rfc291cF9odHRwX3NyY19xdWVyeSAoR3N0QmFzZVNyYyAqIGJzcmMsIEdzdFF1ZXJ5ICog
cXVlcnkpCi0gICBnYm9vbGVhbiByZXQ7Ci0gICBHc3RTY2hlZHVsaW5nRmxhZ3MgZmxhZ3M7Ci0g
ICBnaW50IG1pbnNpemUsIG1heHNpemUsIGFsaWduOwotKyAgR3N0Q29udGV4dCAqY29udGV4dDsK
LSsgIEdzdFN0cnVjdHVyZSAqY29udGV4dF9zdHJ1Y3R1cmU7Ci0rICBjaGFyICpjb29raWU7Ci0r
ICBjb25zdCBnY2hhciAqY29va2llc1syXTsKLSsgIGNvbnN0IGdjaGFyICpjb250ZXh0X3R5cGU7
Ci0rICBTb3VwVVJJICp1cmk7Ci0gCi0gICBzd2l0Y2ggKEdTVF9RVUVSWV9UWVBFIChxdWVyeSkp
IHsKLSAgICAgY2FzZSBHU1RfUVVFUllfVVJJOgotQEAgLTE5MjEsNiArMTkzNywyNyBAQCBnc3Rf
c291cF9odHRwX3NyY19xdWVyeSAoR3N0QmFzZVNyYyAqIGJzcmMsIEdzdFF1ZXJ5ICogcXVlcnkp
Ci0gICAgICAgfQotICAgICAgIHJldCA9IFRSVUU7Ci0gICAgICAgYnJlYWs7Ci0rICAgIGNhc2Ug
R1NUX1FVRVJZX0NPTlRFWFQ6Ci0rICAgICAgaWYgKGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0X3R5
cGUgKHF1ZXJ5LCAmY29udGV4dF90eXBlKQotKyAgICAgICAgICAmJiAhZ19zdHJjbXAwIChjb250
ZXh0X3R5cGUsICJodHRwLWhlYWRlcnMiKSkgewotKyAgICAgICAgdXJpID0gc291cF91cmlfbmV3
IChzcmMtPmxvY2F0aW9uKTsKLSsgICAgICAgIGNvb2tpZSA9IHNvdXBfY29va2llX2phcl9nZXRf
Y29va2llcyAoc3JjLT5jb29raWVfamFyLCB1cmksIFRSVUUpOwotKyAgICAgICAgY29udGV4dCA9
IGdzdF9jb250ZXh0X25ldyAoImh0dHAtaGVhZGVycyIsIEZBTFNFKTsKLSsgICAgICAgIGdzdF9j
b250ZXh0X21ha2Vfd3JpdGFibGUgKGNvbnRleHQpOwotKyAgICAgICAgY29udGV4dF9zdHJ1Y3R1
cmUgPSBnc3RfY29udGV4dF93cml0YWJsZV9zdHJ1Y3R1cmUgKGNvbnRleHQpOwotKyAgICAgICAg
aWYgKGNvb2tpZSAhPSBOVUxMKSB7Ci0rICAgICAgICAgIGNvb2tpZXNbMF0gPSBjb29raWU7Ci0r
ICAgICAgICAgIGNvb2tpZXNbMV0gPSBOVUxMOwotKyAgICAgICAgICBnc3Rfc3RydWN0dXJlX3Nl
dCAoY29udGV4dF9zdHJ1Y3R1cmUsICJjb29raWVzIiwgR19UWVBFX1NUUlYsIGNvb2tpZXMsCi0r
ICAgICAgICAgICAgICBOVUxMKTsKLSsgICAgICAgICAgZ19mcmVlIChjb29raWUpOwotKyAgICAg
ICAgfQotKyAgICAgICAgZ3N0X3F1ZXJ5X3NldF9jb250ZXh0IChxdWVyeSwgY29udGV4dCk7Ci0r
ICAgICAgICBzb3VwX3VyaV9mcmVlICh1cmkpOwotKyAgICAgICAgcmV0ID0gVFJVRTsKLSsgICAg
ICAgIGJyZWFrOwotKyAgICAgIH0KLSsKLSAgICAgZGVmYXVsdDoKLSAgICAgICByZXQgPSBGQUxT
RTsKLSAgICAgICBicmVhazsKLWRpZmYgLS1naXQgYS9leHQvc291cC9nc3Rzb3VwaHR0cHNyYy5o
IGIvZXh0L3NvdXAvZ3N0c291cGh0dHBzcmMuaAotaW5kZXggZGQwMTY1Ni4uOWM2YmI1YyAxMDA2
NDQKLS0tLSBhL2V4dC9zb3VwL2dzdHNvdXBodHRwc3JjLmgKLSsrKyBiL2V4dC9zb3VwL2dzdHNv
dXBodHRwc3JjLmgKLUBAIC02MCw2ICs2MCw3IEBAIHN0cnVjdCBfR3N0U291cEhUVFBTcmMgewot
ICAgZ2NoYXIgKnByb3h5X3B3OyAgICAgICAgICAgICAvKiBBdXRoZW50aWNhdGlvbiB1c2VyIHBh
c3N3b3JkIGZvciBwcm94eSBVUkkuICovCi0gICBnY2hhciAqKmNvb2tpZXM7ICAgICAgICAgICAg
IC8qIEhUVFAgcmVxdWVzdCBjb29raWVzLiAqLwotICAgU291cFNlc3Npb24gKnNlc3Npb247ICAg
ICAgICAvKiBBc3luYyBjb250ZXh0LiAqLwotKyAgU291cENvb2tpZUphciAqY29va2llX2phcjsg
ICAvKiBWb2xhdGlsZSBIVFRQIGNvb2tpZSBzdG9yYWdlICovCi0gICBTb3VwTWVzc2FnZSAqbXNn
OyAgICAgICAgICAgIC8qIFJlcXVlc3QgbWVzc2FnZS4gKi8KLSAgIEdzdEZsb3dSZXR1cm4gcmV0
OyAgICAgICAgICAgLyogUmV0dXJuIGNvZGUgZnJvbSBjYWxsYmFjay4gKi8KLSAgIGdpbnQgcmV0
cnlfY291bnQ7ICAgICAgICAgICAgLyogTnVtYmVyIG9mIHJldHJpZXMgc2luY2Ugd2UgcmVjZWl2
ZWQgZGF0YSAqLwotLS0gCi0xLjguMy4yCi0KZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9wYXRjaGVz
L2dzdC1wbHVnaW5zLWdvb2QtMDAwNi1xdGRlbXV4LWFkZC1jb250ZXh0LWZvci1hLXByZWZlcnJl
ZC1wcm90ZWN0aW9uLnBhdGNoIGIvVG9vbHMvd3BlL3BhdGNoZXMvZ3N0LXBsdWdpbnMtZ29vZC0w
MDA2LXF0ZGVtdXgtYWRkLWNvbnRleHQtZm9yLWEtcHJlZmVycmVkLXByb3RlY3Rpb24ucGF0Y2gK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkZGZlY2U0MmYwN2Y1YWUwZmUyZDVlN2Qy
ZGJmOTgyYzdmYTUzOTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvVG9vbHMvd3BlL3BhdGNoZXMvZ3N0LXBsdWdpbnMtZ29vZC0wMDA2LXF0ZGVtdXgtYWRk
LWNvbnRleHQtZm9yLWEtcHJlZmVycmVkLXByb3RlY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApA
QCAtMSwzMjkgKzAsMCBAQAotRnJvbSA5ZDcyMDFjYTc2ZTc4NzVjZGRkMTA2ZGYwNmI0ZDc2Mzdj
MDI1NDY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWGFiaWVyIFJvZHJpZ3VleiBD
YWx2YXIgPGNhbHZhcmlzQGlnYWxpYS5jb20+Ci1EYXRlOiBXZWQsIDIxIEp1biAyMDE3IDE3OjU5
OjIxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8zXSBxdGRlbXV4OiBhZGQgY29udGV4dCBmb3Ig
YSBwcmVmZXJyZWQgcHJvdGVjdGlvbgotCi1xdGRlbXV4IHNlbGVjdGVkIHRoZSBmaXJzdCBzeXN0
ZW0gY29ycmVzcG9uZGluZyB0byBhIHdvcmtpbmcgR1N0cmVhbWVyCi1kZWNyeXB0b3IuIFdpdGgg
dGhpcyBjaGFuZ2UsIGJlZm9yZSBzZWxlY3RpbmcgdGhhdCBkZWNyeXB0b3IsIHF0ZGVtdXgKLXdp
bGwgY2hlY2sgaWYgaXQgaGFzIGNvbnRleHQgKGEgcHJlZmVycmVkIGRlY3J5cHRvciBpZCkgYW5k
IGlmIG5vdCwgaXQKLXdpbGwgcmVxdWVzdCBpdC4KLQotVGhlIHJlcXVlc3QgaW5jbHVkZXMgdHJh
Y2staWQsIGF2YWlsYWJsZSBrZXkgc3lzdGVtIGlkcyBmb3IgdGhlCi1hdmFpbGFibGUgZGVjcnlw
dG9ycyBhbmQgZXZlbiB0aGUgZXZlbnRzIHNvIHRoYXQgdGhlIGluaXQgZGF0YSBpcwotYWNjZXNz
aWJsZS4KLQotW2VvY2FuaGFAaWdhbGlhLmNvbTogc2VsZWN0IHRoZSBwcmVmZXJyZWQgcHJvdGVj
dGlvbiBzeXN0ZW0gZXZlbiBpZiBub3QgYXZhaWxhYmxlXQotCi1UZXN0ICI0LiBDbGVhcktleVZp
ZGVvIiBpbiBZb3VUdWJlIGxlYW5iYWNrIEVNRSBjb25mb3JtYW5jZSB0ZXN0cyAyMDE2IGZvcgot
SC4yNjRbMV0gdXNlcyBhIG1lZGlhIGZpbGVbMl0gd2l0aCBjZW5jIGVuY3J5cHRpb24gd2hpY2gg
ZW1iZWRzICdwc3NoJyBib3hlcwotd2l0aCB0aGUgaW5pdCBkYXRhIGZvciB0aGUgUGxheXJlYWR5
IGFuZCBXaWRldmluZSBlbmNyeXB0aW9uIHN5c3RlbXMsIGJ1dCBub3QKLWZvciB0aGUgQ2xlYXJL
ZXkgZW5jcnlwdGlvbiBzeXN0ZW0gKGFzIGRlZmluZWQgYnkgdGhlIEVNRXYwLjFiIHNwZWNbM10g
YW5kIHdpdGgKLXRoZSBlbmNyeXB0aW9uIHN5c3RlbSBpZCBkZWZpbmVkIGluIFs0XSkuCi0KLUlu
c3RlYWQsIHRoZSBDbGVhcktleSBlbmNyeXB0aW9uIHN5c3RlbSBpcyBtYW51YWxseSBzZWxlY3Rl
ZCBieSB0aGUgd2ViIHBhZ2UKLWNvZGUgKGV2ZW4gaWYgbm90IG9yaWdpbmFsbHkgZGV0ZWN0ZWQg
YnkgcXRkZW11eCkgYW5kIHRoZSBwcm9wZXIgZGVjcnlwdGlvbiBrZXkKLWlzIGRpc3BhdGNoZWQg
dG8gdGhlIGRlY3J5cHRvciwgd2hpY2ggY2FuIHRoZW4gZGVjcnlwdCB0aGUgdmlkZW8gc3VjY2Vz
c2Z1bGx5LgotCi1bMV0gaHR0cDovL3l0LWRhc2gtbXNlLXRlc3QuY29tbW9uZGF0YXN0b3JhZ2Uu
Z29vZ2xlYXBpcy5jb20vdW5pdC10ZXN0cy8yMDE2Lmh0bWw/dGVzdF90eXBlPWVuY3J5cHRlZG1l
ZGlhLXRlc3Qmd2VibT1mYWxzZQotWzJdIGh0dHA6Ly95dC1kYXNoLW1zZS10ZXN0LmNvbW1vbmRh
dGFzdG9yYWdlLmdvb2dsZWFwaXMuY29tL3VuaXQtdGVzdHMvbWVkaWEvY2FyX2NlbmMtMjAxMjA4
MjctODYubXA0Ci1bM10gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxl
L2VtZS12MC4xYi9lbmNyeXB0ZWQtbWVkaWEvZW5jcnlwdGVkLW1lZGlhLmh0bWwjc2ltcGxlLWRl
Y3J5cHRpb24tY2xlYXIta2V5Ci1bNF0gaHR0cHM6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3No
b3dfYnVnLmNnaT9pZD0yNDAyNyNjMgotCi1odHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzcwMTA3Ci0tLS0KLSBnc3QvaXNvbXA0L3F0ZGVtdXguYyB8IDIwMCArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSBnc3QvaXNv
bXA0L3F0ZGVtdXguaCB8ICAgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCAxOTUgaW5zZXJ0aW9ucygr
KSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dzdC9pc29tcDQvcXRkZW11eC5jIGIv
Z3N0L2lzb21wNC9xdGRlbXV4LmMKLWluZGV4IDBhNDFiMjZmMi4uYWU1N2JkZjliIDEwMDY0NAot
LS0tIGEvZ3N0L2lzb21wNC9xdGRlbXV4LmMKLSsrKyBiL2dzdC9pc29tcDQvcXRkZW11eC5jCi1A
QCAtNTEzLDYgKzUxMyw4IEBAIHN0YXRpYyBHc3RJbmRleCAqZ3N0X3F0ZGVtdXhfZ2V0X2luZGV4
IChHc3RFbGVtZW50ICogZWxlbWVudCk7Ci0gI2VuZGlmCi0gc3RhdGljIEdzdFN0YXRlQ2hhbmdl
UmV0dXJuIGdzdF9xdGRlbXV4X2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCi0g
ICAgIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pOwotK3N0YXRpYyB2b2lkIGdzdF9xdGRlbXV4
X3NldF9jb250ZXh0IChHc3RFbGVtZW50ICogZWxlbWVudCwKLSsgICAgR3N0Q29udGV4dCAqIGNv
bnRleHQpOwotIHN0YXRpYyBnYm9vbGVhbiBxdGRlbXV4X3NpbmtfYWN0aXZhdGUgKEdzdFBhZCAq
IHNpbmtwYWQsIEdzdE9iamVjdCAqIHBhcmVudCk7Ci0gc3RhdGljIGdib29sZWFuIHF0ZGVtdXhf
c2lua19hY3RpdmF0ZV9tb2RlIChHc3RQYWQgKiBzaW5rcGFkLAotICAgICBHc3RPYmplY3QgKiBw
YXJlbnQsIEdzdFBhZE1vZGUgbW9kZSwgZ2Jvb2xlYW4gYWN0aXZlKTsKLUBAIC02MDIsNiArNjA0
LDcgQEAgZ3N0X3F0ZGVtdXhfY2xhc3NfaW5pdCAoR3N0UVREZW11eENsYXNzICoga2xhc3MpCi0g
ICBnc3RlbGVtZW50X2NsYXNzLT5zZXRfaW5kZXggPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3F0
ZGVtdXhfc2V0X2luZGV4KTsKLSAgIGdzdGVsZW1lbnRfY2xhc3MtPmdldF9pbmRleCA9IEdTVF9E
RUJVR19GVU5DUFRSIChnc3RfcXRkZW11eF9nZXRfaW5kZXgpOwotICNlbmRpZgotKyAgZ3N0ZWxl
bWVudF9jbGFzcy0+c2V0X2NvbnRleHQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3F0ZGVtdXhf
c2V0X2NvbnRleHQpOwotIAotICAgZ3N0X3RhZ19yZWdpc3Rlcl9tdXNpY2JyYWluel90YWdzICgp
OwotIAotQEAgLTY2MCw2ICs2NjMsNyBAQCBnc3RfcXRkZW11eF9pbml0IChHc3RRVERlbXV4ICog
cXRkZW11eCkKLSAgIHF0ZGVtdXgtPmNlbmNfYXV4X2luZm9fc2l6ZXMgPSBOVUxMOwotICAgcXRk
ZW11eC0+Y2VuY19hdXhfc2FtcGxlX2NvdW50ID0gMDsKLSAgIHF0ZGVtdXgtPnByb3RlY3Rpb25f
c3lzdGVtX2lkcyA9IE5VTEw7Ci0rICBxdGRlbXV4LT5wcmVmZXJyZWRfcHJvdGVjdGlvbl9zeXN0
ZW1faWQgPSBOVUxMOwotICAgZ19xdWV1ZV9pbml0ICgmcXRkZW11eC0+cHJvdGVjdGlvbl9ldmVu
dF9xdWV1ZSk7Ci0gICBnc3Rfc2VnbWVudF9pbml0ICgmcXRkZW11eC0+c2VnbWVudCwgR1NUX0ZP
Uk1BVF9USU1FKTsKLSAgIHF0ZGVtdXgtPnRhZ19saXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0
eSAoKTsKLUBAIC0yMTEzLDYgKzIxMTcsMTAgQEAgZ3N0X3F0ZGVtdXhfcmVzZXQgKEdzdFFURGVt
dXggKiBxdGRlbXV4LCBnYm9vbGVhbiBoYXJkKQotICAgICAgIGdfcHRyX2FycmF5X2ZyZWUgKHF0
ZGVtdXgtPnByb3RlY3Rpb25fc3lzdGVtX2lkcywgVFJVRSk7Ci0gICAgICAgcXRkZW11eC0+cHJv
dGVjdGlvbl9zeXN0ZW1faWRzID0gTlVMTDsKLSAgICAgfQotKyAgICBpZiAocXRkZW11eC0+cHJl
ZmVycmVkX3Byb3RlY3Rpb25fc3lzdGVtX2lkKSB7Ci0rICAgICAgZ19mcmVlIChxdGRlbXV4LT5w
cmVmZXJyZWRfcHJvdGVjdGlvbl9zeXN0ZW1faWQpOwotKyAgICAgIHF0ZGVtdXgtPnByZWZlcnJl
ZF9wcm90ZWN0aW9uX3N5c3RlbV9pZCA9IE5VTEw7Ci0rICAgIH0KLSAgIH0gZWxzZSBpZiAocXRk
ZW11eC0+bXNzX21vZGUpIHsKLSAgICAgZ3N0X2Zsb3dfY29tYmluZXJfcmVzZXQgKHF0ZGVtdXgt
PmZsb3djb21iaW5lcik7Ci0gICAgIGZvciAobiA9IDA7IG4gPCBxdGRlbXV4LT5uX3N0cmVhbXM7
IG4rKykKLUBAIC0yNTkwLDYgKzI1OTgsMjggQEAgZ3N0X3F0ZGVtdXhfY2hhbmdlX3N0YXRlIChH
c3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKLSB9Ci0gCi0g
c3RhdGljIHZvaWQKLStnc3RfcXRkZW11eF9zZXRfY29udGV4dCAoR3N0RWxlbWVudCAqIGVsZW1l
bnQsIEdzdENvbnRleHQgKiBjb250ZXh0KQotK3sKLSsgIEdzdFFURGVtdXggKnF0ZGVtdXggPSBH
U1RfUVRERU1VWCAoZWxlbWVudCk7Ci0rCi0rICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfQ09O
VEVYVCAoY29udGV4dCkpOwotKwotKyAgaWYgKGdzdF9jb250ZXh0X2hhc19jb250ZXh0X3R5cGUg
KGNvbnRleHQsCi0rICAgICAgICAgICJkcm0tcHJlZmVycmVkLWRlY3J5cHRpb24tc3lzdGVtLWlk
IikpIHsKLSsgICAgY29uc3QgR3N0U3RydWN0dXJlICpzOwotKwotKyAgICBzID0gZ3N0X2NvbnRl
eHRfZ2V0X3N0cnVjdHVyZSAoY29udGV4dCk7Ci0rICAgIGdfZnJlZSAocXRkZW11eC0+cHJlZmVy
cmVkX3Byb3RlY3Rpb25fc3lzdGVtX2lkKTsKLSsgICAgcXRkZW11eC0+cHJlZmVycmVkX3Byb3Rl
Y3Rpb25fc3lzdGVtX2lkID0KLSsgICAgICAgIGdfc3RyZHVwIChnc3Rfc3RydWN0dXJlX2dldF9z
dHJpbmcgKHMsICJkZWNyeXB0aW9uLXN5c3RlbS1pZCIpKTsKLSsgICAgR1NUX0RFQlVHX09CSkVD
VCAoZWxlbWVudCwgInNldCBwcmVmZXJyZWQgZGVjcnlwdGlvbiBzeXN0ZW0gdG8gJXMiLAotKyAg
ICAgICAgcXRkZW11eC0+cHJlZmVycmVkX3Byb3RlY3Rpb25fc3lzdGVtX2lkKTsKLSsgIH0KLSsK
LSsgIEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dCAoZWxlbWVu
dCwgY29udGV4dCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0gcXRkZW11eF9wYXJzZV9mdHlwIChH
c3RRVERlbXV4ICogcXRkZW11eCwgY29uc3QgZ3VpbnQ4ICogYnVmZmVyLCBnaW50IGxlbmd0aCkK
LSB7Ci0gICAvKiBjb3VudHMgYXMgaGVhZGVyIGRhdGEgKi8KLUBAIC0zODE5LDYgKzM4NDksOCBA
QCBxdGRlbXV4X3BhcnNlX3Bzc2ggKEdzdFFURGVtdXggKiBxdGRlbXV4LCBHTm9kZSAqIG5vZGUp
Ci0gICBldmVudCA9IGdzdF9ldmVudF9uZXdfcHJvdGVjdGlvbiAoc3lzaWRfc3RyaW5nLCBwc3No
LAotICAgICAgIChwYXJlbnRfYm94X3R5cGUgPT0gRk9VUkNDX21vb3YpID8gImlzb2JtZmYvbW9v
diIgOiAiaXNvYm1mZi9tb29mIik7Ci0gICBmb3IgKGkgPSAwOyBpIDwgcXRkZW11eC0+bl9zdHJl
YW1zOyArK2kpIHsKLSsgICAgR1NUX1RSQUNFX09CSkVDVCAocXRkZW11eCwKLSsgICAgICAgICJh
ZGRpbmcgcHJvdGVjdGlvbiBldmVudCBmb3Igc3RyZWFtICVkIGFuZCBzeXN0ZW0gJXMiLCBpLCBz
eXNpZF9zdHJpbmcpOwotICAgICBnX3F1ZXVlX3B1c2hfdGFpbCAoJnF0ZGVtdXgtPnN0cmVhbXNb
aV0tPnByb3RlY3Rpb25fc2NoZW1lX2V2ZW50X3F1ZXVlLAotICAgICAgICAgZ3N0X2V2ZW50X3Jl
ZiAoZXZlbnQpKTsKLSAgIH0KLUBAIC01NTI5LDYgKzU1NjEsOCBAQCBnc3RfcXRkZW11eF9kZWNv
cmF0ZV9hbmRfcHVzaF9idWZmZXIgKEdzdFFURGVtdXggKiBxdGRlbXV4LAotICAgICBHc3RFdmVu
dCAqZXZlbnQ7Ci0gCi0gICAgIHdoaWxlICgoZXZlbnQgPSBnX3F1ZXVlX3BvcF9oZWFkICgmc3Ry
ZWFtLT5wcm90ZWN0aW9uX3NjaGVtZV9ldmVudF9xdWV1ZSkpKSB7Ci0rICAgICAgR1NUX1RSQUNF
X09CSkVDVCAoc3RyZWFtLT5wYWQsICJwdXNoaW5nIHByb3RlY3Rpb24gZXZlbnQ6ICUiCi0rICAg
ICAgICAgIEdTVF9QVFJfRk9STUFULCBldmVudCk7Ci0gICAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50
IChzdHJlYW0tPnBhZCwgZXZlbnQpOwotICAgICB9Ci0gCi1AQCAtNzY4OCwxMSArNzcyMiwxNDEg
QEAgcXRkZW11eF9kb19hbGxvY2F0aW9uIChHc3RRVERlbXV4ICogcXRkZW11eCwgUXREZW11eFN0
cmVhbSAqIHN0cmVhbSkKLSB9Ci0gCi0gc3RhdGljIGdib29sZWFuCi0rcGFkX3F1ZXJ5IChjb25z
dCBHVmFsdWUgKiBpdGVtLCBHVmFsdWUgKiB2YWx1ZSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQotK3sK
LSsgIEdzdFBhZCAqcGFkID0gZ192YWx1ZV9nZXRfb2JqZWN0IChpdGVtKTsKLSsgIEdzdFF1ZXJ5
ICpxdWVyeSA9IHVzZXJfZGF0YTsKLSsgIGdib29sZWFuIHJlczsKLSsKLSsgIHJlcyA9IGdzdF9w
YWRfcGVlcl9xdWVyeSAocGFkLCBxdWVyeSk7Ci0rCi0rICBpZiAocmVzKSB7Ci0rICAgIGdfdmFs
dWVfc2V0X2Jvb2xlYW4gKHZhbHVlLCBUUlVFKTsKLSsgICAgcmV0dXJuIEZBTFNFOwotKyAgfQot
KwotKyAgR1NUX0lORk9fT0JKRUNUIChwYWQsICJwYWQgcGVlciBxdWVyeSBmYWlsZWQiKTsKLSsg
IHJldHVybiBUUlVFOwotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStnc3RfcXRkZW11eF9ydW5f
cXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RRdWVyeSAqIHF1ZXJ5LAotKyAgICBHc3RQ
YWREaXJlY3Rpb24gZGlyZWN0aW9uKQotK3sKLSsgIEdzdEl0ZXJhdG9yICppdDsKLSsgIEdzdEl0
ZXJhdG9yRm9sZEZ1bmN0aW9uIGZ1bmMgPSBwYWRfcXVlcnk7Ci0rICBHVmFsdWUgcmVzID0geyAw
LCB9OwotKwotKyAgZ192YWx1ZV9pbml0ICgmcmVzLCBHX1RZUEVfQk9PTEVBTik7Ci0rICBnX3Zh
bHVlX3NldF9ib29sZWFuICgmcmVzLCBGQUxTRSk7Ci0rCi0rICAvKiBBc2sgbmVpZ2hib3IgKi8K
LSsgIGlmIChkaXJlY3Rpb24gPT0gR1NUX1BBRF9TUkMpCi0rICAgIGl0ID0gZ3N0X2VsZW1lbnRf
aXRlcmF0ZV9zcmNfcGFkcyAoZWxlbWVudCk7Ci0rICBlbHNlCi0rICAgIGl0ID0gZ3N0X2VsZW1l
bnRfaXRlcmF0ZV9zaW5rX3BhZHMgKGVsZW1lbnQpOwotKwotKyAgd2hpbGUgKGdzdF9pdGVyYXRv
cl9mb2xkIChpdCwgZnVuYywgJnJlcywgcXVlcnkpID09IEdTVF9JVEVSQVRPUl9SRVNZTkMpCi0r
ICAgIGdzdF9pdGVyYXRvcl9yZXN5bmMgKGl0KTsKLSsKLSsgIGdzdF9pdGVyYXRvcl9mcmVlIChp
dCk7Ci0rCi0rICByZXR1cm4gZ192YWx1ZV9nZXRfYm9vbGVhbiAoJnJlcyk7Ci0rfQotKwotK3N0
YXRpYyB2b2lkCi0rZ3N0X3F0ZGVtdXhfcmVxdWVzdF9wcm90ZWN0aW9uX2NvbnRleHQgKEdzdFFU
RGVtdXggKiBxdGRlbXV4LAotKyAgICBRdERlbXV4U3RyZWFtICogc3RyZWFtKQotK3sKLSsgIEdz
dFF1ZXJ5ICpxdWVyeTsKLSsgIEdzdENvbnRleHQgKmN0eHQ7Ci0rICBHc3RFbGVtZW50ICplbGVt
ZW50ID0gR1NUX0VMRU1FTlQgKHF0ZGVtdXgpOwotKyAgR3N0U3RydWN0dXJlICpzdDsKLSsgIGdj
aGFyICoqZmlsdGVyZWRfc3lzX2lkczsKLSsgIEdWYWx1ZSBldmVudF9saXN0ID0gR19WQUxVRV9J
TklUOwotKyAgR0xpc3QgKndhbGs7Ci0rCi0rICAvKiAxLiBDaGVjayBpZiB3ZSBhbHJlYWR5IGhh
dmUgdGhlIGNvbnRleHQuICovCi0rICBpZiAocXRkZW11eC0+cHJlZmVycmVkX3Byb3RlY3Rpb25f
c3lzdGVtX2lkICE9IE5VTEwpIHsKLSsgICAgR1NUX0xPR19PQkpFQ1QgKGVsZW1lbnQsCi0rICAg
ICAgICAiYWxyZWFkeSBoYXZlIHRoZSBwcm90ZWN0aW9uIGNvbnRleHQsIG5vIG5lZWQgdG8gcmVx
dWVzdCBpdCBhZ2FpbiIpOwotKyAgICByZXR1cm47Ci0rICB9Ci0rCi0rICBnX3B0cl9hcnJheV9h
ZGQgKHF0ZGVtdXgtPnByb3RlY3Rpb25fc3lzdGVtX2lkcywgTlVMTCk7Ci0rICBmaWx0ZXJlZF9z
eXNfaWRzID0gZ3N0X3Byb3RlY3Rpb25fZmlsdGVyX3N5c3RlbXNfYnlfYXZhaWxhYmxlX2RlY3J5
cHRvcnMgKAotKyAgICAgIChjb25zdCBnY2hhciAqKikgcXRkZW11eC0+cHJvdGVjdGlvbl9zeXN0
ZW1faWRzLT5wZGF0YSk7Ci0rICBnX3B0cl9hcnJheV9yZW1vdmVfaW5kZXggKHF0ZGVtdXgtPnBy
b3RlY3Rpb25fc3lzdGVtX2lkcywKLSsgICAgICBxdGRlbXV4LT5wcm90ZWN0aW9uX3N5c3RlbV9p
ZHMtPmxlbiAtIDEpOwotKyAgR1NUX1RSQUNFX09CSkVDVCAocXRkZW11eCwgImRldGVjdGVkICV1
IHByb3RlY3Rpb24gc3lzdGVtcywgd2UgaGF2ZSAiCi0rICAgICAgImRlY3J5cHRvcnMgZm9yICV1
IG9mIHRoZW0sIHJ1bm5pbmcgY29udGV4dCByZXF1ZXN0IiwKLSsgICAgICBxdGRlbXV4LT5wcm90
ZWN0aW9uX3N5c3RlbV9pZHMtPmxlbiwgZ19zdHJ2X2xlbmd0aCAoZmlsdGVyZWRfc3lzX2lkcykp
OwotKwotKyAgaWYgKHN0cmVhbS0+cHJvdGVjdGlvbl9zY2hlbWVfZXZlbnRfcXVldWUubGVuZ3Ro
KSB7Ci0rICAgIEdTVF9UUkFDRV9PQkpFQ1QgKHF0ZGVtdXgsICJ1c2luZyBzdHJlYW0gZXZlbnQg
cXVldWUsIGxlbmd0aCAldSIsCi0rICAgICAgICBzdHJlYW0tPnByb3RlY3Rpb25fc2NoZW1lX2V2
ZW50X3F1ZXVlLmxlbmd0aCk7Ci0rICAgIHdhbGsgPSBzdHJlYW0tPnByb3RlY3Rpb25fc2NoZW1l
X2V2ZW50X3F1ZXVlLnRhaWw7Ci0rICB9IGVsc2UgewotKyAgICBHU1RfVFJBQ0VfT0JKRUNUIChx
dGRlbXV4LCAidXNpbmcgZGVtdXhlciBldmVudCBxdWV1ZSwgbGVuZ3RoICV1IiwKLSsgICAgICAg
IHF0ZGVtdXgtPnByb3RlY3Rpb25fZXZlbnRfcXVldWUubGVuZ3RoKTsKLSsgICAgd2FsayA9IHF0
ZGVtdXgtPnByb3RlY3Rpb25fZXZlbnRfcXVldWUudGFpbDsKLSsgIH0KLSsKLSsgIGdfdmFsdWVf
aW5pdCAoJmV2ZW50X2xpc3QsIEdTVF9UWVBFX0xJU1QpOwotKyAgZm9yICg7IHdhbGs7IHdhbGsg
PSBnX2xpc3RfcHJldmlvdXMgKHdhbGspKSB7Ci0rICAgIEdWYWx1ZSAqZXZlbnRfdmFsdWUgPSBn
X25ldzAgKEdWYWx1ZSwgMSk7Ci0rICAgIGdfdmFsdWVfaW5pdCAoZXZlbnRfdmFsdWUsIEdTVF9U
WVBFX0VWRU5UKTsKLSsgICAgZ192YWx1ZV9zZXRfYm94ZWQgKGV2ZW50X3ZhbHVlLCB3YWxrLT5k
YXRhKTsKLSsgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX2FuZF90YWtlX3ZhbHVlICgmZXZlbnRf
bGlzdCwgZXZlbnRfdmFsdWUpOwotKyAgfQotKwotKyAgLyogIDJhKSBRdWVyeSBkb3duc3RyZWFt
IHdpdGggR1NUX1FVRVJZX0NPTlRFWFQgZm9yIHRoZSBjb250ZXh0IGFuZAotKyAgICogICAgICBj
aGVjayBpZiBkb3duc3RyZWFtIGFscmVhZHkgaGFzIGEgY29udGV4dCBvZiB0aGUgc3BlY2lmaWMg
dHlwZQotKyAgICogIDJiKSBRdWVyeSB1cHN0cmVhbSBhcyBhYm92ZS4KLSsgICAqLwotKyAgcXVl
cnkgPSBnc3RfcXVlcnlfbmV3X2NvbnRleHQgKCJkcm0tcHJlZmVycmVkLWRlY3J5cHRpb24tc3lz
dGVtLWlkIik7Ci0rICBzdCA9IGdzdF9xdWVyeV93cml0YWJsZV9zdHJ1Y3R1cmUgKHF1ZXJ5KTsK
LSsgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzdCwgInRyYWNrLWlkIiwgR19UWVBFX1VJTlQsIHN0cmVh
bS0+dHJhY2tfaWQsCi0rICAgICAgInN0cmVhbS1lbmNyeXB0aW9uLXN5c3RlbXMiLCBHX1RZUEVf
U1RSViwgZmlsdGVyZWRfc3lzX2lkcywgTlVMTCk7Ci0rICBnc3Rfc3RydWN0dXJlX3NldF92YWx1
ZSAoc3QsICJzdHJlYW0tZW5jcnlwdGlvbi1ldmVudHMiLCAmZXZlbnRfbGlzdCk7Ci0rICBpZiAo
Z3N0X3F0ZGVtdXhfcnVuX3F1ZXJ5IChlbGVtZW50LCBxdWVyeSwgR1NUX1BBRF9TUkMpKSB7Ci0r
ICAgIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0IChxdWVyeSwgJmN0eHQpOwotKyAgICBHU1RfSU5G
T19PQkpFQ1QgKGVsZW1lbnQsICJmb3VuZCBjb250ZXh0ICglcCkgaW4gZG93bnN0cmVhbSBxdWVy
eSIsIGN0eHQpOwotKyAgICBnc3RfZWxlbWVudF9zZXRfY29udGV4dCAoZWxlbWVudCwgY3R4dCk7
Ci0rICB9IGVsc2UgaWYgKGdzdF9xdGRlbXV4X3J1bl9xdWVyeSAoZWxlbWVudCwgcXVlcnksIEdT
VF9QQURfU0lOSykpIHsKLSsgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmY3R4
dCk7Ci0rICAgIEdTVF9JTkZPX09CSkVDVCAoZWxlbWVudCwgImZvdW5kIGNvbnRleHQgKCVwKSBp
biB1cHN0cmVhbSBxdWVyeSIsIGN0eHQpOwotKyAgICBnc3RfZWxlbWVudF9zZXRfY29udGV4dCAo
ZWxlbWVudCwgY3R4dCk7Ci0rICB9IGVsc2UgewotKyAgICAvKiAzKSBQb3N0IGEgR1NUX01FU1NB
R0VfTkVFRF9DT05URVhUIG1lc3NhZ2Ugb24gdGhlIGJ1cyB3aXRoCi0rICAgICAqICAgIHRoZSBy
ZXF1aXJlZCBjb250ZXh0IHR5cGUgYW5kIGFmdGVyd2FyZHMgY2hlY2sgaWYgYQotKyAgICAgKiAg
ICB1c2FibGUgY29udGV4dCB3YXMgc2V0IG5vdyBhcyBpbiAxKS4gVGhlIG1lc3NhZ2UgY291bGQK
LSsgICAgICogICAgYmUgaGFuZGxlZCBieSB0aGUgcGFyZW50IGJpbnMgb2YgdGhlIGVsZW1lbnQg
YW5kIHRoZQotKyAgICAgKiAgICBhcHBsaWNhdGlvbi4KLSsgICAgICovCi0rICAgIEdzdE1lc3Nh
Z2UgKm1zZzsKLSsKLSsgICAgR1NUX0lORk9fT0JKRUNUIChlbGVtZW50LCAicG9zdGluZyBuZWVk
IGNvbnRleHQgbWVzc2FnZSIpOwotKyAgICBtc2cgPSBnc3RfbWVzc2FnZV9uZXdfbmVlZF9jb250
ZXh0IChHU1RfT0JKRUNUX0NBU1QgKGVsZW1lbnQpLAotKyAgICAgICAgImRybS1wcmVmZXJyZWQt
ZGVjcnlwdGlvbi1zeXN0ZW0taWQiKTsKLSsgICAgc3QgPSAoR3N0U3RydWN0dXJlICopIGdzdF9t
ZXNzYWdlX2dldF9zdHJ1Y3R1cmUgKG1zZyk7Ci0rICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzdCwg
InRyYWNrLWlkIiwgR19UWVBFX1VJTlQsIHN0cmVhbS0+dHJhY2tfaWQsCi0rICAgICAgICAic3Ry
ZWFtLWVuY3J5cHRpb24tc3lzdGVtcyIsIEdfVFlQRV9TVFJWLCBmaWx0ZXJlZF9zeXNfaWRzLCBO
VUxMKTsKLSsgICAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFsdWUgKHN0LCAic3RyZWFtLWVuY3J5cHRp
b24tZXZlbnRzIiwgJmV2ZW50X2xpc3QpOwotKyAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2Ug
KGVsZW1lbnQsIG1zZyk7Ci0rICB9Ci0rCi0rICBnX3N0cmZyZWV2IChmaWx0ZXJlZF9zeXNfaWRz
KTsKLSsgIGdfdmFsdWVfdW5zZXQgKCZldmVudF9saXN0KTsKLSsgIGdzdF9xdWVyeV91bnJlZiAo
cXVlcnkpOwotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLSBnc3RfcXRkZW11eF9jb25maWd1cmVf
cHJvdGVjdGVkX2NhcHMgKEdzdFFURGVtdXggKiBxdGRlbXV4LAotICAgICBRdERlbXV4U3RyZWFt
ICogc3RyZWFtKQotIHsKLSAgIEdzdFN0cnVjdHVyZSAqczsKLS0gIGNvbnN0IGdjaGFyICpzZWxl
Y3RlZF9zeXN0ZW07Ci0rICBjb25zdCBnY2hhciAqc2VsZWN0ZWRfc3lzdGVtID0gTlVMTDsKLSAK
LSAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChxdGRlbXV4ICE9IE5VTEwsIEZBTFNFKTsKLSAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsIChzdHJlYW0gIT0gTlVMTCwgRkFMU0UpOwotQEAgLTc3MDgsMTcg
Kzc4NzIsNDEgQEAgZ3N0X3F0ZGVtdXhfY29uZmlndXJlX3Byb3RlY3RlZF9jYXBzIChHc3RRVERl
bXV4ICogcXRkZW11eCwKLSAgICAgICAgICJjZW5jIHByb3RlY3Rpb24gc3lzdGVtIGluZm9ybWF0
aW9uIGhhcyBiZWVuIGZvdW5kIik7Ci0gICAgIHJldHVybiBGQUxTRTsKLSAgIH0KLS0gIGdfcHRy
X2FycmF5X2FkZCAocXRkZW11eC0+cHJvdGVjdGlvbl9zeXN0ZW1faWRzLCBOVUxMKTsKLS0gIHNl
bGVjdGVkX3N5c3RlbSA9IGdzdF9wcm90ZWN0aW9uX3NlbGVjdF9zeXN0ZW0gKChjb25zdCBnY2hh
ciAqKikKLS0gICAgICBxdGRlbXV4LT5wcm90ZWN0aW9uX3N5c3RlbV9pZHMtPnBkYXRhKTsKLS0g
IGdfcHRyX2FycmF5X3JlbW92ZV9pbmRleCAocXRkZW11eC0+cHJvdGVjdGlvbl9zeXN0ZW1faWRz
LAotLSAgICAgIHF0ZGVtdXgtPnByb3RlY3Rpb25fc3lzdGVtX2lkcy0+bGVuIC0gMSk7Ci0rCi0r
ICBnc3RfcXRkZW11eF9yZXF1ZXN0X3Byb3RlY3Rpb25fY29udGV4dCAocXRkZW11eCwgc3RyZWFt
KTsKLSsgIGlmIChxdGRlbXV4LT5wcmVmZXJyZWRfcHJvdGVjdGlvbl9zeXN0ZW1faWQgIT0gTlVM
TCkgewotKyAgICBjb25zdCBnY2hhciAqcHJlZmVycmVkX3N5c3RlbV9hcnJheVtdID0KLSsgICAg
ICAgIHsgcXRkZW11eC0+cHJlZmVycmVkX3Byb3RlY3Rpb25fc3lzdGVtX2lkLCBOVUxMIH07Ci0r
Ci0rICAgIHNlbGVjdGVkX3N5c3RlbSA9IGdzdF9wcm90ZWN0aW9uX3NlbGVjdF9zeXN0ZW0gKHBy
ZWZlcnJlZF9zeXN0ZW1fYXJyYXkpOwotKwotKyAgICBpZiAoc2VsZWN0ZWRfc3lzdGVtKSB7Ci0r
ICAgICAgR1NUX1RSQUNFX09CSkVDVCAocXRkZW11eCwgInNlbGVjdGVkIHByZWZlcnJlZCBzeXN0
ZW0gJXMiLAotKyAgICAgICAgICBxdGRlbXV4LT5wcmVmZXJyZWRfcHJvdGVjdGlvbl9zeXN0ZW1f
aWQpOwotKyAgICB9IGVsc2UgewotKyAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAocXRkZW11eCwg
ImNvdWxkIG5vdCBzZWxlY3QgcHJlZmVycmVkIHN5c3RlbSAlcyAiCi0rICAgICAgICAgICJiZWNh
dXNlIHRoZXJlIGlzIG5vIGF2YWlsYWJsZSBkZWNyeXB0b3IiLAotKyAgICAgICAgICBxdGRlbXV4
LT5wcmVmZXJyZWRfcHJvdGVjdGlvbl9zeXN0ZW1faWQpOwotKyAgICB9Ci0rICB9Ci0rCi0rICBp
ZiAoIXNlbGVjdGVkX3N5c3RlbSkgewotKyAgICBnX3B0cl9hcnJheV9hZGQgKHF0ZGVtdXgtPnBy
b3RlY3Rpb25fc3lzdGVtX2lkcywgTlVMTCk7Ci0rICAgIHNlbGVjdGVkX3N5c3RlbSA9IGdzdF9w
cm90ZWN0aW9uX3NlbGVjdF9zeXN0ZW0gKChjb25zdCBnY2hhciAqKikKLSsgICAgICAgIHF0ZGVt
dXgtPnByb3RlY3Rpb25fc3lzdGVtX2lkcy0+cGRhdGEpOwotKyAgICBnX3B0cl9hcnJheV9yZW1v
dmVfaW5kZXggKHF0ZGVtdXgtPnByb3RlY3Rpb25fc3lzdGVtX2lkcywKLSsgICAgICAgIHF0ZGVt
dXgtPnByb3RlY3Rpb25fc3lzdGVtX2lkcy0+bGVuIC0gMSk7Ci0rICB9Ci0rCi0gICBpZiAoIXNl
bGVjdGVkX3N5c3RlbSkgewotICAgICBHU1RfRVJST1JfT0JKRUNUIChxdGRlbXV4LCAic3RyZWFt
IGlzIHByb3RlY3RlZCwgYnV0IG5vICIKLSAgICAgICAgICJzdWl0YWJsZSBkZWNyeXB0b3IgZWxl
bWVudCBoYXMgYmVlbiBmb3VuZCIpOwotICAgICByZXR1cm4gRkFMU0U7Ci0gICB9Ci0gCi0rICBH
U1RfREVCVUdfT0JKRUNUIChxdGRlbXV4LCAic2VsZWN0ZWQgcHJvdGVjdGlvbiBzeXN0ZW0gaXMg
JXMiLAotKyAgICAgIHNlbGVjdGVkX3N5c3RlbSk7Ci0rCi0gICBzID0gZ3N0X2NhcHNfZ2V0X3N0
cnVjdHVyZSAoc3RyZWFtLT5jYXBzLCAwKTsKLSAgIGlmICghZ3N0X3N0cnVjdHVyZV9oYXNfbmFt
ZSAocywgImFwcGxpY2F0aW9uL3gtY2VuYyIpKSB7Ci0gICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChz
LAotZGlmZiAtLWdpdCBhL2dzdC9pc29tcDQvcXRkZW11eC5oIGIvZ3N0L2lzb21wNC9xdGRlbXV4
LmgKLWluZGV4IGViZDcyNTg3MS4uYjNkNjRhNGU4IDEwMDY0NAotLS0tIGEvZ3N0L2lzb21wNC9x
dGRlbXV4LmgKLSsrKyBiL2dzdC9pc29tcDQvcXRkZW11eC5oCi1AQCAtMTU0LDYgKzE1NCw3IEBA
IHN0cnVjdCBfR3N0UVREZW11eCB7Ci0gICBndWludDY0IGNlbmNfYXV4X2luZm9fb2Zmc2V0Owot
ICAgZ3VpbnQ4ICpjZW5jX2F1eF9pbmZvX3NpemVzOwotICAgZ3VpbnQzMiBjZW5jX2F1eF9zYW1w
bGVfY291bnQ7Ci0rICBnY2hhciAqcHJlZmVycmVkX3Byb3RlY3Rpb25fc3lzdGVtX2lkOwotIAot
IAotICAgLyoKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9wYXRjaGVzL2dz
dC1wbHVnaW5zLWdvb2QtMDAwOC1xdGRlbXV4LWFsc28tcHVzaC1idWZmZXJzLXdpdGhvdXQtZW5j
cnlwdGlvbi1pbmZvLWluLnBhdGNoIGIvVG9vbHMvd3BlL3BhdGNoZXMvZ3N0LXBsdWdpbnMtZ29v
ZC0wMDA4LXF0ZGVtdXgtYWxzby1wdXNoLWJ1ZmZlcnMtd2l0aG91dC1lbmNyeXB0aW9uLWluZm8t
aW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1MDIxY2NiYzA0ZTEwYzY0
ZWIxZTRhYjk2NjkzYmJmMDg4ODA5NmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvVG9vbHMvd3BlL3BhdGNoZXMvZ3N0LXBsdWdpbnMtZ29vZC0wMDA4LXF0
ZGVtdXgtYWxzby1wdXNoLWJ1ZmZlcnMtd2l0aG91dC1lbmNyeXB0aW9uLWluZm8taW4ucGF0Y2gK
KysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIDc4NTU5YmM1ZGIzNDk1ZjEyYjAy
ODRlNGJlNWZjOGJmY2Q3MDQxZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VU
Ri04P3E/RW5yaXF1ZT0yME9jYT1DMz1CMWE9MjBHb256PUMzPUExbGV6Pz0gPGVvY2FuaGFAaWdh
bGlhLmNvbT4KLURhdGU6IE1vbiwgMjQgQXByIDIwMTcgMTc6MjI6MDIgKzAwMDAKLVN1YmplY3Q6
IFtQQVRDSF0gcXRkZW11eDogYWxzbyBwdXNoIGJ1ZmZlcnMgd2l0aG91dCBlbmNyeXB0aW9uIGlu
Zm8gaW5zdGVhZCBvZgotIGRyb3BwaW5nIHRoZW0KLQotLS0tCi0gZ3N0L2lzb21wNC9xdGRlbXV4
LmMgfCAyNiArKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMiBp
bnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dzdC9pc29tcDQv
cXRkZW11eC5jIGIvZ3N0L2lzb21wNC9xdGRlbXV4LmMKLWluZGV4IDZiMGM4MjAuLjdiNzEyMzcg
MTAwNjQ0Ci0tLS0gYS9nc3QvaXNvbXA0L3F0ZGVtdXguYwotKysrIGIvZ3N0L2lzb21wNC9xdGRl
bXV4LmMKLUBAIC01NDIxLDIwICs1NDIxLDE4IEBAIGdzdF9xdGRlbXV4X2RlY29yYXRlX2FuZF9w
dXNoX2J1ZmZlciAoR3N0UVREZW11eCAqIHF0ZGVtdXgsCi0gICAgICAgICBnc3RfcGFkX3B1c2hf
ZXZlbnQgKHN0cmVhbS0+cGFkLCBldmVudCk7Ci0gICAgIH0KLSAKLS0gICAgaWYgKGluZm8tPmNy
eXB0b19pbmZvID09IE5VTEwpIHsKLS0gICAgICBHU1RfREVCVUdfT0JKRUNUIChxdGRlbXV4LCAi
Y2VuYyBtZXRhZGF0YSBoYXNuJ3QgYmVlbiBwYXJzZWQgeWV0Iik7Ci0tICAgICAgZ3N0X2J1ZmZl
cl91bnJlZiAoYnVmKTsKLS0gICAgICBnb3RvIGV4aXQ7Ci0tICAgIH0KLS0KLS0gICAgaW5kZXgg
PSBzdHJlYW0tPnNhbXBsZV9pbmRleCAtIChzdHJlYW0tPm5fc2FtcGxlcyAtIGluZm8tPmNyeXB0
b19pbmZvLT5sZW4pOwotLSAgICBpZiAoR19MSUtFTFkgKGluZGV4ID49IDAgJiYgaW5kZXggPCBp
bmZvLT5jcnlwdG9faW5mby0+bGVuKSkgewotLSAgICAgIC8qIHN0ZWFsIHN0cnVjdHVyZSBmcm9t
IGFycmF5ICovCi0tICAgICAgY3J5cHRvX2luZm8gPSBnX3B0cl9hcnJheV9pbmRleCAoaW5mby0+
Y3J5cHRvX2luZm8sIGluZGV4KTsKLS0gICAgICBnX3B0cl9hcnJheV9pbmRleCAoaW5mby0+Y3J5
cHRvX2luZm8sIGluZGV4KSA9IE5VTEw7Ci0tICAgICAgR1NUX0xPR19PQkpFQ1QgKHF0ZGVtdXgs
ICJhdHRhY2hpbmcgY2VuYyBtZXRhZGF0YSBbJXVdIiwgaW5kZXgpOwotLSAgICAgIGlmICghY3J5
cHRvX2luZm8gfHwgIWdzdF9idWZmZXJfYWRkX3Byb3RlY3Rpb25fbWV0YSAoYnVmLCBjcnlwdG9f
aW5mbykpCi0tICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChxdGRlbXV4LCAiZmFpbGVkIHRvIGF0
dGFjaCBjZW5jIG1ldGFkYXRhIHRvIGJ1ZmZlciIpOwotKyAgICBpZiAoaW5mby0+Y3J5cHRvX2lu
Zm8gPT0gTlVMTCkKLSsgICAgICBHU1RfREVCVUdfT0JKRUNUIChxdGRlbXV4LCAiY2VuYyBtZXRh
ZGF0YSBoYXNuJ3QgYmVlbiBwYXJzZWQgeWV0LCBwdXNoaW5nIGJ1ZmZlciBhcyBpZiBpdCB3YXNu
J3QgZW5jcnlwdGVkIik7Ci0rICAgIGVsc2UgewotKyAgICAgIGluZGV4ID0gc3RyZWFtLT5zYW1w
bGVfaW5kZXggLSAoc3RyZWFtLT5uX3NhbXBsZXMgLSBpbmZvLT5jcnlwdG9faW5mby0+bGVuKTsK
LSsgICAgICBpZiAoR19MSUtFTFkgKGluZGV4ID49IDAgJiYgaW5kZXggPCBpbmZvLT5jcnlwdG9f
aW5mby0+bGVuKSkgewotKyAgICAgICAgLyogc3RlYWwgc3RydWN0dXJlIGZyb20gYXJyYXkgKi8K
LSsgICAgICAgIGNyeXB0b19pbmZvID0gZ19wdHJfYXJyYXlfaW5kZXggKGluZm8tPmNyeXB0b19p
bmZvLCBpbmRleCk7Ci0rICAgICAgICBnX3B0cl9hcnJheV9pbmRleCAoaW5mby0+Y3J5cHRvX2lu
Zm8sIGluZGV4KSA9IE5VTEw7Ci0rICAgICAgICBHU1RfTE9HX09CSkVDVCAocXRkZW11eCwgImF0
dGFjaGluZyBjZW5jIG1ldGFkYXRhIFsldV0iLCBpbmRleCk7Ci0rICAgICAgICBpZiAoIWNyeXB0
b19pbmZvIHx8ICFnc3RfYnVmZmVyX2FkZF9wcm90ZWN0aW9uX21ldGEgKGJ1ZiwgY3J5cHRvX2lu
Zm8pKQotKyAgICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChxdGRlbXV4LCAiZmFpbGVkIHRvIGF0
dGFjaCBjZW5jIG1ldGFkYXRhIHRvIGJ1ZmZlciIpOwotKyAgICAgIH0KLSAgICAgfQotICAgfQot
IAotLS0gCi0xLjguMy4yCi0KZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9wYXRjaGVzL2dzdHJlYW1l
ci0wMDAxLXByb3RlY3Rpb24tYWRkZWQtZnVuY3Rpb24tdG8tZmlsdGVyLXN5c3RlbS1pZHMucGF0
Y2ggYi9Ub29scy93cGUvcGF0Y2hlcy9nc3RyZWFtZXItMDAwMS1wcm90ZWN0aW9uLWFkZGVkLWZ1
bmN0aW9uLXRvLWZpbHRlci1zeXN0ZW0taWRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlNzJlZjZjMTMyYzYzMTQwMjI0NGY3MjYyNzMwZDZkYjQxMzgxZDhhLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL3dwZS9wYXRjaGVz
L2dzdHJlYW1lci0wMDAxLXByb3RlY3Rpb24tYWRkZWQtZnVuY3Rpb24tdG8tZmlsdGVyLXN5c3Rl
bS1pZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi1Gcm9tIDc3NzJlYjM1
MDU5MTY4MmI2YTMxNWM4YTg3YTU4MTMxZjczMWYxZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx
Ci1Gcm9tOiBYYWJpZXIgUm9kcmlndWV6IENhbHZhciA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KLURh
dGU6IFdlZCwgMTkgT2N0IDIwMTYgMTY6NDQ6MTYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gcHJv
dGVjdGlvbjogYWRkZWQgZnVuY3Rpb24gdG8gZmlsdGVyIHN5c3RlbSBpZHMKLQotZ3N0X3Byb3Rl
Y3Rpb25fZmlsdGVyX3N5c3RlbXNfYnlfYXZhaWxhYmxlX2RlY3J5cHRvcnMgdGFrZXMgYW4gYXJy
YXkgb2YKLXN0cmluZ3MgYW5kIHJldHVybnMgYSBuZXcgYXJyYXkgb2Ygc3RyaW5ncyBmaWx0ZXJl
ZCBieSB0aGUgYXZhaWJsZQotZGVjcnlwdG9ycyBmb3IgdGhlbSBzbyB0aGUgb25lcyB5b3UgZ2V0
IGFyZSB0aGUgb25lcyB0aGF0IHlvdSBzaG91bGQgYmUKLWFibGUgdG8gZGVjcnlwdC4KLS0tLQot
IGdzdC9nc3Rwcm90ZWN0aW9uLmMgfCAzNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysKLSBnc3QvZ3N0cHJvdGVjdGlvbi5oIHwgIDIgKysKLSAyIGZpbGVzIGNoYW5nZWQsIDM4
IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dzdC9nc3Rwcm90ZWN0aW9uLmMgYi9nc3Qv
Z3N0cHJvdGVjdGlvbi5jCi1pbmRleCA4ZWU1MmVhLi4yZDdlNWUwIDEwMDY0NAotLS0tIGEvZ3N0
L2dzdHByb3RlY3Rpb24uYwotKysrIGIvZ3N0L2dzdHByb3RlY3Rpb24uYwotQEAgLTE5MSw2ICsx
OTEsNDIgQEAgZ3N0X3Byb3RlY3Rpb25fc2VsZWN0X3N5c3RlbSAoY29uc3QgZ2NoYXIgKiogc3lz
dGVtX2lkZW50aWZpZXJzKQotICAgcmV0dXJuIHJldHZhbDsKLSB9Ci0gCi0rZ2NoYXIgKioKLStn
c3RfcHJvdGVjdGlvbl9maWx0ZXJfc3lzdGVtc19ieV9hdmFpbGFibGVfZGVjcnlwdG9ycyAoY29u
c3QgZ2NoYXIgKioKLSsgICAgc3lzdGVtX2lkZW50aWZpZXJzKQotK3sKLSsgIEdMaXN0ICpkZWNy
eXB0b3JzLCAqd2FsazsKLSsgIGdjaGFyICoqcmV0dmFsOwotKyAgZ3VpbnQgaSA9IDAsIGRlY3J5
cHRvcnNfbnVtYmVyOwotKwotKyAgZGVjcnlwdG9ycyA9Ci0rICAgICAgZ3N0X2VsZW1lbnRfZmFj
dG9yeV9saXN0X2dldF9lbGVtZW50cyAoR1NUX0VMRU1FTlRfRkFDVE9SWV9UWVBFX0RFQ1JZUFRP
UiwKLSsgICAgICBHU1RfUkFOS19NQVJHSU5BTCk7Ci0rCi0rICBkZWNyeXB0b3JzX251bWJlciA9
IGdfbGlzdF9sZW5ndGggKGRlY3J5cHRvcnMpOwotKyAgcmV0dmFsID0gZ19uZXcgKGdjaGFyICos
IGRlY3J5cHRvcnNfbnVtYmVyICsgMSk7Ci0rCi0rICBHU1RfVFJBQ0UgKCJmb3VuZCAldSBkZWNy
eXRvcnMiLCBkZWNyeXB0b3JzX251bWJlcik7Ci0rCi0rICBmb3IgKHdhbGsgPSBkZWNyeXB0b3Jz
OyB3YWxrOyB3YWxrID0gZ19saXN0X25leHQgKHdhbGspKSB7Ci0rICAgIEdzdEVsZW1lbnRGYWN0
b3J5ICpmYWN0ID0gKEdzdEVsZW1lbnRGYWN0b3J5ICopIHdhbGstPmRhdGE7Ci0rCi0rICAgIGNv
bnN0IGNoYXIgKmZvdW5kX3N5c19pZCA9Ci0rICAgICAgICBnc3RfcHJvdGVjdGlvbl9mYWN0b3J5
X2NoZWNrIChmYWN0LCBzeXN0ZW1faWRlbnRpZmllcnMpOwotKyAgICBHU1RfVFJBQ0UgKCJmYWN0
b3J5ICVzIGlzIHZhbGlkIGZvciAlcyIsIEdTVF9PQkpFQ1RfTkFNRSAoZmFjdCksCi0rICAgICAg
ICBmb3VuZF9zeXNfaWQpOwotKwotKyAgICBpZiAoZm91bmRfc3lzX2lkKSB7Ci0rICAgICAgcmV0
dmFsW2krK10gPSBnX3N0cmR1cCAoZm91bmRfc3lzX2lkKTsKLSsgICAgfQotKyAgfQotKyAgcmV0
dmFsW2ldID0gTlVMTDsKLSsKLSsgIGdzdF9wbHVnaW5fZmVhdHVyZV9saXN0X2ZyZWUgKGRlY3J5
cHRvcnMpOwotKwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCi0gc3RhdGljIGNvbnN0IGdjaGFy
ICoKLSBnc3RfcHJvdGVjdGlvbl9mYWN0b3J5X2NoZWNrIChHc3RFbGVtZW50RmFjdG9yeSAqIGZh
Y3QsCi0gICAgIGNvbnN0IGdjaGFyICoqIHN5c3RlbV9pZGVudGlmaWVycykKLWRpZmYgLS1naXQg
YS9nc3QvZ3N0cHJvdGVjdGlvbi5oIGIvZ3N0L2dzdHByb3RlY3Rpb24uaAotaW5kZXggZjJmNTRj
NC4uOTU5NzZjNSAxMDA2NDQKLS0tLSBhL2dzdC9nc3Rwcm90ZWN0aW9uLmgKLSsrKyBiL2dzdC9n
c3Rwcm90ZWN0aW9uLmgKLUBAIC02Niw2ICs2Niw4IEBAIEdzdFByb3RlY3Rpb25NZXRhICpnc3Rf
YnVmZmVyX2FkZF9wcm90ZWN0aW9uX21ldGEgKEdzdEJ1ZmZlciAqIGJ1ZmZlciwKLSAgICAgR3N0
U3RydWN0dXJlICogaW5mbyk7Ci0gCi0gY29uc3QgZ2NoYXIgKmdzdF9wcm90ZWN0aW9uX3NlbGVj
dF9zeXN0ZW0gKGNvbnN0IGdjaGFyICoqIHN5c3RlbV9pZGVudGlmaWVycyk7Ci0rZ2NoYXIgKiog
Z3N0X3Byb3RlY3Rpb25fZmlsdGVyX3N5c3RlbXNfYnlfYXZhaWxhYmxlX2RlY3J5cHRvcnMgKAot
KyAgICBjb25zdCBnY2hhciAqKiBzeXN0ZW1faWRlbnRpZmllcnMpOwotIAotIEdfRU5EX0RFQ0xT
Ci0gI2VuZGlmIC8qIF9fR1NUX1BST1RFQ1RJT05fTUVUQV9IX18gKi8KLS0tIAotMi4xMC4yCi0K
</data>

          </attachment>
      

    </bug>

</bugzilla>