<?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>257174</bug_id>
          
          <creation_ts>2023-05-22 18:26:32 -0700</creation_ts>
          <short_desc>REGRESSION(264265@main): 0.7% iOS RAMification regression</short_desc>
          <delta_ts>2023-05-23 09:33:21 -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>
          
          <blocked>256744</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>justin_michaud</cc>
    
    <cc>mark.lam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1957188</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-05-22 18:26:32 -0700</bug_when>
    <thetext>https://commits.webkit.org/264265@main introduced a regression:
0.7% iOS RAMification regression

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1957190</commentid>
    <comment_count>1</comment_count>
      <attachid>466456</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-05-22 18:26:37 -0700</bug_when>
    <thetext>Created attachment 466456
REVERT of 264265@main

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1957191</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-05-22 18:30:46 -0700</bug_when>
    <thetext>Committed 264392@main (73dd0916a142): &lt;https://commits.webkit.org/264392@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 466456.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1957192</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-05-22 18:31:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/109690260&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1957349</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2023-05-23 09:33:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/109667717&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466456</attachid>
            <date>2023-05-22 18:26:37 -0700</date>
            <delta_ts>2023-05-22 18:30:46 -0700</delta_ts>
            <desc>REVERT of 264265@main</desc>
            <filename>bug-257174-20230523012636.patch</filename>
            <type>text/plain</type>
            <size>120326</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSBjZGYxZjI0MTYwZWQ1YmExNTQwMWQzY2Y4MDEwZjYxNTdkODE4NDVhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBUdWUsIDIzIE1heSAyMDIzIDAxOjI2OjM1ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDI2NDI2NUBtYWluLgogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI1NzE3NAoKMC43JSBpT1MgUkFNaWZpY2F0aW9uIHJlZ3Jlc3Np
b24KClJldmVydGVkIGNoYW5nZXNldDoKCiJSZW1vdmUgc3RhdGljIHN0cmluZ3MgYW5kIHN5bWJv
bHMiCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTY3NDQKaHR0cHM6
Ly9jb21taXRzLndlYmtpdC5vcmcvMjY0MjY1QG1haW4KLS0tCiAuLi4vYnVpbHRpbnMvQnVpbHRp
bkV4ZWN1dGFibGVzLmNwcCAgICAgICAgICAgfCAgIDcgKy0KIC4uLi9idWlsdGlucy9CdWlsdGlu
RXhlY3V0YWJsZXMuaCAgICAgICAgICAgICB8ICAgMiAtCiAuLi4vSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmNwcCAgfCAgNDMgKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaCB8ICAxMiArLQogLi4uL3J1bnRpbWUvSW5pdGlhbGl6
ZVRocmVhZGluZy5jcHAgICAgICAgICAgIHwgICAzIC0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmggICAgICB8ICAgOSArLQogLi4uL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU21hbGxTdHJpbmdzLmNwcCAgIHwgICA3IC0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NtYWxsU3RyaW5ncy5oICB8ICAyNSAtLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcCAgICAgICAgICB8ICAgMyArLQogU291cmNlL1dURi93dGYvQ29tcGFjdFB0ci5o
ICAgICAgICAgICAgICAgICAgIHwgIDIxICsrLQogU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNw
cCAgICAgICAgICAgICAgICAgIHwgICAyIC0KIFNvdXJjZS9XVEYvd3RmL1VSTC5jcHAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAxMSArLQogU291cmNlL1dURi93dGYvc3BpL2NvY29hL01hY2hW
TVNQSS5oICAgICAgICAgIHwgIDE1IC0tCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcu
Y3BwICAgICAgICAgICAgfCAgMTMgKy0KIFNvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5o
ICAgICAgICAgICAgICB8ICAyNSArKy0KIFNvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0lt
cGwuY3BwICAgICAgICB8ICAgNyArCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmdJbXBs
LmggICAgICAgICAgfCAgMTcgKysKIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAg
ICAgICAgICAgICB8ICAxOCArLQogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggICAg
ICAgICAgICAgIHwgMTU0ICsrKysrKysrKysrLS0tLS0tLQogU291cmNlL1dURi93dGYvdGV4dC9T
eW1ib2xJbXBsLmNwcCAgICAgICAgICAgIHwgIDE3IC0tCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N5
bWJvbEltcGwuaCAgICAgICAgICAgICAgfCAgNTUgKysrKysrLQogU291cmNlL1dURi93dGYvdGV4
dC9VbmlxdWVkU3RyaW5nSW1wbC5oICAgICAgIHwgIDE3ICsrCiBTb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5jcHAgICAgICAgICAgICAgfCAgMTYgKy0KIFNvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmggICAgICAgICAgICAgICB8ICAzMiArKystCiAuLi4vV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL1N0YXRpY1N0cmluZy5wbSAgfCAgMTUgKy0KIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNldC5jcHAgICAgICAgICB8ICAgMiArLQogU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5jcHAgICAgICAgIHwgIDEyICstCiBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwICAgICAgICAgICAgICAgfCAgMTQgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25h
bWVzLnBsICAgICAgICAgICAgICB8ICA0MSArKy0tLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlRm9udHMuY3BwICAgIHwgICAyICstCiAuLi4vV2ViQ29yZS9zdHlsZS9TdHlsZVJl
c29sdmVGb3JGb250UmF3LmNwcCAgfCAgIDIgKy0KIC4uLi9Db2NvYS9YUENTZXJ2aWNlL1hQQ1Nl
cnZpY2VNYWluLm1tICAgICAgICB8ICAxMiArLQogLi4uL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cmVmZXJlbmNlcy5tbSAgICAgIHwgICA0IC0KIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0pTT05WYWx1ZS5jcHAgICB8ICAgOCArCiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdJbXBsLmNwcCAgfCAgMjEgKystCiAuLi4vVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5j
cHAgICAgICAgICAgICAgfCAgMzEgKy0tLQogLi4uL1Rlc3RzL1dlYkNvcmUvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQuY3BwIHwgIDM0ICstLS0KIC4uLi9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tICB8IDEzMCArKystLS0tLS0tLS0tLS0KIDQwIGZpbGVzIGNoYW5nZWQs
IDM5MyBpbnNlcnRpb25zKCspLCA0NzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCBhMmE2
YjMwMjMxZmUuLjhlMjYyYTlhZGEzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNp
bmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgog
I2luY2x1ZGUgIlBhcnNlci5oIgotI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ4LDEwICs0Nywx
MiBAQCBTb3VyY2VDb2RlIEJ1aWx0aW5FeGVjdXRhYmxlczo6ZGVmYXVsdENvbnN0cnVjdG9yU291
cmNlQ29kZShDb25zdHJ1Y3RvcktpbmQgY29ucwogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpO
YWtlZDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb25zdHJ1Y3RvcktpbmQ6OkJhc2U6IHsK
LSAgICAgICAgcmV0dXJuIG1ha2VTb3VyY2UoeyBTbWFsbFN0cmluZzo6YmFzZUNvbnN0cnVjdG9y
U3RyaW5nKCkgfSwgeyB9KTsKKyAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0
cmluZz4gYmFzZUNvbnN0cnVjdG9yQ29kZShNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiKGZ1bmN0
aW9uICgpIHsgfSkiKSk7CisgICAgICAgIHJldHVybiBtYWtlU291cmNlKGJhc2VDb25zdHJ1Y3Rv
ckNvZGUsIHsgfSk7CiAgICAgfQogICAgIGNhc2UgQ29uc3RydWN0b3JLaW5kOjpFeHRlbmRzOiB7
Ci0gICAgICAgIHJldHVybiBtYWtlU291cmNlKHsgU21hbGxTdHJpbmc6OmRlcml2ZWRDb25zdHJ1
Y3RvclN0cmluZygpIH0sIHsgfSk7CisgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBTdHJpbmc+IGRlcml2ZWRDb25zdHJ1Y3RvckNvZGUoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwo
IihmdW5jdGlvbiAoLi4uYXJncykgeyBzdXBlciguLi5hcmdzKTsgfSkiKSk7CisgICAgICAgIHJl
dHVybiBtYWtlU291cmNlKGRlcml2ZWRDb25zdHJ1Y3RvckNvZGUsIHsgfSk7CiAgICAgfQogICAg
IH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCmluZGV4IDViMTU4ZGQ5
Zjk1My4uYzlmMzZhYTc1ZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5oCkBAIC0zMiw4ICszMiw2IEBACiAjaW5jbHVkZSAi
V2Vhay5oIgogI2luY2x1ZGUgIldlYWtIYW5kbGVPd25lci5oIgogCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSW1wbC5oPgotCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvQnVpbHRpbk5hbWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWls
dGluTmFtZXMuY3BwCmluZGV4IDUwMzc4MzdhYjVhOS4uYjhiNGZkMjkwOWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmNwcApAQCAtMzcsNDcg
KzM3LDMwIEBACiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBTeW1ib2xzIHsKIAotI2RlZmlu
ZSBERUZJTkVfQlVJTFRJTl9TVEFUSUNfU1lNQk9MUyhuYW1lKSBMYXp5TmV2ZXJEZXN0cm95ZWQ8
U3ltYm9sSW1wbCo+IG5hbWUjI1N5bWJvbDsKLSAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJ
RklFUlNfRUFDSF9XRUxMX0tOT1dOX1NZTUJPTChERUZJTkVfQlVJTFRJTl9TVEFUSUNfU1lNQk9M
UykKLSN1bmRlZiBERUZJTkVfQlVJTFRJTl9TVEFUSUNfU1lNQk9MUwotCi1MYXp5TmV2ZXJEZXN0
cm95ZWQ8U3ltYm9sSW1wbCo+IGludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbDsKLQotI2RlZmlu
ZSBERUZJTkVfQlVJTFRJTl9QUklWQVRFX05BTUVTKG5hbWUpIExhenlOZXZlckRlc3Ryb3llZDxT
eW1ib2xJbXBsKj4gbmFtZSMjUHJpdmF0ZU5hbWU7Ci0gICAgSlNDX0ZPUkVBQ0hfQlVJTFRJTl9G
VU5DVElPTl9OQU1FKERFRklORV9CVUlMVElOX1BSSVZBVEVfTkFNRVMpCi0gICAgSlNDX0NPTU1P
Tl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShERUZJTkVfQlVJTFRJTl9Q
UklWQVRFX05BTUVTKQotI3VuZGVmIERFRklORV9CVUlMVElOX1BSSVZBVEVfTkFNRVMKLQotTGF6
eU5ldmVyRGVzdHJveWVkPFN5bWJvbEltcGwqPiBkb2xsYXJWTVByaXZhdGVOYW1lOwotTGF6eU5l
dmVyRGVzdHJveWVkPFN5bWJvbEltcGwqPiBwb2x5UHJvdG9Qcml2YXRlTmFtZTsKLQotdm9pZCBp
bml0aWFsaXplU3RhdGljU3ltYm9scygpCi17Ci0jZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9T
VEFUSUNfU1lNQk9MUyhuYW1lKSBuYW1lIyNTeW1ib2wuY29uc3RydWN0KCZTeW1ib2xJbXBsOjpj
cmVhdGVTdGF0aWMoIlN5bWJvbC4iICNuYW1lLCBzaXplb2YoIlN5bWJvbC4iICNuYW1lKSAvIHNp
emVvZihjaGFyKSAtIDEpLmxlYWtSZWYoKSk7Ci0gICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5U
SUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woSU5JVElBTElaRV9CVUlMVElOX1NUQVRJQ19T
WU1CT0xTKQorI2RlZmluZSBJTklUSUFMSVpFX0JVSUxUSU5fU1RBVElDX1NZTUJPTFMobmFtZSkg
U3ltYm9sSW1wbDo6U3RhdGljU3ltYm9sSW1wbCBuYW1lIyNTeW1ib2wgeyAiU3ltYm9sLiIgI25h
bWUgfTsKK0pTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lN
Qk9MKElOSVRJQUxJWkVfQlVJTFRJTl9TVEFUSUNfU1lNQk9MUykKICN1bmRlZiBJTklUSUFMSVpF
X0JVSUxUSU5fU1RBVElDX1NZTUJPTFMKIAotICAgIGludGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJv
bC5jb25zdHJ1Y3QoJlN5bWJvbEltcGw6OmNyZWF0ZVN0YXRpYygiSW50bExlZ2FjeUNvbnN0cnVj
dGVkU3ltYm9sIiwgc2l6ZW9mKCJJbnRsTGVnYWN5Q29uc3RydWN0ZWRTeW1ib2wiKSAvIHNpemVv
ZihjaGFyKSAtIDEpLmxlYWtSZWYoKSk7CitTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBsIGlu
dGxMZWdhY3lDb25zdHJ1Y3RlZFN5bWJvbCB7ICJJbnRsTGVnYWN5Q29uc3RydWN0ZWRTeW1ib2wi
IH07CiAKLSNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1BSSVZBVEVfTkFNRVMobmFtZSkgbmFt
ZSMjUHJpdmF0ZU5hbWUuY29uc3RydWN0KCZQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlU3RhdGlj
KCNuYW1lLCBzaXplb2YoI25hbWUpIC8gc2l6ZW9mKGNoYXIpIC0gMSkubGVha1JlZigpKTsKLSAg
ICBKU0NfRk9SRUFDSF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9CVUlMVElOX1BS
SVZBVEVfTkFNRVMpCi0gICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJP
UEVSVFlfTkFNRShJTklUSUFMSVpFX0JVSUxUSU5fUFJJVkFURV9OQU1FUykKKyNkZWZpbmUgSU5J
VElBTElaRV9CVUlMVElOX1BSSVZBVEVfTkFNRVMobmFtZSkgU3ltYm9sSW1wbDo6U3RhdGljU3lt
Ym9sSW1wbCBuYW1lIyNQcml2YXRlTmFtZSB7ICNuYW1lLCBTeW1ib2xJbXBsOjpzX2ZsYWdJc1By
aXZhdGUgfTsKK0pTQ19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklUSUFMSVpFX0JV
SUxUSU5fUFJJVkFURV9OQU1FUykKK0pTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNI
X1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9CVUlMVElOX1BSSVZBVEVfTkFNRVMpCiAjdW5kZWYg
SU5JVElBTElaRV9CVUlMVElOX1BSSVZBVEVfTkFNRVMKIAotICAgIGRvbGxhclZNUHJpdmF0ZU5h
bWUuY29uc3RydWN0KCZQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlU3RhdGljKCIkdm0iLCAiJHZt
Il9zLmxlbmd0aCgpKS5sZWFrUmVmKCkpOwotICAgIHBvbHlQcm90b1ByaXZhdGVOYW1lLmNvbnN0
cnVjdCgmUHJpdmF0ZVN5bWJvbEltcGw6OmNyZWF0ZVN0YXRpYygiUG9seVByb3RvIiwgICJQb2x5
UHJvdG8iX3MubGVuZ3RoKCkpLmxlYWtSZWYoKSk7Ci19CitTeW1ib2xJbXBsOjpTdGF0aWNTeW1i
b2xJbXBsIGRvbGxhclZNUHJpdmF0ZU5hbWUgeyAiJHZtIiwgU3ltYm9sSW1wbDo6c19mbGFnSXNQ
cml2YXRlIH07CitTeW1ib2xJbXBsOjpTdGF0aWNTeW1ib2xJbXBsIHBvbHlQcm90b1ByaXZhdGVO
YW1lIHsgIlBvbHlQcm90byIsIFN5bWJvbEltcGw6OnNfZmxhZ0lzUHJpdmF0ZSB9OwogCiB9IC8v
IG5hbWVzcGFjZSBTeW1ib2xzCiAKICNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX05BTUVTX0lO
X0pTQyhuYW1lKSAsIG1fIyNuYW1lKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25h
bWUgIiJfcykpCiAjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TWU1CT0xTX0lOX0pTQyhuYW1l
KSBcCi0gICAgLCBtXyMjbmFtZSMjU3ltYm9sKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
SlNDOjpTeW1ib2xzOjpuYW1lIyNTeW1ib2wuZ2V0KCkpKSBcCisgICAgLCBtXyMjbmFtZSMjU3lt
Ym9sKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgJnN0YXRpY19jYXN0PFN5bWJvbEltcGwm
PihKU0M6OlN5bWJvbHM6Om5hbWUjI1N5bWJvbCkpKSBcCiAgICAgLCBtXyMjbmFtZSMjU3ltYm9s
UHJpdmF0ZUlkZW50aWZpZXIoSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAjbmFtZSAi
Il9zKSkKIAogI2RlZmluZSBJTklUSUFMSVpFX1BVQkxJQ19UT19QUklWQVRFX0VOVFJZKG5hbWUp
IFwKICAgICBkbyB7IFwKLSAgICAgICAgU3ltYm9sSW1wbCogc3ltYm9sID0gSlNDOjpTeW1ib2xz
OjpuYW1lIyNQcml2YXRlTmFtZS5nZXQoKTsgXAorICAgICAgICBTeW1ib2xJbXBsKiBzeW1ib2wg
PSAmc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KEpTQzo6U3ltYm9sczo6bmFtZSMjUHJpdmF0ZU5h
bWUpOyBcCiAgICAgICAgIGNoZWNrUHVibGljVG9Qcml2YXRlTWFwQ29uc2lzdGVuY3koc3ltYm9s
KTsgXAogICAgICAgICBtX3ByaXZhdGVOYW1lU2V0LmFkZChzeW1ib2wpOyBcCiAgICAgfSB3aGls
ZSAoMCk7CkBAIC05NSwxMCArNzgsMTAgQEAgQnVpbHRpbk5hbWVzOjpCdWlsdGluTmFtZXMoVk0m
IHZtLCBDb21tb25JZGVudGlmaWVycyogY29tbW9uSWRlbnRpZmllcnMpCiAgICAgSlNDX0ZPUkVB
Q0hfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FU19JTl9KU0Mp
CiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJ
TklUSUFMSVpFX0JVSUxUSU5fTkFNRVNfSU5fSlNDKQogICAgIEpTQ19DT01NT05fUFJJVkFURV9J
REVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9MKElOSVRJQUxJWkVfQlVJTFRJTl9TWU1C
T0xTX0lOX0pTQykKLSAgICAsIG1faW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sKEpTQzo6SWRl
bnRpZmllcjo6ZnJvbVVpZCh2bSwgU3ltYm9sczo6aW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9s
LmdldCgpKSkKKyAgICAsIG1faW50bExlZ2FjeUNvbnN0cnVjdGVkU3ltYm9sKEpTQzo6SWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgJnN0YXRpY19jYXN0PFN5bWJvbEltcGwmPihTeW1ib2xzOjppbnRs
TGVnYWN5Q29uc3RydWN0ZWRTeW1ib2wpKSkKICAgICAsIG1fZG9sbGFyVk1OYW1lKElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICIkdm0iX3MpKQotICAgICwgbV9kb2xsYXJWTVByaXZhdGVOYW1l
KElkZW50aWZpZXI6OmZyb21VaWQodm0sIFN5bWJvbHM6OmRvbGxhclZNUHJpdmF0ZU5hbWUuZ2V0
KCkpKQotICAgICwgbV9wb2x5UHJvdG9Qcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9tVWlkKHZt
LCBTeW1ib2xzOjpwb2x5UHJvdG9Qcml2YXRlTmFtZS5nZXQoKSkpCisgICAgLCBtX2RvbGxhclZN
UHJpdmF0ZU5hbWUoSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgJnN0YXRpY19jYXN0PFN5bWJvbElt
cGwmPihTeW1ib2xzOjpkb2xsYXJWTVByaXZhdGVOYW1lKSkpCisgICAgLCBtX3BvbHlQcm90b1By
aXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQodm0sICZzdGF0aWNfY2FzdDxTeW1ib2xJbXBs
Jj4oU3ltYm9sczo6cG9seVByb3RvUHJpdmF0ZU5hbWUpKSkKIHsKICAgICBKU0NfRk9SRUFDSF9C
VUlMVElOX0ZVTkNUSU9OX05BTUUoSU5JVElBTElaRV9QVUJMSUNfVE9fUFJJVkFURV9FTlRSWSkK
ICAgICBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElO
SVRJQUxJWkVfUFVCTElDX1RPX1BSSVZBVEVfRU5UUlkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgKaW5kZXggZDc2YjdhMDg3MTEyLi43MTVmNzI5YjQ0
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluTmFt
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgK
QEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY29uc3QgSlNDOjpJZGVudGlm
aWVyJiBuYW1lIyNTeW1ib2woKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU3ltYm9sOyB9CiAj
ZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SX0lOX0pTQyhuYW1lKSBc
CiAgICAgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV8jI25hbWU7IH0gXAotICAgIEpTQzo6SWRlbnRpZmllciBuYW1lIyNQcml2YXRlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVVpZCgqSlNDOjpTeW1ib2xz
OjpuYW1lIyNQcml2YXRlTmFtZS5nZXQoKSk7IH0KKyAgICBKU0M6OklkZW50aWZpZXIgbmFtZSMj
UHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBKU0M6OklkZW50aWZpZXI6OmZyb21VaWQoKmJp
dHdpc2VfY2FzdDxTeW1ib2xJbXBsKj4oJkpTQzo6U3ltYm9sczo6bmFtZSMjUHJpdmF0ZU5hbWUp
KTsgfQogCiAKICNkZWZpbmUgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJP
UEVSVFlfTkFNRShtYWNybykgXApAQCAtMjE1LDE5ICsyMTUsMTcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKIAogbmFtZXNwYWNlIFN5bWJvbHMgewotI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU1RBVElD
X1NZTUJPTFMobmFtZSkgZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIExhenlOZXZlckRlc3Ryb3ll
ZDxTeW1ib2xJbXBsKj4gbmFtZSMjU3ltYm9sOworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU1RB
VElDX1NZTUJPTFMobmFtZSkgZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJvbEltcGw6OlN0
YXRpY1N5bWJvbEltcGwgbmFtZSMjU3ltYm9sOwogSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJ
RVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0woREVDTEFSRV9CVUlMVElOX1NUQVRJQ19TWU1CT0xT
KQogI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TVEFUSUNfU1lNQk9MUwogCi0jZGVmaW5lIERFQ0xB
UkVfQlVJTFRJTl9QUklWQVRFX05BTUVTKG5hbWUpIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBM
YXp5TmV2ZXJEZXN0cm95ZWQ8U3ltYm9sSW1wbCo+IG5hbWUjI1ByaXZhdGVOYW1lOworI2RlZmlu
ZSBERUNMQVJFX0JVSUxUSU5fUFJJVkFURV9OQU1FUyhuYW1lKSBleHRlcm4gSlNfRVhQT1JUX1BS
SVZBVEUgU3ltYm9sSW1wbDo6U3RhdGljU3ltYm9sSW1wbCBuYW1lIyNQcml2YXRlTmFtZTsKIEpT
Q19GT1JFQUNIX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fUFJJVkFURV9O
QU1FUykKIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUo
REVDTEFSRV9CVUlMVElOX1BSSVZBVEVfTkFNRVMpCiAjdW5kZWYgREVDTEFSRV9CVUlMVElOX1BS
SVZBVEVfTkFNRVMKIAotZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIExhenlOZXZlckRlc3Ryb3ll
ZDxTeW1ib2xJbXBsKj4gZG9sbGFyVk1Qcml2YXRlTmFtZTsKLWV4dGVybiBKU19FWFBPUlRfUFJJ
VkFURSBMYXp5TmV2ZXJEZXN0cm95ZWQ8U3ltYm9sSW1wbCo+IHBvbHlQcm90b1ByaXZhdGVOYW1l
OwotCi1KU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXRpYWxpemVTdGF0aWNTeW1ib2xzKCk7Citl
eHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgU3ltYm9sSW1wbDo6U3RhdGljU3ltYm9sSW1wbCBkb2xs
YXJWTVByaXZhdGVOYW1lOworZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIFN5bWJvbEltcGw6OlN0
YXRpY1N5bWJvbEltcGwgcG9seVByb3RvUHJpdmF0ZU5hbWU7CiB9CiAKIGNsYXNzIEJ1aWx0aW5O
YW1lcyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFs
aXplVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxp
emVUaHJlYWRpbmcuY3BwCmluZGV4IGQ2ODZiMGExOTA2ZS4uMjk1NGE5NWI3MDhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5n
LmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIK
IAogI2luY2x1ZGUgIkFzc2VtYmx5Q29tbWVudHMuaCIKLSNpbmNsdWRlICJCdWlsdGluTmFtZXMu
aCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSklUT3BlcmF0
aW9uTGlzdC5oIgogI2luY2x1ZGUgIkpTQ0NvbmZpZy5oIgpAQCAtOTIsOCArOTEsNiBAQCB2b2lk
IGluaXRpYWxpemUoKQogICAgICAgICAgICAgU3RydWN0dXJlQWxpZ25lZE1lbW9yeUFsbG9jYXRv
cjo6aW5pdGlhbGl6ZVN0cnVjdHVyZUFkZHJlc3NTcGFjZSgpOwogICAgICAgICB9CiAgICAgICAg
IE9wdGlvbnM6OmZpbmFsaXplKCk7Ci0gICAgICAgIFNtYWxsU3RyaW5nOjppbml0aWFsaXplSlNT
dGF0aWNTdHJpbmdzKCk7Ci0gICAgICAgIFN5bWJvbHM6OmluaXRpYWxpemVTdGF0aWNTeW1ib2xz
KCk7CiAKICNpZiAhVVNFKFNZU1RFTV9NQUxMT0MpCiAjaWYgQlVTRShMSUJQQVMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCA5ZWNjN2RiODZlMjIuLjdkNGI3
NGMwMjJjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCkBAIC05
MiwxMCArOTIsNyBAQCBKU1N0cmluZyogYXNTdHJpbmcoSlNWYWx1ZSk7CiAvLyBKU1JvcGVTdHJp
bmcgWyAgIElEICAgICAgXVsgIGhlYWRlciAgXVsgICAxc3QgZmliZXIgICAgICAgICB4eXpdWyAg
bGVuZ3RoICBdWzJuZCBsb3dlcjMyXVsybmQgdXBwZXIxNl1bM3JkIGxvd2VyMTZdWzNyZCB1cHBl
cjMyXQogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBeCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeDooaXM4Qml0KSx5Oihpc1N1YnN0cmluZyksejooaXNSb3BlKSBiaXQgZmxhZ3MKLQot
Y2xhc3MgYWxpZ25hcygxNikgSlNTdHJpbmcgOiBwdWJsaWMgSlNDZWxsIHsKLSAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShKU1N0cmluZyk7Ci0gICAgV1RGX01BS0VfTk9OTU9WQUJMRShKU1N0cmlu
Zyk7CitjbGFzcyBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CiAgICAgZnJpZW5kIGNsYXNzIFZNOwpAQCAtMTEyLDggKzEwOSw2IEBAIHB1
YmxpYzoKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMjk1OAogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IElu
dGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8g
fCBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgT3ZlcnJpZGVzVG9UaGlzIHwgT3ZlcnJpZGVzUHV0Owog
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IG51bWJlck9mTG93ZXJUaWVyQ2VsbHMgPSAw
OwotCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwog
ICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZGVzdHJveShKU0NlbGwqIGNlbGwpCiAgICAg
ewpAQCAtMjk2LDggKzI5MSw2IEBAIHByaXZhdGU6CiAvLyBmcm9tIEpTU3RyaW5nU3Vic3BhY2U6
OgogY2xhc3MgSlNSb3BlU3RyaW5nIGZpbmFsIDogcHVibGljIEpTU3RyaW5nIHsKICAgICBmcmll
bmQgY2xhc3MgSlNTdHJpbmc7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNSb3BlU3RyaW5n
KTsKLSAgICBXVEZfTUFLRV9OT05NT1ZBQkxFKEpTUm9wZVN0cmluZyk7CiBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUsIFN1YnNwYWNlQWNjZXNzPgogICAgIHN0YXRpYyBHQ0NsaWVudDo6
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TbWFsbFN0cmluZ3MuY3BwCmluZGV4IDdiYjYxNjk5OTQwNi4uYjY4ZjNhYTc5
YmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5j
cHAKQEAgLTMxLDEzICszMSw2IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1uYW1lc3BhY2UgU21h
bGxTdHJpbmcgewotI2RlZmluZSBERUZJTkVfU1RBVElDX1NUUklOR19JTVBMKG5hbWUsIF8pIFwK
LSAgICBMYXp5TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nSW1wbCo+IHNfIyNuYW1lOwotRk9SRUFDSF9K
U19TVEFUSUNfU1RSSU5HX0lNUEwoREVGSU5FX1NUQVRJQ19TVFJJTkdfSU1QTCkKLSN1bmRlZiBE
RUZJTkVfU1RBVElDX1NUUklOR19JTVBMCi19OwotCiBTbWFsbFN0cmluZ3M6OlNtYWxsU3RyaW5n
cygpCiB7CiAgICAgc3RhdGljX2Fzc2VydChzaW5nbGVDaGFyYWN0ZXJTdHJpbmdDb3VudCA9PSBz
aXplb2YobV9zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKSAvIHNpemVvZihtX3NpbmdsZUNoYXJhY3Rl
clN0cmluZ3NbMF0pLCAiY2hhcmFjdGVycyBjb3VudCBpcyBpbiBzeW5jIHdpdGggY2xhc3MgdXNh
Z2UiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NtYWxsU3Ry
aW5ncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU21hbGxTdHJpbmdzLmgKaW5k
ZXggZTFmYWVkN2ZkZmZiLi43NmE3ODFiZDkyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NtYWxsU3RyaW5ncy5oCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQ29s
bGVjdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiVHlwZW9mVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogI2RlZmlu
ZSBKU0NfQ09NTU9OX1NUUklOR1NfRUFDSF9OQU1FKG1hY3JvKSBcCiAgICAgbWFjcm8oZGVmYXVs
dCkgXApAQCAtNTAsMzAgKzQ5LDYgQEAgY2xhc3MgU3RyaW5nSW1wbDsKIAogbmFtZXNwYWNlIEpT
QyB7CiAKLW5hbWVzcGFjZSBTbWFsbFN0cmluZyB7Ci0jZGVmaW5lIEZPUkVBQ0hfSlNfU1RBVElD
X1NUUklOR19JTVBMKG1hY3JvKSBcCi0gICAgbWFjcm8oYmFzZUNvbnN0cnVjdG9yU3RyaW5nLCAi
KGZ1bmN0aW9uICgpIHsgfSkiKSBcCi0gICAgbWFjcm8oZGVyaXZlZENvbnN0cnVjdG9yU3RyaW5n
LCAiKGZ1bmN0aW9uICguLi5hcmdzKSB7IHN1cGVyKC4uLmFyZ3MpOyB9KSIpIFwKLSAgICBtYWNy
byh0ZXJtaW5hdGlvbkVycm9yU3RyaW5nLCAiSmF2YVNjcmlwdCBleGVjdXRpb24gdGVybWluYXRl
ZC4iKQotCi0jZGVmaW5lIERFQ0xBUkVfU1RBVElDX1NUUklOR19JTVBMKG5hbWUsIGNoYXJhY3Rl
cnMpIFwKLSAgICBleHRlcm4gTGF6eU5ldmVyRGVzdHJveWVkPFN0cmluZ0ltcGwqPiBzXyMjbmFt
ZTsgXAotICAgIGlubGluZSBTdHJpbmdJbXBsKiBuYW1lKCkgXAotICAgIHsgXAotICAgICAgICBy
ZXR1cm4gc18jI25hbWUuZ2V0KCk7IFwKLSAgICB9Ci1GT1JFQUNIX0pTX1NUQVRJQ19TVFJJTkdf
SU1QTChERUNMQVJFX1NUQVRJQ19TVFJJTkdfSU1QTCkKLSN1bmRlZiBERUNMQVJFX1NUQVRJQ19T
VFJJTkdfSU1QTAotCi0jZGVmaW5lIElOSVRJQUxJWkVfU1RSSU5HKG5hbWUsIGNoYXJhY3RlcnMp
IFwKLSAgICBzXyMjbmFtZS5jb25zdHJ1Y3QoJlN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmlu
Z0ltcGxXaXRob3V0Q29weWluZyhjaGFyYWN0ZXJzICIiX3MsIChjaGFyYWN0ZXJzICIiX3MpLmxl
bmd0aCgpKS5sZWFrUmVmKCkpOwotaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUpTU3RhdGljU3RyaW5n
cygpCi17Ci0gICAgRk9SRUFDSF9KU19TVEFUSUNfU1RSSU5HX0lNUEwoSU5JVElBTElaRV9TVFJJ
TkcpCi19Ci0jdW5kZWYgSU5JVElBTElaRV9TVFJJTkcKLX0KLQogY2xhc3MgVk07CiBjbGFzcyBK
U1N0cmluZzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDZiMDhjNGZh
MjY2Yi4uZGE3OGMzMGViNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBA
IC01NzIsMTAgKzU3MiwxMSBAQCBTYW1wbGluZ1Byb2ZpbGVyJiBWTTo6ZW5zdXJlU2FtcGxpbmdQ
cm9maWxlcihSZWY8U3RvcHdhdGNoPiYmIHN0b3B3YXRjaCkKIH0KICNlbmRpZiAvLyBFTkFCTEUo
U0FNUExJTkdfUFJPRklMRVIpCiAKK3N0YXRpYyBTdHJpbmdJbXBsOjpTdGF0aWNTdHJpbmdJbXBs
IHRlcm1pbmF0aW9uRXJyb3JTdHJpbmcgeyAiSmF2YVNjcmlwdCBleGVjdXRpb24gdGVybWluYXRl
ZC4iIH07CiBFeGNlcHRpb24qIFZNOjplbnN1cmVUZXJtaW5hdGlvbkV4Y2VwdGlvbigpCiB7CiAg
ICAgaWYgKCFtX3Rlcm1pbmF0aW9uRXhjZXB0aW9uKSB7Ci0gICAgICAgIEpTU3RyaW5nKiB0ZXJt
aW5hdGlvbkVycm9yID0ganNOb250cml2aWFsU3RyaW5nKCp0aGlzLCBTbWFsbFN0cmluZzo6dGVy
bWluYXRpb25FcnJvclN0cmluZygpKTsKKyAgICAgICAgSlNTdHJpbmcqIHRlcm1pbmF0aW9uRXJy
b3IgPSBqc05vbnRyaXZpYWxTdHJpbmcoKnRoaXMsIHRlcm1pbmF0aW9uRXJyb3JTdHJpbmcpOwog
ICAgICAgICBtX3Rlcm1pbmF0aW9uRXhjZXB0aW9uID0gRXhjZXB0aW9uOjpjcmVhdGUoKnRoaXMs
IHRlcm1pbmF0aW9uRXJyb3IsIEV4Y2VwdGlvbjo6RG9Ob3RDYXB0dXJlU3RhY2spOwogICAgIH0K
ICAgICByZXR1cm4gbV90ZXJtaW5hdGlvbkV4Y2VwdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0NvbXBhY3RQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL0NvbXBhY3RQdHIuaAppbmRleCAw
ODI4YjhmMzgwNDIuLjM4YmU3ODY2ZDU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ29t
cGFjdFB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvbXBhY3RQdHIuaApAQCAtMzMsOCArMzMs
MjAgQEAKICNpbmNsdWRlIDx3dGYvUmF3UHRyVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCisjaWYgT1MoREFSV0lOKQorI2luY2x1ZGUgPG1hY2gvdm1fcGFyYW0uaD4K
KyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAorI2lmIENQVShBRERSRVNTNjQpCisjaWYgQ1BV
KEFSTTY0KSAmJiBPUyhEQVJXSU4pCisjaWYgTUFDSF9WTV9NQVhfQUREUkVTU19SQVcgPCAoMVVM
TCA8PCAzNikKKyNkZWZpbmUgSEFWRV8zNkJJVF9BRERSRVNTIDEKKyNlbmRpZgorI2VuZGlmCisj
ZW5kaWYgLy8gQ1BVKEFERFJFU1M2NCkKKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBD
b21wYWN0UHRyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTE5NSwxNCArMjA3
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYS5tX3B0ciA9PSBiLm1fcHRyOwogICAgIH0K
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBDb21wYWN0UHRyJiBhLCBjb25zdCBDb21wYWN0UHRyPFU+JiBiKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGEubV9wdHIgIT0gYi5tX3B0cjsKLSAgICB9Ci0KLSAgICBjb25zdCBTdG9yYWdl
VHlwZSYgc3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHRyOyB9Ci0gICAgU3RvcmFnZVR5cGUm
IHN0b3JhZ2UoKSB7IHJldHVybiBtX3B0cjsgfQorICAgIFN0b3JhZ2VUeXBlIHN0b3JhZ2UoKSBj
b25zdCB7IHJldHVybiBtX3B0cjsgfQogCiBwcml2YXRlOgogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBYPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggZTU1MmI1OGJiZTA0Li4wOWM0Nzk3YWY4NmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvVGhyZWFkaW5nLmNwcApAQCAtNDcyLDggKzQ3Miw2IEBAIHZvaWQgaW5pdGlhbGl6ZSgpCiAg
ICAgICAgIHNldFBlcm1pc3Npb25zT2ZDb25maWdQYWdlKCk7CiAgICAgICAgIENvbmZpZzo6aW5p
dGlhbGl6ZSgpOwogICAgICAgICBHaWdhY2FnZTo6ZW5zdXJlR2lnYWNhZ2UoKTsKLSAgICAgICAg
U3RyaW5nOjppbml0aWFsaXplU3RyaW5ncygpOwotICAgICAgICBBdG9tU3RyaW5nOjppbml0aWFs
aXplU3RyaW5ncygpOwogICAgICAgICBDb25maWc6OkFzc2VydE5vdEZyb3plblNjb3BlIGFzc2Vy
dFNjb3BlOwogI2lmICFIQVZFKEZBU1RfVExTKSAmJiAhT1MoV0lORE9XUykKICAgICAgICAgVGhy
ZWFkOjppbml0aWFsaXplVExTS2V5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwu
Y3BwIGIvU291cmNlL1dURi93dGYvVVJMLmNwcAppbmRleCA2Njk5ODYyYTRkNDguLjFlZTRiYTY5
YjIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9VUkwuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKQEAgLTk0MywyNiArOTQyLDI0IEBAIGJvb2wgcHJvdG9j
b2xJc0luSFRUUEZhbWlseShTdHJpbmdWaWV3IHVybCkKIH0KIAogCitzdGF0aWMgU3RhdGljU3Ry
aW5nSW1wbCBhYm91dEJsYW5rU3RyaW5nIHsgImFib3V0OmJsYW5rIiB9OwogY29uc3QgVVJMJiBh
Ym91dEJsYW5rVVJMKCkKIHsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFN0cmluZ0lt
cGwqPiBhYm91dEJsYW5rU3RyaW5nOwogICAgIHN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8VVJM
PiBzdGF0aWNCbGFua1VSTDsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CiAg
ICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFsmXSB7Ci0gICAgICAgIGFib3V0QmxhbmtTdHJp
bmcuY29uc3RydWN0KCZTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsV2l0aG91dENv
cHlpbmcoImFib3V0OmJsYW5rIiwgImFib3V0OmJsYW5rIl9zLmxlbmd0aCgpKS5sZWFrUmVmKCkp
OwotICAgICAgICBzdGF0aWNCbGFua1VSTC5jb25zdHJ1Y3QoYWJvdXRCbGFua1N0cmluZy5nZXQo
KSk7CisgICAgICAgIHN0YXRpY0JsYW5rVVJMLmNvbnN0cnVjdCgmYWJvdXRCbGFua1N0cmluZyk7
CiAgICAgfSk7CiAgICAgcmV0dXJuIHN0YXRpY0JsYW5rVVJMOwogfQogCitzdGF0aWMgU3RhdGlj
U3RyaW5nSW1wbCBhYm91dFNyY0RvY1N0cmluZyB7ICJhYm91dDpzcmNkb2MiIH07CiBjb25zdCBV
UkwmIGFib3V0U3JjRG9jVVJMKCkKIHsKLSAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVkPFN0
cmluZ0ltcGwqPiBhYm91dFNyY0RvY1N0cmluZzsKICAgICBzdGF0aWMgTGF6eU5ldmVyRGVzdHJv
eWVkPFVSTD4gc3RhdGljU3JjRG9jVVJMOwogICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBvbmNl
RmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgWyZdIHsKLSAgICAgICAgYWJvdXRT
cmNEb2NTdHJpbmcuY29uc3RydWN0KCZTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBs
V2l0aG91dENvcHlpbmcoImFib3V0OnNyY2RvYyIsICJhYm91dDpzcmNkb2MiX3MubGVuZ3RoKCkp
LmxlYWtSZWYoKSk7Ci0gICAgICAgIHN0YXRpY1NyY0RvY1VSTC5jb25zdHJ1Y3QoYWJvdXRTcmNE
b2NTdHJpbmcuZ2V0KCkpOworICAgICAgICBzdGF0aWNTcmNEb2NVUkwuY29uc3RydWN0KCZhYm91
dFNyY0RvY1N0cmluZyk7CiAgICAgfSk7CiAgICAgcmV0dXJuIHN0YXRpY1NyY0RvY1VSTDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9NYWNoVk1TUEkuaCBiL1NvdXJj
ZS9XVEYvd3RmL3NwaS9jb2NvYS9NYWNoVk1TUEkuaAppbmRleCA5ZGRiMjIyZmQ5Y2YuLjgzZDBj
NTA1MTk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvc3BpL2NvY29hL01hY2hWTVNQSS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9NYWNoVk1TUEkuaApAQCAtMzEsMjMgKzMx
LDggQEAKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNp
bmNsdWRlIDxtYWNoL21hY2hfdm0uaD4KLSNpbmNsdWRlIDxtYWNoL3ZtX3BhcmFtLmg+CiAjZW5k
aWYKIAotI2lmIENQVShBRERSRVNTNjQpCi0jaWYgQ1BVKEFSTTY0KSAmJiBPUyhEQVJXSU4pCi0j
aWYgTUFDSF9WTV9NQVhfQUREUkVTU19SQVcgPCAoMVVMTCA8PCAzNikKLSNkZWZpbmUgSEFWRV8z
NkJJVF9BRERSRVNTIDEKLSNlbHNlCi0jZGVmaW5lIEhBVkVfMzZCSVRfQUREUkVTUyAwCi0jZW5k
aWYgLy8gTUFDSF9WTV9NQVhfQUREUkVTU19SQVcgPCAoMVVMTCA8PCAzNikKLSNlbHNlCi0jZGVm
aW5lIEhBVkVfMzZCSVRfQUREUkVTUyAwCi0jZW5kaWYgLy8gQ1BVKEFSTTY0KSAmJiBPUyhEQVJX
SU4pCi0jZWxzZQotI2RlZmluZSBIQVZFXzM2QklUX0FERFJFU1MgMAotI2VuZGlmIC8vIENQVShB
RERSRVNTNjQpCi0KIFdURl9FWFRFUk5fQ19CRUdJTgogCiBrZXJuX3JldHVybl90IG1hY2hfdm1f
YWxsb2NhdGUodm1fbWFwX3QgdGFyZ2V0LCBtYWNoX3ZtX2FkZHJlc3NfdCosIG1hY2hfdm1fc2l6
ZV90LCBpbnQgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3Ry
aW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5jcHAKaW5kZXggMjdhMmVm
MjI3ZTllLi5jNzkyYzZhYWNjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bVN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmNwcApAQCAt
MzIsMTcgKzMyLDggQEAKIAogbmFtZXNwYWNlIFdURiB7CiAKLXN0YXRpYyBMYXp5TmV2ZXJEZXN0
cm95ZWQ8QXRvbVN0cmluZz4gc19lbXB0eUF0b207Ci1zdGF0aWMgTGF6eU5ldmVyRGVzdHJveWVk
PEF0b21TdHJpbmc+IHNfbnVsbEF0b207Ci0KLWNvbnN0IEF0b21TdHJpbmcmIG51bGxBdG9tKCkg
eyByZXR1cm4gc19udWxsQXRvbS5nZXQoKTsgfQotY29uc3QgQXRvbVN0cmluZyYgZW1wdHlBdG9t
KCkgeyByZXR1cm4gc19lbXB0eUF0b20uZ2V0KCk7IH0KLQotdm9pZCBBdG9tU3RyaW5nOjppbml0
aWFsaXplU3RyaW5ncygpCi17Ci0gICAgc19lbXB0eUF0b20uY29uc3RydWN0KFN0cmluZ0ltcGw6
OmVtcHR5KCkpOwotICAgIHNfbnVsbEF0b20uY29uc3RydWN0KHN0YXRpY19jYXN0PFN0cmluZ0lt
cGwqPihudWxscHRyKSk7Ci19Citjb25zdCBTdGF0aWNBdG9tU3RyaW5nIG51bGxBdG9tRGF0YSB7
IG51bGxwdHIgfTsKK2NvbnN0IFN0YXRpY0F0b21TdHJpbmcgZW1wdHlBdG9tRGF0YSB7ICZTdHJp
bmdJbXBsOjpzX2VtcHR5QXRvbVN0cmluZyB9OwogCiB0ZW1wbGF0ZTxBdG9tU3RyaW5nOjpDYXNl
Q29udmVydFR5cGUgdHlwZT4KIEFMV0FZU19JTkxJTkUgQXRvbVN0cmluZyBBdG9tU3RyaW5nOjpj
b252ZXJ0QVNDSUlDYXNlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbVN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKaW5kZXggOTk0
ZDlkZWZlMjgxLi40NmUyMjc2MGE4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbVN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCkBAIC0z
OCw2ICszOCw3IEBAIHB1YmxpYzoKICAgICBBdG9tU3RyaW5nKEF0b21TdHJpbmdJbXBsKik7CiAg
ICAgQXRvbVN0cmluZyhSZWZQdHI8QXRvbVN0cmluZ0ltcGw+JiYpOwogICAgIEF0b21TdHJpbmco
UmVmPEF0b21TdHJpbmdJbXBsPiYmKTsKKyAgICBBdG9tU3RyaW5nKGNvbnN0IFN0YXRpY1N0cmlu
Z0ltcGwqKTsKICAgICBBdG9tU3RyaW5nKFN0cmluZ0ltcGwqKTsKICAgICBleHBsaWNpdCBBdG9t
U3RyaW5nKGNvbnN0IFN0cmluZyYpOwogICAgIGV4cGxpY2l0IEF0b21TdHJpbmcoU3RyaW5nJiYp
OwpAQCAtMTQyLDkgKzE0Myw2IEBAIHByaXZhdGU6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBBdG9tU3RyaW5nIGZyb21VVEY4SW50ZXJuYWwoY29uc3QgY2hhciosIGNvbnN0IGNoYXIq
KTsKIAogICAgIFN0cmluZyBtX3N0cmluZzsKLQotcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemVTdHJpbmdzKCk7CiB9OwogCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihBdG9tU3RyaW5n
KSA9PSBzaXplb2YoU3RyaW5nKSwgIkF0b21TdHJpbmcgYW5kIFN0cmluZyBtdXN0IGJlIHRoZSBz
YW1lIHNpemUhIik7CkBAIC0yMDYsNiArMjA0LDExIEBAIGlubGluZSBBdG9tU3RyaW5nOjpBdG9t
U3RyaW5nKFN0cmluZ0ltcGwqIHN0cmluZykKIHsKIH0KIAoraW5saW5lIEF0b21TdHJpbmc6OkF0
b21TdHJpbmcoY29uc3QgU3RhdGljU3RyaW5nSW1wbCogc3RyaW5nKQorICAgIDogbV9zdHJpbmco
QXRvbVN0cmluZ0ltcGw6OmFkZChzdHJpbmcpKQoreworfQorCiBpbmxpbmUgQXRvbVN0cmluZzo6
QXRvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICA6IG1fc3RyaW5nKEF0b21TdHJp
bmdJbXBsOjphZGQoc3RyaW5nLmltcGwoKSkpCiB7CkBAIC0yNDQsOCArMjQ3LDIwIEBAIGlubGlu
ZSBBdG9tU3RyaW5nOjpBdG9tU3RyaW5nKE5TU3RyaW5nICpzdHJpbmcpCiAKICNlbmRpZgogCi1X
VEZfRVhQT1JUX1BSSVZBVEUgY29uc3QgQXRvbVN0cmluZyYgbnVsbEF0b20oKTsKLVdURl9FWFBP
UlRfUFJJVkFURSBjb25zdCBBdG9tU3RyaW5nJiBlbXB0eUF0b20oKTsKK3N0cnVjdCBTdGF0aWNB
dG9tU3RyaW5nIHsKKyAgICBjb25zdGV4cHIgU3RhdGljQXRvbVN0cmluZyhTdHJpbmdJbXBsOjpT
dGF0aWNTdHJpbmdJbXBsKiBwb2ludGVyKQorICAgICAgICA6IG1fcG9pbnRlcihwb2ludGVyKQor
ICAgIHsKKyAgICB9CisKKyAgICBTdHJpbmdJbXBsOjpTdGF0aWNTdHJpbmdJbXBsKiBtX3BvaW50
ZXI7Cit9Oworc3RhdGljX2Fzc2VydChzaXplb2YoQXRvbVN0cmluZykgPT0gc2l6ZW9mKFN0YXRp
Y0F0b21TdHJpbmcpLCAiQXRvbVN0cmluZyBhbmQgU3RhdGljQXRvbVN0cmluZyBtdXN0IGJlIHRo
ZSBzYW1lIHNpemUhIik7CitleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0IFN0YXRpY0F0
b21TdHJpbmcgbnVsbEF0b21EYXRhOworZXh0ZXJuIFdURl9FWFBPUlRfUFJJVkFURSBjb25zdCBT
dGF0aWNBdG9tU3RyaW5nIGVtcHR5QXRvbURhdGE7CisKK2lubGluZSBjb25zdCBBdG9tU3RyaW5n
JiBudWxsQXRvbSgpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IEF0b21TdHJpbmcq
PigmbnVsbEF0b21EYXRhKTsgfQoraW5saW5lIGNvbnN0IEF0b21TdHJpbmcmIGVtcHR5QXRvbSgp
IHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IEF0b21TdHJpbmcqPigmZW1wdHlBdG9t
RGF0YSk7IH0KIAogaW5saW5lIEF0b21TdHJpbmc6OkF0b21TdHJpbmcoQVNDSUlMaXRlcmFsIGxp
dGVyYWwpCiAgICAgOiBtX3N0cmluZyhsaXRlcmFsLmxlbmd0aCgpID8gQXRvbVN0cmluZ0ltcGw6
OmFkZChsaXRlcmFsLmNoYXJhY3RlcnMoKSwgbGl0ZXJhbC5sZW5ndGgoKSkgOiBSZWYgeyAqZW1w
dHlBdG9tKCkuaW1wbCgpIH0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21T
dHJpbmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuY3BwCmlu
ZGV4IDcwNjEyMjAzMjFlNC4uZTRiYjcwZDhiZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21TdHJpbmdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21T
dHJpbmdJbXBsLmNwcApAQCAtMzc0LDYgKzM3NCwxMyBAQCBzdGF0aWMgaW5saW5lIFJlZjxBdG9t
U3RyaW5nSW1wbD4gYWRkU3RhdGljKGNvbnN0IFN0cmluZ0ltcGwmIGJhc2UpCiAgICAgcmV0dXJu
IGFkZFN0YXRpYyhsb2NrZXIsIHN0cmluZ1RhYmxlKCksIGJhc2UpOwogfQogCitSZWZQdHI8QXRv
bVN0cmluZ0ltcGw+IEF0b21TdHJpbmdJbXBsOjphZGQoY29uc3QgU3RhdGljU3RyaW5nSW1wbCog
c3RyaW5nKQoreworICAgIGF1dG8gcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgU3RyaW5nSW1w
bCo+KHN0cmluZyk7CisgICAgQVNTRVJUKHMtPmlzU3RhdGljKCkpOworICAgIHJldHVybiBhZGRT
dGF0aWMoKnMpOworfQorCiBSZWY8QXRvbVN0cmluZ0ltcGw+IEF0b21TdHJpbmdJbXBsOjphZGRT
bG93Q2FzZShTdHJpbmdJbXBsJiBzdHJpbmcpCiB7CiAgICAgLy8gVGhpcyBjaGVjayBpcyBuZWNl
c3NhcnkgZm9yIG51bGwgc3ltYm9scy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbVN0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZ0ltcGwuaApp
bmRleCA3NGZiMzI3ZjYxZjEuLjgzODUyNzYyYzVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9BdG9tU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0
cmluZ0ltcGwuaApAQCAtNTksNiArNTksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGFkZChzdHJpbmcucmVsZWFzZU5vbk51bGwoKSk7CiAg
ICAgfQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBs
PiBhZGQoY29uc3QgU3RhdGljU3RyaW5nSW1wbCopOwogICAgIEFMV0FZU19JTkxJTkUgc3RhdGlj
IFJlZjxBdG9tU3RyaW5nSW1wbD4gYWRkKEFTQ0lJTGl0ZXJhbCBsaXRlcmFsKSB7IHJldHVybiBh
ZGRMaXRlcmFsKGxpdGVyYWwuY2hhcmFjdGVycygpLCBsaXRlcmFsLmxlbmd0aCgpKTsgfQogCiAg
ICAgLy8gTm90IHVzaW5nIHRoZSBhZGQoKSBuYW1pbmcgdG8gZW5jb3VyYWdlIGRldmVsb3BlcnMg
dG8gY2FsbCBhZGQoQVNDSUlMaXRlcmFsKSB3aGVuIHRoZXkgaGF2ZSBhIHN0cmluZyBsaXRlcmFs
LgpAQCAtMTIyLDYgKzEyMywyMiBAQCBwcml2YXRlOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmUHRyPEF0b21TdHJpbmdJbXBsPiBsb29rVXBTbG93Q2FzZShTdHJpbmdJbXBsJik7
CiB9OwogCisjaWYgQVNTRVJUX0VOQUJMRUQKKworLy8gQXRvbVN0cmluZ0ltcGxzIGNyZWF0ZWQg
ZnJvbSBTdGF0aWNTdHJpbmdJbXBsIHdpbGwgQVNTRVJUIGluIHRoZSBnZW5lcmljIFZhbHVlQ2hl
Y2s8VD46OmNoZWNrQ29uc2lzdGVuY3ksCisvLyBhcyB0aGV5IGFyZSBub3QgYWxsb2NhdGVkIGJ5
IGZhc3RNYWxsb2MuIFdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGFueSB3YXkgdG8gZGV0ZWN0IHRo
YXQgY2FzZSwgc28gd2UgZG9uJ3QKKy8vIGRvIGFueSBjb25zaXN0ZW5jeSBjaGVjayBmb3IgQXRv
bVN0cmluZ0ltcGwqLgorCit0ZW1wbGF0ZTw+IHN0cnVjdCBWYWx1ZUNoZWNrPEF0b21TdHJpbmdJ
bXBsKj4geworICAgIHN0YXRpYyB2b2lkIGNoZWNrQ29uc2lzdGVuY3koY29uc3QgQXRvbVN0cmlu
Z0ltcGwqKSB7IH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFZhbHVlQ2hlY2s8Y29uc3QgQXRv
bVN0cmluZ0ltcGwqPiB7CisgICAgc3RhdGljIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShjb25zdCBB
dG9tU3RyaW5nSW1wbCopIHsgfQorfTsKKworI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECisKIH0K
IAogdXNpbmcgV1RGOjpBdG9tU3RyaW5nSW1wbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
CmluZGV4IGVlMmEwMTk1ZmI3Yi4uNmUzNjRjNzZmZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5jcHAKQEAgLTEwOCw2ICsxMDgsOCBAQCB2b2lkIFN0cmluZ1N0YXRzOjpwcmludFN0YXRz
KCkKIAogREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihTdHJpbmdJbXBsKTsK
IAorU3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbCBTdHJpbmdJbXBsOjpzX2VtcHR5QXRvbVN0
cmluZygiIiwgU3RyaW5nSW1wbDo6U3RyaW5nQXRvbSk7CisKIFN0cmluZ0ltcGw6On5TdHJpbmdJ
bXBsKCkKIHsKICAgICBBU1NFUlQoIWlzU3RhdGljKCkpOwpAQCAtMjcxLDI1ICsyNzMsMTIgQEAg
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBMQ2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoKQogICAgIHJldHVybiBjcmVhdGVJbnRlcm5hbChjaGFyYWN0ZXJz
LCBsZW5ndGgpOwogfQogCi1SZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGlj
U3RyaW5nSW1wbFdpdGhvdXRDb3B5aW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgpCi17Ci0gICAgQVNTRVJUKGxlbmd0aCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAg
ICAgIHJldHVybiAqZW1wdHkoKTsKLSAgICBSZWY8U3RyaW5nSW1wbD4gcmVzdWx0ID0gYWRvcHRS
ZWYoKm5ldyBTdHJpbmdJbXBsKGNoYXJhY3RlcnMsIGxlbmd0aCwgQ29uc3RydWN0V2l0aG91dENv
cHlpbmcpKTsKLSAgICByZXN1bHQtPmhhc2goKTsKLSAgICByZXN1bHQtPmNvc3QoKTsKLSAgICBy
ZXN1bHQtPm1fcmVmQ291bnQgfD0gc19yZWZDb3VudEZsYWdJc1N0YXRpY1N0cmluZzsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCiBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3Rh
dGljU3RyaW5nSW1wbChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQog
ewogICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gKmVtcHR5KCk7CiAgICAgUmVmPFN0
cmluZ0ltcGw+IHJlc3VsdCA9IGNyZWF0ZUludGVybmFsKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAg
ICAgcmVzdWx0LT5oYXNoKCk7Ci0gICAgcmVzdWx0LT5jb3N0KCk7CiAgICAgcmVzdWx0LT5tX3Jl
ZkNvdW50IHw9IHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmc7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KQEAgLTMwMCw3ICsyODksNiBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3Jl
YXRlU3RhdGljU3RyaW5nSW1wbChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaQogICAgICAg
ICByZXR1cm4gKmVtcHR5KCk7CiAgICAgUmVmPFN0cmluZ0ltcGw+IHJlc3VsdCA9IGNyZWF0ZThC
aXRJZlBvc3NpYmxlKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgcmVzdWx0LT5oYXNoKCk7Ci0g
ICAgcmVzdWx0LT5jb3N0KCk7CiAgICAgcmVzdWx0LT5tX3JlZkNvdW50IHw9IHNfcmVmQ291bnRG
bGFnSXNTdGF0aWNTdHJpbmc7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE2NzQsNiArMTY2
Miw0IEBAIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoY29uc3QgVUNoYXIqIGEsIHNpemVfdCBh
TGVuZ3RoLCBTdHJpbmdJbXBsKiBiKQogICAgIHJldHVybiBlcXVhbChhLCBiLT5jaGFyYWN0ZXJz
MTYoKSwgYi0+bGVuZ3RoKCkpOwogfQogCi1MYXp5TmV2ZXJEZXN0cm95ZWQ8UmVmPFN0cmluZ0lt
cGw+PiBTdHJpbmdJbXBsOjpzX2VtcHR5OwotCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmgKaW5kZXggZjNhMTk3OTAyNTM0Li5kZDlmN2RlNGE2YmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCkBAIC0zMCw4ICszMCw2IEBACiAjaW5jbHVkZSA8d3RmL0RlYnVn
SGVhcC5oPgogI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL05v
bm1vdmFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFja2VkLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE0OSw3ICsxNDcsNiBAQCBz
dHJ1Y3QgU3RyaW5nU3RhdHMgewogCiBjbGFzcyBTVFJJTkdfSU1QTF9BTElHTk1FTlQgU3RyaW5n
SW1wbFNoYXBlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJpbmdJbXBsU2hhcGUpOwot
ICAgIFdURl9NQUtFX05PTk1PVkFCTEUoU3RyaW5nSW1wbFNoYXBlKTsKIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIE1heExlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
aW50MzJfdD46Om1heCgpOwogCkBAIC0xNTcsNiArMTU0LDEwIEBAIHByb3RlY3RlZDoKICAgICBT
dHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29uc3Qg
TENoYXIqLCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MpOwogICAgIFN0cmluZ0ltcGxTaGFwZSh1bnNp
Z25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkIGhh
c2hBbmRGbGFncyk7CiAKKyAgICBlbnVtIENvbnN0cnVjdFdpdGhDb25zdEV4cHJUYWcgeyBDb25z
dHJ1Y3RXaXRoQ29uc3RFeHByIH07CisgICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291
bnQ+IGNvbnN0ZXhwciBTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVmQ291bnQsIHVuc2lnbmVk
IGxlbmd0aCwgY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgdW5zaWdu
ZWQgaGFzaEFuZEZsYWdzLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHByVGFnKTsKKyAgICB0ZW1wbGF0
ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gY29uc3RleHByIFN0cmluZ0ltcGxTaGFwZSh1bnNp
Z25lZCByZWZDb3VudCwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3Rl
cnMpW2NoYXJhY3RlckNvdW50XSwgdW5zaWduZWQgaGFzaEFuZEZsYWdzLCBDb25zdHJ1Y3RXaXRo
Q29uc3RFeHByVGFnKTsKKwogICAgIHVuc2lnbmVkIG1fcmVmQ291bnQ7CiAgICAgdW5zaWduZWQg
bV9sZW5ndGg7CiAgICAgdW5pb24gewpAQCAtMTc5LDcgKzE4MCw2IEBAIHByb3RlY3RlZDoKIERF
Q0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFN0cmluZ0ltcGwpOwogY2xhc3Mg
U3RyaW5nSW1wbCA6IHByaXZhdGUgU3RyaW5nSW1wbFNoYXBlIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTdHJpbmdJbXBsKTsKLSAgICBXVEZfTUFLRV9OT05NT1ZBQkxFKFN0cmluZ0ltcGwp
OwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVBUF9JREVOVElGSUVSKFN0cmlu
Z0ltcGwpOwogCiAgICAgZnJpZW5kIGNsYXNzIEF0b21TdHJpbmdJbXBsOwpAQCAtMjQyLDkgKzI0
Miw2IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nSW1wbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxl
bmd0aCwgQ29uc3RydWN0V2l0aG91dENvcHlpbmdUYWcpOwogICAgIFN0cmluZ0ltcGwoY29uc3Qg
TENoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIENvbnN0cnVjdFdpdGhvdXRDb3B5aW5nVGFnKTsKIAot
ICAgIGVudW0gQ29uc3RydWN0RW1wdHlUYWcgeyBDb25zdHJ1Y3RFbXB0eSB9OwotICAgIFN0cmlu
Z0ltcGwoQ29uc3RydWN0RW1wdHlUYWcpOwotCiAgICAgLy8gVXNlZCB0byBjcmVhdGUgbmV3IHN0
cmluZ3MgdGhhdCBhcmUgYSBzdWJzdHJpbmcgb2YgYW4gZXhpc3RpbmcgU3RyaW5nSW1wbCAoQnVm
ZmVyU3Vic3RyaW5nKS4KICAgICBTdHJpbmdJbXBsKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoLCBSZWY8U3RyaW5nSW1wbD4mJik7CiAgICAgU3RyaW5nSW1wbChjb25zdCBVQ2hhciosIHVu
c2lnbmVkIGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYpOwpAQCAtMjgxLDM4ICsyNzgsNiBAQCBw
dWJsaWM6CiAgICAgICAgIEFTU0VSVChjaGFyYWN0ZXJzQXJlQWxsQVNDSUkoYml0d2lzZV9jYXN0
PGNvbnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGxlbmd0aCkpOwogICAgICAgICByZXR1cm4gY3Jl
YXRlU3RhdGljU3RyaW5nSW1wbChiaXR3aXNlX2Nhc3Q8Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJz
KSwgbGVuZ3RoKTsKICAgICB9Ci0KLSAgICAvLyBVc2VkIHRvIGNvbnN0cnVjdCBzdGF0aWMgc3Ry
aW5ncywgd2hpY2ggaGF2ZSBhbiBzcGVjaWFsIHJlZkNvdW50IHRoYXQgY2FuIG5ldmVyIGhpdCB6
ZXJvLgotICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGUgc3RhdGljIHN0cmluZyB3aWxsIG5ldmVy
IGJlIGRlc3Ryb3llZCwgd2hpY2ggaXMgaW1wb3J0YW50IGJlY2F1c2UKLSAgICAvLyBzdGF0aWMg
c3RyaW5ncyB3aWxsIGJlIHNoYXJlZCBhY3Jvc3MgdGhyZWFkcyAmIHJlZi1jb3VudGVkIGluIGEg
bm9uLXRocmVhZHNhZmUgbWFubmVyLgotICAgIC8vCi0gICAgLy8gSW4gb3JkZXIgdG8gYmUgdGhy
ZWFkIHNhZmUsIHdlIGFsc28gbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgcmVzdCBvZgotICAgIC8v
IHRoZSBmaWVsZHMgYXJlIG5ldmVyIG11dGF0ZWQgYnkgdGhyZWFkcy4gV2UgaGF2ZSB0aGlzIGd1
YXJhbnRlZSBiZWNhdXNlOgotICAgIC8vCi0gICAgLy8gMS4gbV9sZW5ndGggaXMgb25seSBzZXQg
b24gY29uc3RydWN0aW9uIGFuZCBuZXZlciBtdXRhdGVkIHRoZXJlYWZ0ZXIuCi0gICAgLy8KLSAg
ICAvLyAyLiBtX2RhdGE4IGFuZCBtX2RhdGExNiBhcmUgb25seSBzZXQgb24gY29uc3RydWN0aW9u
IGFuZCBuZXZlciBtdXRhdGVkIHRoZXJlYWZ0ZXIuCi0gICAgLy8gICAgV2UgYWxzbyBrbm93IHRo
YXQgYSBTdHJpbmdJbXBsIG5ldmVyIGNoYW5nZXMgZnJvbSA4IGJpdCB0byAxNiBiaXQgYmVjYXVz
ZSB0aGVyZQotICAgIC8vICAgIGlzIG5vIHdheSB0byBzZXQvY2xlYXIgdGhlIHNfaGFzaEZsYWc4
Qml0QnVmZmVyIGZsYWcgb3RoZXIgdGhhbiBhdCBjb25zdHJ1Y3Rpb24uCi0gICAgLy8KLSAgICAv
LyAzLiBtX2hhc2hBbmRGbGFncyB3aWxsIG5vdCBiZSBtdXRhdGVkIGJ5IGRpZmZlcmVudCB0aHJl
YWRzIGJlY2F1c2U6Ci0gICAgLy8KLSAgICAvLyAgICBhLiBUaGlzIGNvbnN0cnVjdG9yIGNhbGxz
IFN0cmluZ0ltcGw6OmNvc3QoKSBlYXJseSwgc28gaXQgd2lsbCByZXR1cm4gZWFybHkgd2hlbiBj
YWxsZWQgYWdhaW4uCi0gICAgLy8gICAgICAgVGhpcyBtZWFucyBzdGF0aWMgU3RyaW5nSW1wbCBj
b3N0cyBhcmUgbm90IGNvdW50ZWQuIEJ1dCBzaW5jZSB0aGVyZSBzaG91bGQgb25seQotICAgIC8v
ICAgICAgIGJlIGEgZmluaXRlIHNldCBvZiBzdGF0aWMgU3RyaW5nSW1wbHMsIHRoZWlyIGNvc3Qg
Y2FuIGJlIGFnZ3JlZ2F0ZWQgaW50byBhIHNpbmdsZQotICAgIC8vICAgICAgIHN5c3RlbSBjb3N0
IGlmIG5lZWRlZC4KLSAgICAvLyAgICBiLiBzZXRJc0F0b20oKSBpcyBuZXZlciBjYWxsZWQgb24g
YSBzdGF0aWMgU3RyaW5nSW1wbC4KLSAgICAvLyAgICAgICBzZXRJc0F0b20oKSBhc3NlcnRzICFp
c1N0YXRpYygpLgotICAgIC8vICAgIGMuIHNldEhhc2goKSBpcyBuZXZlciBjYWxsZWQgb24gYSBz
dGF0aWMgU3RyaW5nSW1wbC4KLSAgICAvLyAgICAgICBUaGlzIGNvbnN0cnVjdG9yIHNldHMgdGhl
IGhhc2ggb24gY29uc3RydWN0aW9uLgotICAgIC8vICAgICAgIFN0cmluZ0ltcGw6Omhhc2goKSBv
bmx5IHNldHMgYSBuZXcgaGFzaCBpZmYgIWhhc0hhc2goKS4KLSAgICAvLyAgICAgICBBZGRpdGlv
bmFsbHksIFN0cmluZ0ltcGw6OnNldEhhc2goKSBhc3NlcnRzIGhhc0hhc2goKSBhbmQgIWlzU3Rh
dGljKCkuCi0gICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVTdGF0aWNTdHJpbmdJbXBs
V2l0aG91dENvcHlpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKGNoYXJhY3RlcnNBcmVBbGxBU0NJSShiaXR3aXNlX2Nhc3Q8
Y29uc3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgbGVuZ3RoKSk7Ci0gICAgICAgIHJldHVybiBjcmVh
dGVTdGF0aWNTdHJpbmdJbXBsV2l0aG91dENvcHlpbmcoYml0d2lzZV9jYXN0PGNvbnN0IExDaGFy
Kj4oY2hhcmFjdGVycyksIGxlbmd0aCk7Ci0gICAgfQotICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZVN0YXRpY1N0cmluZ0ltcGxXaXRob3V0Q29weWlu
Zyhjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3RhdGljU3RyaW5nSW1wbChjb25zdCBMQ2hh
ciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8
U3RyaW5nSW1wbD4gY3JlYXRlU3RhdGljU3RyaW5nSW1wbChjb25zdCBVQ2hhciosIHVuc2lnbmVk
IGxlbmd0aCk7CiAKQEAgLTQwMiwxNiArMzY3LDQzIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZigp
OwogICAgIHZvaWQgZGVyZWYoKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPFJlZjxTdHJpbmdJbXBsPj4gc19lbXB0eTsKLSAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBTdHJpbmdJbXBsKiBlbXB0eSgpCi0gICAgewotICAgICAgICByZXR1cm4gJnNf
ZW1wdHkuZ2V0KCkuZ2V0KCk7Ci0gICAgfQorICAgIGNsYXNzIFN0YXRpY1N0cmluZ0ltcGwgOiBw
cml2YXRlIFN0cmluZ0ltcGxTaGFwZSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFN0
YXRpY1N0cmluZ0ltcGwpOworICAgIHB1YmxpYzoKKyAgICAgICAgLy8gVXNlZCB0byBjb25zdHJ1
Y3Qgc3RhdGljIHN0cmluZ3MsIHdoaWNoIGhhdmUgYW4gc3BlY2lhbCByZWZDb3VudCB0aGF0IGNh
biBuZXZlciBoaXQgemVyby4KKyAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoZSBzdGF0aWMg
c3RyaW5nIHdpbGwgbmV2ZXIgYmUgZGVzdHJveWVkLCB3aGljaCBpcyBpbXBvcnRhbnQgYmVjYXVz
ZQorICAgICAgICAvLyBzdGF0aWMgc3RyaW5ncyB3aWxsIGJlIHNoYXJlZCBhY3Jvc3MgdGhyZWFk
cyAmIHJlZi1jb3VudGVkIGluIGEgbm9uLXRocmVhZHNhZmUgbWFubmVyLgorICAgICAgICAvLwor
ICAgICAgICAvLyBJbiBvcmRlciB0byBtYWtlIFN0YXRpY1N0cmluZ0ltcGwgdGhyZWFkIHNhZmUs
IHdlIGFsc28gbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgcmVzdCBvZgorICAgICAgICAvLyB0aGUg
ZmllbGRzIGFyZSBuZXZlciBtdXRhdGVkIGJ5IHRocmVhZHMuIFdlIGhhdmUgdGhpcyBndWFyYW50
ZWUgYmVjYXVzZToKKyAgICAgICAgLy8KKyAgICAgICAgLy8gMS4gbV9sZW5ndGggaXMgb25seSBz
ZXQgb24gY29uc3RydWN0aW9uIGFuZCBuZXZlciBtdXRhdGVkIHRoZXJlYWZ0ZXIuCisgICAgICAg
IC8vCisgICAgICAgIC8vIDIuIG1fZGF0YTggYW5kIG1fZGF0YTE2IGFyZSBvbmx5IHNldCBvbiBj
b25zdHJ1Y3Rpb24gYW5kIG5ldmVyIG11dGF0ZWQgdGhlcmVhZnRlci4KKyAgICAgICAgLy8gICAg
V2UgYWxzbyBrbm93IHRoYXQgYSBTdHJpbmdJbXBsIG5ldmVyIGNoYW5nZXMgZnJvbSA4IGJpdCB0
byAxNiBiaXQgYmVjYXVzZSB0aGVyZQorICAgICAgICAvLyAgICBpcyBubyB3YXkgdG8gc2V0L2Ns
ZWFyIHRoZSBzX2hhc2hGbGFnOEJpdEJ1ZmZlciBmbGFnIG90aGVyIHRoYW4gYXQgY29uc3RydWN0
aW9uLgorICAgICAgICAvLworICAgICAgICAvLyAzLiBtX2hhc2hBbmRGbGFncyB3aWxsIG5vdCBi
ZSBtdXRhdGVkIGJ5IGRpZmZlcmVudCB0aHJlYWRzIGJlY2F1c2U6CisgICAgICAgIC8vCisgICAg
ICAgIC8vICAgIGEuIFN0YXRpY1N0cmluZ0ltcGwncyBjb25zdHJ1Y3RvciBzZXRzIHRoZSBzX2hh
c2hGbGFnRGlkUmVwb3J0Q29zdCBmbGFnIHRvIGVuc3VyZQorICAgICAgICAvLyAgICAgICB0aGF0
IFN0cmluZ0ltcGw6OmNvc3QoKSByZXR1cm5zIGVhcmx5LgorICAgICAgICAvLyAgICAgICBUaGlz
IG1lYW5zIFN0YXRpY1N0cmluZ0ltcGwgY29zdHMgYXJlIG5vdCBjb3VudGVkLiBCdXQgc2luY2Ug
dGhlcmUgc2hvdWxkIG9ubHkKKyAgICAgICAgLy8gICAgICAgYmUgYSBmaW5pdGUgc2V0IG9mIFN0
YXRpY1N0cmluZ0ltcGxzLCB0aGVpciBjb3N0IGNhbiBiZSBhZ2dyZWdhdGVkIGludG8gYSBzaW5n
bGUKKyAgICAgICAgLy8gICAgICAgc3lzdGVtIGNvc3QgaWYgbmVlZGVkLgorICAgICAgICAvLyAg
ICBiLiBzZXRJc0F0b20oKSBpcyBuZXZlciBjYWxsZWQgb24gYSBTdGF0aWNTdHJpbmdJbXBsLgor
ICAgICAgICAvLyAgICAgICBzZXRJc0F0b20oKSBhc3NlcnRzICFpc1N0YXRpYygpLgorICAgICAg
ICAvLyAgICBjLiBzZXRIYXNoKCkgaXMgbmV2ZXIgY2FsbGVkIG9uIGEgU3RhdGljU3RyaW5nSW1w
bC4KKyAgICAgICAgLy8gICAgICAgU3RhdGljU3RyaW5nSW1wbCdzIGNvbnN0cnVjdG9yIHNldHMg
dGhlIGhhc2ggb24gY29uc3RydWN0aW9uLgorICAgICAgICAvLyAgICAgICBTdHJpbmdJbXBsOjpo
YXNoKCkgb25seSBzZXRzIGEgbmV3IGhhc2ggaWZmICFoYXNIYXNoKCkuCisgICAgICAgIC8vICAg
ICAgIEFkZGl0aW9uYWxseSwgU3RyaW5nSW1wbDo6c2V0SGFzaCgpIGFzc2VydHMgaGFzSGFzaCgp
IGFuZCAhaXNTdGF0aWMoKS4KKworICAgICAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJD
b3VudD4gZXhwbGljaXQgY29uc3RleHByIFN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhciAoJmNo
YXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgU3RyaW5nS2luZCA9IFN0cmluZ05vcm1hbCk7Cisg
ICAgICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBleHBsaWNpdCBjb25zdGV4
cHIgU3RhdGljU3RyaW5nSW1wbChjb25zdCBjaGFyMTZfdCAoJmNoYXJhY3RlcnMpW2NoYXJhY3Rl
ckNvdW50XSwgU3RyaW5nS2luZCA9IFN0cmluZ05vcm1hbCk7CisgICAgICAgIG9wZXJhdG9yIFN0
cmluZ0ltcGwmKCk7CisgICAgfTsKIAotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZUVtcHR5U3RyaW5nKCkKLSAgICB7Ci0gICAgICAgIHNfZW1wdHkuY29uc3RydWN0KGFk
b3B0UmVmKCpuZXcgU3RyaW5nSW1wbChDb25zdHJ1Y3RFbXB0eSkpKTsKLSAgICB9CisgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTdGF0aWNTdHJpbmdJbXBsIHNfZW1wdHlBdG9tU3RyaW5n
OworICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFN0cmluZ0ltcGwqIGVtcHR5KCkgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxTdHJpbmdJbXBsKj4oJnNfZW1wdHlBdG9tU3RyaW5nKTsgfQogCiAg
ICAgLy8gRklYTUU6IERvIHRoZXNlIGZ1bmN0aW9ucyByZWFsbHkgYmVsb25nIGluIFN0cmluZ0lt
cGw/CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHZvaWQgY29w
eUNoYXJhY3RlcnMoQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24sIGNvbnN0IENoYXJhY3RlclR5
cGUqIHNvdXJjZSwgdW5zaWduZWQgbGVuZ3RoKTsKQEAgLTU2Miw2ICs1NTQsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgYXNzZXJ0SGFzaElzQ29ycmVjdCgpIGNvbnN0OwogfTsKIAordXNpbmcgU3Rh
dGljU3RyaW5nSW1wbCA9IFN0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGw7CisKK3N0YXRpY19h
c3NlcnQoc2l6ZW9mKFN0cmluZ0ltcGwpID09IHNpemVvZihTdGF0aWNTdHJpbmdJbXBsKSk7CisK
IHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdHJ1Y3QgSGFzaFRyYW5zbGF0b3JD
aGFyQnVmZmVyIHsKICAgICBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzOwpAQCAtNTgz
LDYgKzU3OSwxNyBAQCBzdHJ1Y3QgSGFzaFRyYW5zbGF0b3JDaGFyQnVmZmVyIHsKICAgICB9CiB9
OwogCisjaWYgQVNTRVJUX0VOQUJMRUQKKworLy8gU3RyaW5nSW1wbHMgY3JlYXRlZCBmcm9tIFN0
YXRpY1N0cmluZ0ltcGwgd2lsbCBBU1NFUlQgaW4gdGhlIGdlbmVyaWMgVmFsdWVDaGVjazxUPjo6
Y2hlY2tDb25zaXN0ZW5jeQorLy8gYXMgdGhleSBhcmUgbm90IGFsbG9jYXRlZCBieSBmYXN0TWFs
bG9jLiBXZSBkb24ndCBjdXJyZW50bHkgaGF2ZSBhbnkgd2F5IHRvIGRldGVjdCB0aGF0IGNhc2UK
Ky8vIHNvIHdlIGlnbm9yZSB0aGUgY29uc2lzdGVuY3kgY2hlY2sgZm9yIGFsbCBTdHJpbmdJbXBs
Ki4KK3RlbXBsYXRlPD4gc3RydWN0IFZhbHVlQ2hlY2s8U3RyaW5nSW1wbCo+IHsKKyAgICBzdGF0
aWMgdm9pZCBjaGVja0NvbnNpc3RlbmN5KGNvbnN0IFN0cmluZ0ltcGwqKSB7IH0KK307CisKKyNl
bmRpZiAvLyBBU1NFUlRfRU5BQkxFRAorCiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBlcXVhbChj
b25zdCBTdHJpbmdJbXBsKiwgY29uc3QgU3RyaW5nSW1wbCopOwogV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCosIGNvbnN0IExDaGFyKik7CiBpbmxpbmUgYm9v
bCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiBhLCBjb25zdCBjaGFyKiBiKSB7IHJldHVybiBlcXVh
bChhLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CkBAIC02MzYsNyArNjQz
LDggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8UGFja2VkUHRyPFN0cmluZ0ltcGw+
PjsKIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPENvbXBhY3RQdHI8U3RyaW5nSW1wbD4+
OwogCiAjZGVmaW5lIE1BS0VfU1RBVElDX1NUUklOR19JTVBMKGNoYXJhY3RlcnMpIChbXSB7IFwK
LSAgICAgICAgcmV0dXJuICZTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsV2l0aG91
dENvcHlpbmcoY2hhcmFjdGVycyAiIl9zLCAoY2hhcmFjdGVycyAiIl9zKS5sZW5ndGgoKSkuZ2V0
KCk7IFwKKyAgICAgICAgc3RhdGljIFN0YXRpY1N0cmluZ0ltcGwgaW1wbChjaGFyYWN0ZXJzKTsg
XAorICAgICAgICByZXR1cm4gJmltcGw7IFwKICAgICB9KCkpCiAKIHRlbXBsYXRlPD4gQUxXQVlT
X0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29uc3RydWN0SW50ZXJuYWw8TENo
YXI+KFN0cmluZ0ltcGwmIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoKQpAQCAtODE1LDYgKzgyMywy
MiBAQCBpbmxpbmUgU3RyaW5nSW1wbFNoYXBlOjpTdHJpbmdJbXBsU2hhcGUodW5zaWduZWQgcmVm
Q291bnQsIHVuc2lnbmVkIGxlbmd0aCwgY29ucwogewogfQogCit0ZW1wbGF0ZTx1bnNpZ25lZCBj
aGFyYWN0ZXJDb3VudD4gY29uc3RleHByIFN0cmluZ0ltcGxTaGFwZTo6U3RyaW5nSW1wbFNoYXBl
KHVuc2lnbmVkIHJlZkNvdW50LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IGNoYXIgKCZjaGFyYWN0
ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIHVuc2lnbmVkIGhhc2hBbmRGbGFncywgQ29uc3RydWN0V2l0
aENvbnN0RXhwclRhZykKKyAgICA6IG1fcmVmQ291bnQocmVmQ291bnQpCisgICAgLCBtX2xlbmd0
aChsZW5ndGgpCisgICAgLCBtX2RhdGE4Q2hhcihjaGFyYWN0ZXJzKQorICAgICwgbV9oYXNoQW5k
RmxhZ3MoaGFzaEFuZEZsYWdzKQoreworfQorCit0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJD
b3VudD4gY29uc3RleHByIFN0cmluZ0ltcGxTaGFwZTo6U3RyaW5nSW1wbFNoYXBlKHVuc2lnbmVk
IHJlZkNvdW50LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IGNoYXIxNl90ICgmY2hhcmFjdGVycylb
Y2hhcmFjdGVyQ291bnRdLCB1bnNpZ25lZCBoYXNoQW5kRmxhZ3MsIENvbnN0cnVjdFdpdGhDb25z
dEV4cHJUYWcpCisgICAgOiBtX3JlZkNvdW50KHJlZkNvdW50KQorICAgICwgbV9sZW5ndGgobGVu
Z3RoKQorICAgICwgbV9kYXRhMTZDaGFyKGNoYXJhY3RlcnMpCisgICAgLCBtX2hhc2hBbmRGbGFn
cyhoYXNoQW5kRmxhZ3MpCit7Cit9CisKIGlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1w
bDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICBpZiAoIXJlcXVpcmVzQ29weSgpKSB7CkBA
IC05MTYsMTQgKzk0MCw2IEBAIGlubGluZSBTdHJpbmdJbXBsOjpTdHJpbmdJbXBsKGNvbnN0IExD
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENvbnN0cnVjCiAgICAgU1RSSU5HX1NU
QVRTX0FERF84QklUX1NUUklORyhtX2xlbmd0aCk7CiB9CiAKLWlubGluZSBTdHJpbmdJbXBsOjpT
dHJpbmdJbXBsKENvbnN0cnVjdEVtcHR5VGFnKQotICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVm
Q291bnRGbGFnSXNTdGF0aWNTdHJpbmcsIDAsIGJpdHdpc2VfY2FzdDxjb25zdCBMQ2hhcio+KCIi
KSwgc19oYXNoRmxhZzhCaXRCdWZmZXIgfCBTdHJpbmdBdG9tIHwgc19oYXNoRmxhZ0RpZFJlcG9y
dENvc3QgfCAoU3RyaW5nSGFzaGVyOjpjb21wdXRlTGl0ZXJhbEhhc2hBbmRNYXNrVG9wOEJpdHMo
IiIpIDw8IHNfZmxhZ0NvdW50KSkKLXsKLSAgICBBU1NFUlQobV9kYXRhOCk7Ci0gICAgQVNTRVJU
KCFzX2VtcHR5LmlzQ29uc3RydWN0ZWQoKSk7Ci0gICAgYXNzZXJ0SGFzaElzQ29ycmVjdCgpOwot
fQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNYWxsb2M+CiBpbmxpbmUgU3RyaW5nSW1wbDo6U3RyaW5n
SW1wbChNYWxsb2NQdHI8VUNoYXIsIE1hbGxvYz4gY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3Ro
KQogICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291bnRJbmNyZW1lbnQsIGxlbmd0aCwgc3Rh
dGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihudWxscHRyKSwgc19oYXNoWmVyb1ZhbHVlIHwgU3RyaW5n
Tm9ybWFsIHwgQnVmZmVyT3duZWQpCkBAIC0xMDQyLDExICsxMDU4LDEzIEBAIGlubGluZSBzaXpl
X3QgU3RyaW5nSW1wbDo6Y29zdCgpIGNvbnN0CiAgICAgaWYgKGJ1ZmZlck93bmVyc2hpcCgpID09
IEJ1ZmZlclN1YnN0cmluZykKICAgICAgICAgcmV0dXJuIHN1YnN0cmluZ0J1ZmZlcigpLT5jb3N0
KCk7CiAKKyAgICAvLyBOb3RlOiB3ZSBtdXN0IG5vdCBhbHRlciB0aGUgbV9oYXNoQW5kRmxhZ3Mg
ZmllbGQgaW4gaW5zdGFuY2VzIG9mIFN0YXRpY1N0cmluZ0ltcGwuCisgICAgLy8gV2UgZW5zdXJl
IHRoaXMgYnkgcHJlLXNldHRpbmcgdGhlIHNfaGFzaEZsYWdEaWRSZXBvcnRDb3N0IGJpdCBpbiBh
bGwgaW5zdGFuY2VzIG9mCisgICAgLy8gU3RhdGljU3RyaW5nSW1wbC4gQXMgYSByZXN1bHQsIFN0
YXRpY1N0cmluZ0ltcGwgaW5zdGFuY2VzIHdpbGwgYWx3YXlzIHJldHVybiBhIGNvc3Qgb2YKKyAg
ICAvLyAwIGhlcmUgYW5kIGF2b2lkIG1vZGlmeWluZyBtX2hhc2hBbmRGbGFncy4KICAgICBpZiAo
bV9oYXNoQW5kRmxhZ3MgJiBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICBBU1NFUlQoIWlzU3RhdGljKCkpOwotCiAgICAgbV9oYXNoQW5kRmxhZ3MgfD0g
c19oYXNoRmxhZ0RpZFJlcG9ydENvc3Q7CiAgICAgc2l6ZV90IHJlc3VsdCA9IG1fbGVuZ3RoOwog
ICAgIGlmICghaXM4Qml0KCkpCkBAIC0xMzM0LDYgKzEzNTIsMjMgQEAgaW5saW5lIHZvaWQgU3Ry
aW5nSW1wbDo6YXNzZXJ0SGFzaElzQ29ycmVjdCgpIGNvbnN0CiAgICAgQVNTRVJUKGV4aXN0aW5n
SGFzaCgpID09IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFj
dGVyczgoKSwgbGVuZ3RoKCkpKTsKIH0KIAordGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291
bnQ+IGNvbnN0ZXhwciBTdHJpbmdJbXBsOjpTdGF0aWNTdHJpbmdJbXBsOjpTdGF0aWNTdHJpbmdJ
bXBsKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIFN0cmluZ0tpbmQg
c3RyaW5nS2luZCkKKyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50RmxhZ0lzU3RhdGlj
U3RyaW5nLCBjaGFyYWN0ZXJDb3VudCAtIDEsIGNoYXJhY3RlcnMsCisgICAgICAgIHNfaGFzaEZs
YWc4Qml0QnVmZmVyIHwgc19oYXNoRmxhZ0RpZFJlcG9ydENvc3QgfCBzdHJpbmdLaW5kIHwgQnVm
ZmVySW50ZXJuYWwgfCAoU3RyaW5nSGFzaGVyOjpjb21wdXRlTGl0ZXJhbEhhc2hBbmRNYXNrVG9w
OEJpdHMoY2hhcmFjdGVycykgPDwgc19mbGFnQ291bnQpLCBDb25zdHJ1Y3RXaXRoQ29uc3RFeHBy
KQoreworfQorCit0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gY29uc3RleHByIFN0
cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGwoY29uc3QgY2hhcjE2
X3QgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIFN0cmluZ0tpbmQgc3RyaW5nS2luZCkK
KyAgICA6IFN0cmluZ0ltcGxTaGFwZShzX3JlZkNvdW50RmxhZ0lzU3RhdGljU3RyaW5nLCBjaGFy
YWN0ZXJDb3VudCAtIDEsIGNoYXJhY3RlcnMsCisgICAgICAgIHNfaGFzaEZsYWdEaWRSZXBvcnRD
b3N0IHwgc3RyaW5nS2luZCB8IEJ1ZmZlckludGVybmFsIHwgKFN0cmluZ0hhc2hlcjo6Y29tcHV0
ZUxpdGVyYWxIYXNoQW5kTWFza1RvcDhCaXRzKGNoYXJhY3RlcnMpIDw8IHNfZmxhZ0NvdW50KSwg
Q29uc3RydWN0V2l0aENvbnN0RXhwcikKK3sKK30KKworaW5saW5lIFN0cmluZ0ltcGw6OlN0YXRp
Y1N0cmluZ0ltcGw6Om9wZXJhdG9yIFN0cmluZ0ltcGwmKCkKK3sKKyAgICByZXR1cm4gKnJlaW50
ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KHRoaXMpOworfQorCiBpbmxpbmUgYm9vbCBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmluZ0ltcGwmIGEsIGNvbnN0IFN0cmluZ0ltcGwmIGIp
CiB7CiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2VDb21tb24oYSwgYik7CkBAIC0x
NTIwLDYgKzE1NTUsNyBAQCBpbmxpbmUgRXhwZWN0ZWQ8c3RkOjppbnZva2VfcmVzdWx0X3Q8RnVu
Yywgc3RkOjpzcGFuPGNvbnN0IGNoYXI+PiwgVVRGOENvbnZlcnNpbwogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIAordXNpbmcgV1RGOjpTdGF0aWNTdHJpbmdJbXBsOwogdXNpbmcgV1RGOjpTdHJpbmdJ
bXBsOwogdXNpbmcgV1RGOjplcXVhbDsKIHVzaW5nIFdURjo6ZGVwcmVjYXRlZElzU3BhY2VPck5l
d2xpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwIGIv
U291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNwcAppbmRleCAwZjFkMGRmYzY0NTkuLjcy
YTE5OGNhMmQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TeW1ib2xJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwuY3BwCkBAIC00MiwxNSArNDIs
NiBAQCB1bnNpZ25lZCBTeW1ib2xJbXBsOjpuZXh0SGFzaEZvclN5bWJvbCgpCiAgICAgcmV0dXJu
IHNfbmV4dEhhc2hGb3JTeW1ib2w7CiB9CiAKLVJlZjxTeW1ib2xJbXBsPiBTeW1ib2xJbXBsOjpj
cmVhdGVTdGF0aWMoU3RyaW5nSW1wbCYgcmVwKQotewotICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRl
KHJlcCk7Ci0gICAgcmVzdWx0LT5oYXNoKCk7Ci0gICAgcmVzdWx0LT5jb3N0KCk7Ci0gICAgcmVz
dWx0LT5tX3JlZkNvdW50IHw9IHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJpbmc7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQogUmVmPFN5bWJvbEltcGw+IFN5bWJvbEltcGw6OmNyZWF0ZShTdHJp
bmdJbXBsJiByZXApCiB7CiAgICAgYXV0byogb3duZXJSZXAgPSAocmVwLmJ1ZmZlck93bmVyc2hp
cCgpID09IEJ1ZmZlclN1YnN0cmluZykgPyByZXAuc3Vic3RyaW5nQnVmZmVyKCkgOiAmcmVwOwpA
QCAtNjUsMTQgKzU2LDYgQEAgUmVmPFN5bWJvbEltcGw+IFN5bWJvbEltcGw6OmNyZWF0ZU51bGxT
eW1ib2woKQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN5bWJvbEltcGwpOwogfQogCi1SZWY8
UHJpdmF0ZVN5bWJvbEltcGw+IFByaXZhdGVTeW1ib2xJbXBsOjpjcmVhdGVTdGF0aWMoU3RyaW5n
SW1wbCYgcmVwKQotewotICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlKHJlcCk7Ci0gICAgcmVzdWx0
LT5oYXNoKCk7Ci0gICAgcmVzdWx0LT5tX3JlZkNvdW50IHw9IHNfcmVmQ291bnRGbGFnSXNTdGF0
aWNTdHJpbmc7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogUmVmPFByaXZhdGVTeW1ib2xJbXBs
PiBQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlKFN0cmluZ0ltcGwmIHJlcCkKIHsKICAgICBhdXRv
KiBvd25lclJlcCA9IChyZXAuYnVmZmVyT3duZXJzaGlwKCkgPT0gQnVmZmVyU3Vic3RyaW5nKSA/
IHJlcC5zdWJzdHJpbmdCdWZmZXIoKSA6ICZyZXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N5bWJvbEltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3ltYm9sSW1wbC5oCmlu
ZGV4IDI2MTYxMjhjZTQyNS4uM2RlZDZkYTBjYTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N5bWJvbEltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N5bWJvbEltcGwu
aApAQCAtNTIsOSArNTIsMzcgQEAgcHVibGljOgogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8U3ltYm9sSW1wbD4gY3JlYXRlTnVsbFN5bWJvbCgpOwogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBzdGF0aWMgUmVmPFN5bWJvbEltcGw+IGNyZWF0ZShTdHJpbmdJbXBsJiByZXApOwot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN5bWJvbEltcGw+IGNyZWF0ZVN0YXRp
YyhTdHJpbmdJbXBsJiByZXApOwotICAgIHN0YXRpYyBpbmxpbmUgUmVmPFN5bWJvbEltcGw+IGNy
ZWF0ZShjb25zdCBjaGFyKiByZXAsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gY3JlYXRlKFN0
cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGxXaXRob3V0Q29weWluZyhyZXAsIGxlbmd0
aCkubGVha1JlZigpKTsgfQotICAgIHN0YXRpYyBpbmxpbmUgUmVmPFN5bWJvbEltcGw+IGNyZWF0
ZVN0YXRpYyhjb25zdCBjaGFyKiByZXAsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gY3JlYXRl
U3RhdGljKFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGxXaXRob3V0Q29weWluZyhy
ZXAsIGxlbmd0aCkubGVha1JlZigpKTsgfQorCisgICAgY2xhc3MgU3RhdGljU3ltYm9sSW1wbCBm
aW5hbCA6IHByaXZhdGUgU3RyaW5nSW1wbFNoYXBlIHsKKyAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU3RhdGljU3ltYm9sSW1wbCk7CisgICAgcHVibGljOgorICAgICAgICB0ZW1wbGF0ZTx1
bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4KKyAgICAgICAgY29uc3RleHByIFN0YXRpY1N5bWJvbElt
cGwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSwgRmxhZ3MgZmxhZ3Mg
PSBzX2ZsYWdEZWZhdWx0KQorICAgICAgICAgICAgOiBTdHJpbmdJbXBsU2hhcGUoc19yZWZDb3Vu
dEZsYWdJc1N0YXRpY1N0cmluZywgY2hhcmFjdGVyQ291bnQgLSAxLCBjaGFyYWN0ZXJzLAorICAg
ICAgICAgICAgICAgIHNfaGFzaEZsYWc4Qml0QnVmZmVyIHwgc19oYXNoRmxhZ0RpZFJlcG9ydENv
c3QgfCBTdHJpbmdTeW1ib2wgfCBCdWZmZXJJbnRlcm5hbCB8IChTdHJpbmdIYXNoZXI6OmNvbXB1
dGVMaXRlcmFsSGFzaEFuZE1hc2tUb3A4Qml0cyhjaGFyYWN0ZXJzKSA8PCBzX2ZsYWdDb3VudCks
IENvbnN0cnVjdFdpdGhDb25zdEV4cHIpCisgICAgICAgICAgICAsIG1faGFzaEZvclN5bWJvbFNo
aWZ0ZWRXaXRoRmxhZ0NvdW50KFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxpdGVyYWxIYXNoQW5kTWFz
a1RvcDhCaXRzKGNoYXJhY3RlcnMpIDw8IHNfZmxhZ0NvdW50KQorICAgICAgICAgICAgLCBtX2Zs
YWdzKGZsYWdzKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTx1bnNp
Z25lZCBjaGFyYWN0ZXJDb3VudD4KKyAgICAgICAgY29uc3RleHByIFN0YXRpY1N5bWJvbEltcGwo
Y29uc3QgY2hhcjE2X3QgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIEZsYWdzIGZsYWdz
ID0gc19mbGFnRGVmYXVsdCkKKyAgICAgICAgICAgIDogU3RyaW5nSW1wbFNoYXBlKHNfcmVmQ291
bnRGbGFnSXNTdGF0aWNTdHJpbmcsIGNoYXJhY3RlckNvdW50IC0gMSwgY2hhcmFjdGVycywKKyAg
ICAgICAgICAgICAgICBzX2hhc2hGbGFnRGlkUmVwb3J0Q29zdCB8IFN0cmluZ1N5bWJvbCB8IEJ1
ZmZlckludGVybmFsIHwgKFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUxpdGVyYWxIYXNoQW5kTWFza1Rv
cDhCaXRzKGNoYXJhY3RlcnMpIDw8IHNfZmxhZ0NvdW50KSwgQ29uc3RydWN0V2l0aENvbnN0RXhw
cikKKyAgICAgICAgICAgICwgbV9oYXNoRm9yU3ltYm9sU2hpZnRlZFdpdGhGbGFnQ291bnQoU3Ry
aW5nSGFzaGVyOjpjb21wdXRlTGl0ZXJhbEhhc2hBbmRNYXNrVG9wOEJpdHMoY2hhcmFjdGVycykg
PDwgc19mbGFnQ291bnQpCisgICAgICAgICAgICAsIG1fZmxhZ3MoZmxhZ3MpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgICAgIG9wZXJhdG9yIFN5bWJvbEltcGwmKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFN5bWJvbEltcGwqPih0aGlzKTsK
KyAgICAgICAgfQorCisgICAgICAgIFN0cmluZ0ltcGwqIG1fb3duZXIgeyBudWxscHRyIH07IC8v
IFdlIGRvIG5vdCBtYWtlIFN0YXRpY1N5bWJvbEltcGwgQnVmZmVyU3Vic3RyaW5nLiBUaHVzIHdl
IGNhbiBtYWtlIHRoaXMgbnVsbHB0ci4KKyAgICAgICAgdW5zaWduZWQgbV9oYXNoRm9yU3ltYm9s
U2hpZnRlZFdpdGhGbGFnQ291bnQ7CisgICAgICAgIEZsYWdzIG1fZmxhZ3M7CisgICAgfTsKIAog
cHJvdGVjdGVkOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdW5zaWduZWQgbmV4dEhh
c2hGb3JTeW1ib2woKTsKQEAgLTk0LDEzICsxMjIsMTEgQEAgcHJvdGVjdGVkOgogICAgIHVuc2ln
bmVkIG1faGFzaEZvclN5bWJvbFNoaWZ0ZWRXaXRoRmxhZ0NvdW50OwogICAgIEZsYWdzIG1fZmxh
Z3MgeyBzX2ZsYWdEZWZhdWx0IH07CiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoU3ltYm9sSW1w
bCkgPT0gc2l6ZW9mKFN5bWJvbEltcGw6OlN0YXRpY1N5bWJvbEltcGwpKTsKIAogY2xhc3MgUHJp
dmF0ZVN5bWJvbEltcGwgZmluYWwgOiBwdWJsaWMgU3ltYm9sSW1wbCB7CiBwdWJsaWM6CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8UHJpdmF0ZVN5bWJvbEltcGw+IGNyZWF0ZShT
dHJpbmdJbXBsJiByZXApOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFByaXZh
dGVTeW1ib2xJbXBsPiBjcmVhdGVTdGF0aWMoU3RyaW5nSW1wbCYgcmVwKTsKLSAgICBzdGF0aWMg
aW5saW5lIFJlZjxQcml2YXRlU3ltYm9sSW1wbD4gY3JlYXRlKGNvbnN0IGNoYXIqIHJlcCwgdW5z
aWduZWQgbGVuZ3RoKSB7IHJldHVybiBQcml2YXRlU3ltYm9sSW1wbDo6Y3JlYXRlKFN0cmluZ0lt
cGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGxXaXRob3V0Q29weWluZyhyZXAsIGxlbmd0aCkubGVh
a1JlZigpKTsgfQotICAgIHN0YXRpYyBpbmxpbmUgUmVmPFByaXZhdGVTeW1ib2xJbXBsPiBjcmVh
dGVTdGF0aWMoY29uc3QgY2hhciogcmVwLCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIFByaXZh
dGVTeW1ib2xJbXBsOjpjcmVhdGVTdGF0aWMoU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5n
SW1wbFdpdGhvdXRDb3B5aW5nKHJlcCwgbGVuZ3RoKS5sZWFrUmVmKCkpOyB9CiAKIHByaXZhdGU6
CiAgICAgUHJpdmF0ZVN5bWJvbEltcGwoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCwgUmVmPFN0cmluZ0ltcGw+JiYgYmFzZSkKQEAgLTE2OCw2ICsxOTQsMjMgQEAgaW5s
aW5lIFJlZ2lzdGVyZWRTeW1ib2xJbXBsKiBTeW1ib2xJbXBsOjphc1JlZ2lzdGVyZWRTeW1ib2xJ
bXBsKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVnaXN0ZXJlZFN5bWJvbEltcGwqPih0aGlz
KTsKIH0KIAorI2lmIEFTU0VSVF9FTkFCTEVECisvLyBTeW1ib2xJbXBscyBjcmVhdGVkIGZyb20g
U3RhdGljU3RyaW5nSW1wbCB3aWxsIEFTU0VSVAorLy8gaW4gdGhlIGdlbmVyaWMgVmFsdWVDaGVj
azxUPjo6Y2hlY2tDb25zaXN0ZW5jeQorLy8gYXMgdGhleSBhcmUgbm90IGFsbG9jYXRlZCBieSBm
YXN0TWFsbG9jLgorLy8gV2UgZG9uJ3QgY3VycmVudGx5IGhhdmUgYW55IHdheSB0byBkZXRlY3Qg
dGhhdCBjYXNlCisvLyBzbyB3ZSBpZ25vcmUgdGhlIGNvbnNpc3RlbmN5IGNoZWNrIGZvciBhbGwg
U3ltYm9sSW1wbHMqLgordGVtcGxhdGU8PiBzdHJ1Y3QKK1ZhbHVlQ2hlY2s8U3ltYm9sSW1wbCo+
IHsKKyAgICBzdGF0aWMgdm9pZCBjaGVja0NvbnNpc3RlbmN5KGNvbnN0IFN5bWJvbEltcGwqKSB7
IH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0CitWYWx1ZUNoZWNrPGNvbnN0IFN5bWJvbEltcGwq
PiB7CisgICAgc3RhdGljIHZvaWQgY2hlY2tDb25zaXN0ZW5jeShjb25zdCBTeW1ib2xJbXBsKikg
eyB9Cit9OworI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECisKIH0gLy8gbmFtZXNwYWNlIFdURgog
CiB1c2luZyBXVEY6OlN5bWJvbEltcGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1VuaXF1ZWRTdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1VuaXF1ZWRTdHJpbmdJ
bXBsLmgKaW5kZXggZmE1YzlhNTE2MjczLi41OWI0NWU3ZmJhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvVW5pcXVlZFN0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1VuaXF1ZWRTdHJpbmdJbXBsLmgKQEAgLTQwLDYgKzQwLDIzIEBAIHByb3RlY3RlZDoKICAg
ICBVbmlxdWVkU3RyaW5nSW1wbChDcmVhdGVTeW1ib2xUYWcpIDogU3RyaW5nSW1wbChDcmVhdGVT
eW1ib2wpIHsgfQogfTsKIAorI2lmIEFTU0VSVF9FTkFCTEVECisvLyBVbmlxdWVkU3RyaW5nSW1w
bHMgY3JlYXRlZCBmcm9tIFN0YXRpY1N0cmluZ0ltcGwgd2lsbCBBU1NFUlQKKy8vIGluIHRoZSBn
ZW5lcmljIFZhbHVlQ2hlY2s8VD46OmNoZWNrQ29uc2lzdGVuY3kKKy8vIGFzIHRoZXkgYXJlIG5v
dCBhbGxvY2F0ZWQgYnkgZmFzdE1hbGxvYy4KKy8vIFdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGFu
eSB3YXkgdG8gZGV0ZWN0IHRoYXQgY2FzZQorLy8gc28gd2UgaWdub3JlIHRoZSBjb25zaXN0ZW5j
eSBjaGVjayBmb3IgYWxsIFVuaXF1ZWRTdHJpbmdJbXBscyouCit0ZW1wbGF0ZTw+IHN0cnVjdAor
VmFsdWVDaGVjazxVbmlxdWVkU3RyaW5nSW1wbCo+IHsKKyAgICBzdGF0aWMgdm9pZCBjaGVja0Nv
bnNpc3RlbmN5KGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKikgeyB9Cit9OworCit0ZW1wbGF0ZTw+
IHN0cnVjdAorVmFsdWVDaGVjazxjb25zdCBVbmlxdWVkU3RyaW5nSW1wbCo+IHsKKyAgICBzdGF0
aWMgdm9pZCBjaGVja0NvbnNpc3RlbmN5KGNvbnN0IFVuaXF1ZWRTdHJpbmdJbXBsKikgeyB9Cit9
OworI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2lu
ZyBXVEY6OlVuaXF1ZWRTdHJpbmdJbXBsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4
IDEwOTNmYTNmNzlhZi4uNjcwMjgyMWZlZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3Bw
CkBAIC0zOSwxOSArMzksNiBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdXNpbmcgbmFtZXNwYWNlIFVu
aWNvZGU7CiAKLXN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gc19lbXB0eVN0
cmluZzsKLXN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8QXRvbVN0cmluZz4gc19udWxsU3RyaW5n
OwotCi1jb25zdCBTdHJpbmcmIG51bGxTdHJpbmcoKSB7IHJldHVybiBzX251bGxTdHJpbmcuZ2V0
KCk7IH0KLWNvbnN0IFN0cmluZyYgZW1wdHlTdHJpbmcoKSB7IHJldHVybiBzX2VtcHR5U3RyaW5n
LmdldCgpOyB9Ci0KLXZvaWQgU3RyaW5nOjppbml0aWFsaXplU3RyaW5ncygpCi17Ci0gICAgU3Ry
aW5nSW1wbDo6aW5pdGlhbGl6ZUVtcHR5U3RyaW5nKCk7Ci0gICAgc19lbXB0eVN0cmluZy5jb25z
dHJ1Y3QoU3RyaW5nSW1wbDo6ZW1wdHkoKSk7Ci0gICAgc19udWxsU3RyaW5nLmNvbnN0cnVjdChz
dGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4obnVsbHB0cikpOwotfQotCiAvLyBDb25zdHJ1Y3QgYSBz
dHJpbmcgd2l0aCBVVEYtMTYgZGF0YS4KIFN0cmluZzo6U3RyaW5nKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgOiBtX2ltcGwoY2hhcmFjdGVycyA/IFJlZlB0
ciB7IFN0cmluZ0ltcGw6OmNyZWF0ZShjaGFyYWN0ZXJzLCBsZW5ndGgpIH0gOiBudWxscHRyKQpA
QCAtNjQxLDYgKzYyOCw5IEBAIGZsb2F0IGNoYXJhY3RlcnNUb0Zsb2F0KGNvbnN0IFVDaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBzaXplX3QmIHBhcnNlZExlbmd0aCkKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHRvRG91YmxlVHlwZTxVQ2hhciwgVHJhaWxpbmdKdW5rUG9saWN5OjpB
bGxvdz4oZGF0YSwgbGVuZ3RoLCBudWxscHRyLCBwYXJzZWRMZW5ndGgpKTsKIH0KIAorY29uc3Qg
U3RhdGljU3RyaW5nIG51bGxTdHJpbmdEYXRhIHsgbnVsbHB0ciB9OworY29uc3QgU3RhdGljU3Ry
aW5nIGVtcHR5U3RyaW5nRGF0YSB7ICZTdHJpbmdJbXBsOjpzX2VtcHR5QXRvbVN0cmluZyB9Owor
CiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCmluZGV4IDU5Mzk0MTNhMWRhYS4uZGI5ZjkyMTRmNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKQEAgLTc1LDYgKzc1LDkgQEAgcHVibGljOgogICAgIFN0cmluZyhSZWY8QXRvbVN0cmlu
Z0ltcGw+JiYpOwogICAgIFN0cmluZyhSZWZQdHI8QXRvbVN0cmluZ0ltcGw+JiYpOwogCisgICAg
U3RyaW5nKFN0YXRpY1N0cmluZ0ltcGwmKTsKKyAgICBTdHJpbmcoU3RhdGljU3RyaW5nSW1wbCop
OworCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIGZyb20gYSBjb25zdGFudCBzdHJpbmcgbGl0
ZXJhbC4KICAgICBTdHJpbmcoQVNDSUlMaXRlcmFsKTsKIApAQCAtMzE2LDkgKzMxOSw2IEBAIHBy
aXZhdGU6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBtX2ltcGw7Ci0KLXB1Ymxp
YzoKLSAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplU3RyaW5ncygpOwogfTsKIAogc3RhdGljX2Fz
c2VydChzaXplb2YoU3RyaW5nKSA9PSBzaXplb2Yodm9pZCopLCAiU3RyaW5nIHNob3VsZCBlZmZl
Y3RpdmVseSBiZSBhIHBvaW50ZXIgdG8gYSBTdHJpbmdJbXBsLCBhbmQgZWZmaWNpZW50IHRvIHBh
c3MgYnkgdmFsdWUiKTsKQEAgLTM1Myw4ICszNTMsMjAgQEAgV1RGX0VYUE9SVF9QUklWQVRFIGlu
dCBjb2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOwogYm9vbCBj
b2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAK
IC8vIFNoYXJlZCBnbG9iYWwgZW1wdHkgYW5kIG51bGwgc3RyaW5nLgotV1RGX0VYUE9SVF9QUklW
QVRFIGNvbnN0IFN0cmluZyYgbnVsbFN0cmluZygpOwotV1RGX0VYUE9SVF9QUklWQVRFIGNvbnN0
IFN0cmluZyYgZW1wdHlTdHJpbmcoKTsKK3N0cnVjdCBTdGF0aWNTdHJpbmcgeworICAgIGNvbnN0
ZXhwciBTdGF0aWNTdHJpbmcoU3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbCogcG9pbnRlcikK
KyAgICAgICAgOiBtX3BvaW50ZXIocG9pbnRlcikKKyAgICB7CisgICAgfQorCisgICAgU3RyaW5n
SW1wbDo6U3RhdGljU3RyaW5nSW1wbCogbV9wb2ludGVyOworfTsKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKFN0cmluZykgPT0gc2l6ZW9mKFN0YXRpY1N0cmluZyksICJTdHJpbmcgYW5kIFN0YXRpY1N0
cmluZyBtdXN0IGJlIHRoZSBzYW1lIHNpemUhIik7CitleHRlcm4gV1RGX0VYUE9SVF9QUklWQVRF
IGNvbnN0IFN0YXRpY1N0cmluZyBudWxsU3RyaW5nRGF0YTsKK2V4dGVybiBXVEZfRVhQT1JUX1BS
SVZBVEUgY29uc3QgU3RhdGljU3RyaW5nIGVtcHR5U3RyaW5nRGF0YTsKKworaW5saW5lIGNvbnN0
IFN0cmluZyYgbnVsbFN0cmluZygpIHsgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0IFN0
cmluZyo+KCZudWxsU3RyaW5nRGF0YSk7IH0KK2lubGluZSBjb25zdCBTdHJpbmcmIGVtcHR5U3Ry
aW5nKCkgeyByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgU3RyaW5nKj4oJmVtcHR5U3Ry
aW5nRGF0YSk7IH0KIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBEZWZhdWx0SGFzaDsKIHRl
bXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFN0cmluZz47CkBAIC00MTEsNiArNDIzLDE2IEBA
IGlubGluZSBTdHJpbmc6OlN0cmluZyhSZWZQdHI8QXRvbVN0cmluZ0ltcGw+JiYgc3RyaW5nKQog
ewogfQogCitpbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RhdGljU3RyaW5nSW1wbCYgc3RyaW5nKQor
ICAgIDogbV9pbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KCZzdHJpbmcpKQorewor
fQorCitpbmxpbmUgU3RyaW5nOjpTdHJpbmcoU3RhdGljU3RyaW5nSW1wbCogc3RyaW5nKQorICAg
IDogbV9pbXBsKHJlaW50ZXJwcmV0X2Nhc3Q8U3RyaW5nSW1wbCo+KHN0cmluZykpCit7Cit9CisK
IGlubGluZSBTdHJpbmc6OlN0cmluZyhBU0NJSUxpdGVyYWwgY2hhcmFjdGVycykKICAgICA6IG1f
aW1wbChjaGFyYWN0ZXJzLmlzTnVsbCgpID8gbnVsbHB0ciA6IFJlZlB0ciB7IFN0cmluZ0ltcGw6
OmNyZWF0ZShjaGFyYWN0ZXJzKSB9KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL1N0YXRpY1N0cmluZy5wbQppbmRleCA0ZmQ2M2JkNzAyYjkuLjEwYWY3YzJmYmJjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0K
QEAgLTQyLDEzICs0MiwxMiBAQCBzdWIgR2VuZXJhdGVTdHJpbmdzKCQpCiBFTkQKIAogICAgIGZv
ciBteSAkbmFtZSAoc29ydCBrZXlzICVzdHJpbmdzKSB7Ci0gICAgICAgIHB1c2goQHJlc3VsdCwg
InN0YXRpYyBMYXp5TmV2ZXJEZXN0cm95ZWQ8U3RyaW5nSW1wbCo+IHNfJHtuYW1lfURhdGE7XG4i
KTsKKyAgICAgICAgbXkgJHZhbHVlID0gJHN0cmluZ3N7JG5hbWV9OworICAgICAgICBwdXNoKEBy
ZXN1bHQsICJzdGF0aWMgY29uc3RleHByIFN0cmluZ0ltcGw6OlN0YXRpY1N0cmluZ0ltcGwgJHtu
YW1lfURhdGEoXCIke3ZhbHVlfVwiKTtcbiIpOwogICAgIH0KIAogICAgIHB1c2goQHJlc3VsdCwg
PDxFTkQpOwogCi0jdW5kZWYgREVDTEFSRV9TVEFUSUNfU1RSSU5HX0lNUEwKLQogI2lmIENPTVBJ
TEVSKE1TVkMpCiAjcHJhZ21hIHdhcm5pbmcocG9wKQogI2VuZGlmCkBAIC02NSwxNCArNjQsMTQg
QEAgc3ViIEdlbmVyYXRlU3RyaW5nQXNzZXJ0cygkKQogCiAgICAgbXkgQHJlc3VsdCA9ICgpOwog
CisgICAgcHVzaChAcmVzdWx0LCAiI2lmbmRlZiBOREVCVUdcbiIpOworCiAgICAgZm9yIG15ICRu
YW1lIChzb3J0IGtleXMgJXN0cmluZ3MpIHsKLSAgICAgICAgbXkgJHZhbHVlID0gJHN0cmluZ3N7
JG5hbWV9OwotICAgICAgICBwdXNoKEByZXN1bHQsICIgICAgc18ke25hbWV9RGF0YS5jb25zdHJ1
Y3QoJlN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGxXaXRob3V0Q29weWluZyhcIiR7
dmFsdWV9XCIsIFwiJHt2YWx1ZX1cIl9zLmxlbmd0aCgpKS5sZWFrUmVmKCkpO1xuIik7Ci0gICAg
ICAgIHB1c2goQHJlc3VsdCwgIiNpZm5kZWYgTkRFQlVHXG4iKTsKLSAgICAgICAgcHVzaChAcmVz
dWx0LCAiICAgIHNfJHtuYW1lfURhdGEuZ2V0KCktPmFzc2VydEhhc2hJc0NvcnJlY3QoKTtcbiIp
OwotICAgICAgICBwdXNoKEByZXN1bHQsICIjZW5kaWYgLy8gTkRFQlVHXG4iKTsKKyAgICAgICAg
cHVzaChAcmVzdWx0LCAiICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgU3RyaW5nSW1wbCo+KCYk
e25hbWV9RGF0YSktPmFzc2VydEhhc2hJc0NvcnJlY3QoKTtcbiIpOwogICAgIH0KIAorICAgIHB1
c2goQHJlc3VsdCwgIiNlbmRpZiAvLyBOREVCVUdcbiIpOworCiAgICAgcHVzaChAcmVzdWx0LCAi
XG4iKTsKIAogICAgIHJldHVybiBqb2luICIiLCBAcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNldC5jcHAKaW5kZXggMGI2MzIxNTUyMTQyLi4wODRkMzE3OGVkYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcApAQCAtMzkwLDcgKzM5MCw3IEBAIEV4Y2VwdGlv
bk9yPFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENTU0ZvbnRGYWNlPj4+IENTU0ZvbnRG
YWNlU2V0OjptYXRjaGluCiAgICAgICAgIEF0b21TdHJpbmcgZmFtaWx5QXRvbTsKICAgICAgICAg
V1RGOjpzd2l0Y2hPbihmYW1pbHlSYXcsIFsmXSAoQ1NTVmFsdWVJRCBmYW1pbHlLZXl3b3JkKSB7
CiAgICAgICAgICAgICBpZiAoZmFtaWx5S2V5d29yZCAhPSBDU1NWYWx1ZVdlYmtpdEJvZHkpCi0g
ICAgICAgICAgICAgICAgZmFtaWx5QXRvbSA9IGZhbWlseU5hbWVzLT5hdChDU1NQcm9wZXJ0eVBh
cnNlckhlbHBlcnM6OmdlbmVyaWNGb250RmFtaWx5SW5kZXgoZmFtaWx5S2V5d29yZCkpOworICAg
ICAgICAgICAgICAgIGZhbWlseUF0b20gPSBmYW1pbHlOYW1lc0RhdGEtPmF0KENTU1Byb3BlcnR5
UGFyc2VySGVscGVyczo6Z2VuZXJpY0ZvbnRGYW1pbHlJbmRleChmYW1pbHlLZXl3b3JkKSk7CiAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQobV9vd25pbmdGb250U2Vs
ZWN0b3IgJiYgbV9vd25pbmdGb250U2VsZWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7
CiAgICAgICAgICAgICAgICAgZmFtaWx5QXRvbSA9IEF0b21TdHJpbmcgeyBtX293bmluZ0ZvbnRT
ZWxlY3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXR0aW5nc1ZhbHVlcygpLmZvbnRH
ZW5lcmljRmFtaWxpZXMuc3RhbmRhcmRGb250RmFtaWx5KCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggNzAyMzdkMzllMGU5Li4yOWJiMzQxNDdkMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC03Nyw5ICs3NywxNSBAQCBDU1NG
b250U2VsZWN0b3I6OkNTU0ZvbnRTZWxlY3RvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KQogICAgICwgbV91bmlxdWVJZCgrK2ZvbnRTZWxlY3RvcklkKQogICAgICwgbV92ZXJzaW9u
KDApCiB7Ci0gICAgbV9mb250RmFtaWx5TmFtZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmYW1p
bHlOYW1lcy0+c2l6ZSgpKTsKLSAgICBmb3IgKGF1dG8mIGZhbWlseU5hbWUgOiBmYW1pbHlOYW1l
cy5nZXQoKSkKLSAgICAgICAgbV9mb250RmFtaWx5TmFtZXMudW5jaGVja2VkQ29uc3RydWN0QW5k
QXBwZW5kKGZhbWlseU5hbWUpOworICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpIHsKKyAg
ICAgICAgbV9mb250RmFtaWx5TmFtZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmYW1pbHlOYW1l
cy0+c2l6ZSgpKTsKKyAgICAgICAgZm9yIChhdXRvJiBmYW1pbHlOYW1lIDogZmFtaWx5TmFtZXMu
Z2V0KCkpCisgICAgICAgICAgICBtX2ZvbnRGYW1pbHlOYW1lcy51bmNoZWNrZWRDb25zdHJ1Y3RB
bmRBcHBlbmQoZmFtaWx5TmFtZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9mb250RmFtaWx5
TmFtZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmYW1pbHlOYW1lc0RhdGEtPnNpemUoKSk7Cisg
ICAgICAgIGZvciAoYXV0byYgZmFtaWx5TmFtZSA6IGZhbWlseU5hbWVzRGF0YS5nZXQoKSkKKyAg
ICAgICAgICAgIG1fZm9udEZhbWlseU5hbWVzLnVuY2hlY2tlZEFwcGVuZChmYW1pbHlOYW1lKTsK
KyAgICB9CiAKICAgICBGb250Q2FjaGU6OmZvckN1cnJlbnRUaHJlYWQoKS5hZGRDbGllbnQoKnRo
aXMpOwogICAgIG1fY3NzRm9udEZhY2VTZXQtPmFkZEZvbnRNb2RpZmllZE9ic2VydmVyKG1fZm9u
dE1vZGlmaWVkT2JzZXJ2ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggYTQzOTE4MmI4
N2QwLi4zMGNlYjRkMzQ5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTg4NywxNyAr
NTg4NywyMSBAQCBib29sIERvY3VtZW50OjpzaG91bGRNYXNrVVJMRm9yQmluZGluZ3NJbnRlcm5h
bChjb25zdCBVUkwmIHVybFRvTWFzaykgY29uc3QKICAgICByZXR1cm4gbWFza2VkVVJMU2NoZW1l
cy5jb250YWluczxTdHJpbmdWaWV3SGFzaFRyYW5zbGF0b3I+KHVybFRvTWFzay5wcm90b2NvbCgp
KTsKIH0KIAorc3RhdGljIFN0YXRpY1N0cmluZ0ltcGwgbWFza2VkVVJMU3RyaW5nIHsgIndlYmtp
dC1tYXNrZWQtdXJsOi8vaGlkZGVuLyIgfTsKK1N0YXRpY1N0cmluZ0ltcGwmIERvY3VtZW50Ojpt
YXNrZWRVUkxTdHJpbmdGb3JCaW5kaW5ncygpCit7CisgICAgcmV0dXJuIG1hc2tlZFVSTFN0cmlu
ZzsKK30KKwogY29uc3QgVVJMJiBEb2N1bWVudDo6bWFza2VkVVJMRm9yQmluZGluZ3MoKQogewog
ICAgIC8vIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBmcm9tIEdDIGhlYXAgdGhyZWFkLCB0
aHVzIHdlIG5lZWQgdG8gdXNlIFN0YXRpY1N0cmluZ0ltcGwgYXMgYSBzb3VyY2Ugb2YgVVJMLgot
ICAgIC8vIFN0YXRpY1N0cmluZ0ltcGwgaXMgbmV2ZXIgY29udmVydGVkIHRvIEF0b21TdHJpbmcs
IGFuZCBpdCBpcyBzYWZlIHRvIGJlIHVzZWQgaW4gYW55IHRocmVhZC4KLSAgICBzdGF0aWMgTGF6
eU5ldmVyRGVzdHJveWVkPFN0cmluZ0ltcGwqPiBtYXNrZWRVUkxTdHJpbmdGb3JCaW5kaW5nczsK
KyAgICAvLyBTdGF0aWNTdHJpbmdJbXBsIGlzIG5ldmVyIGNvbnZlcnRlZCB0byBBdG9tU3RyaW5n
LCBhbmQgaXQgaXMgc2FmZSB0byBiZSB1c2VkIGluIGFueSB0aHJlYWRzLgogICAgIHN0YXRpYyBM
YXp5TmV2ZXJEZXN0cm95ZWQ8VVJMPiB1cmw7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9u
Y2VGbGFnOwogICAgIHN0ZDo6Y2FsbF9vbmNlKG9uY2VGbGFnLCBbJl0gewotICAgICAgICBtYXNr
ZWRVUkxTdHJpbmdGb3JCaW5kaW5ncy5jb25zdHJ1Y3QoJlN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRp
Y1N0cmluZ0ltcGxXaXRob3V0Q29weWluZygid2Via2l0LW1hc2tlZC11cmw6Ly9oaWRkZW4vIiwg
IndlYmtpdC1tYXNrZWQtdXJsOi8vaGlkZGVuLyJfcy5sZW5ndGgoKSkubGVha1JlZigpKTsKLSAg
ICAgICAgdXJsLmNvbnN0cnVjdChtYXNrZWRVUkxTdHJpbmdGb3JCaW5kaW5ncy5nZXQoKSk7Ci0g
ICAgICAgIEFTU0VSVCh1cmwtPnN0cmluZygpLmltcGwoKSA9PSBzdGF0aWNfY2FzdDxTdHJpbmdJ
bXBsKj4obWFza2VkVVJMU3RyaW5nRm9yQmluZGluZ3MuZ2V0KCkpKTsKKyAgICAgICAgdXJsLmNv
bnN0cnVjdChtYXNrZWRVUkxTdHJpbmdGb3JCaW5kaW5ncygpKTsKKyAgICAgICAgQVNTRVJUKHVy
bC0+c3RyaW5nKCkuaW1wbCgpID09ICZzdGF0aWNfY2FzdDxTdHJpbmdJbXBsJj4obWFza2VkVVJM
U3RyaW5nRm9yQmluZGluZ3MoKSkpOwogICAgIH0pOwogICAgIHJldHVybiB1cmw7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCmluZGV4IGZjYTc0MmZlODhlNy4uZDE5MzNjZWVjZDU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtNzY2LDYgKzc2Niw3IEBAIHB1YmxpYzoKIAogICAgIGlubGluZSBib29s
IHNob3VsZE1hc2tVUkxGb3JCaW5kaW5ncyhjb25zdCBVUkwmKSBjb25zdDsKICAgICBpbmxpbmUg
Y29uc3QgVVJMJiBtYXNrZWRVUkxGb3JCaW5kaW5nc0lmTmVlZGVkKGNvbnN0IFVSTCYpIGNvbnN0
OworICAgIHN0YXRpYyBTdGF0aWNTdHJpbmdJbXBsJiBtYXNrZWRVUkxTdHJpbmdGb3JCaW5kaW5n
cygpOwogICAgIHN0YXRpYyBjb25zdCBVUkwmIG1hc2tlZFVSTEZvckJpbmRpbmdzKCk7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDJhYmMxZTEyZDMyMi4uYjY1MTA4NmJhYTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC01MDQ0LDcgKzUwNDQsNyBAQCBTdHJpbmcgRWxlbWVu
dDo6cmVzb2x2ZVVSTFN0cmluZ0lmTmVlZGVkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBSZXNv
bHZlVVJMcyByZQogICAgIGlmIChyZXNvbHZlVVJMcyA9PSBSZXNvbHZlVVJMczo6Tm8pCiAgICAg
ICAgIHJldHVybiB1cmxTdHJpbmc7CiAKLSAgICBjb25zdCBhdXRvJiBtYXNrZWRVUkxTdHJpbmdG
b3JCaW5kaW5ncyA9IGRvY3VtZW50KCkubWFza2VkVVJMRm9yQmluZGluZ3MoKS5zdHJpbmcoKTsK
KyAgICBzdGF0aWMgTWFpblRocmVhZE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IG1h
c2tlZFVSTFN0cmluZ0ZvckJpbmRpbmdzKGRvY3VtZW50KCkubWFza2VkVVJMU3RyaW5nRm9yQmlu
ZGluZ3MoKSk7CiAgICAgVVJMIGNvbXBsZXRlVVJMID0gYmFzZS5pc051bGwoKSA/IGRvY3VtZW50
KCkuY29tcGxldGVVUkwodXJsU3RyaW5nKSA6IFVSTChiYXNlLCB1cmxTdHJpbmcpOwogCiAgICAg
c3dpdGNoIChyZXNvbHZlVVJMcykgewpAQCAtNTA1Myw3ICs1MDUzLDcgQEAgU3RyaW5nIEVsZW1l
bnQ6OnJlc29sdmVVUkxTdHJpbmdJZk5lZWRlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgUmVz
b2x2ZVVSTHMgcmUKIAogICAgIGNhc2UgUmVzb2x2ZVVSTHM6Olllc0V4Y2x1ZGluZ1VSTHNGb3JQ
cml2YWN5OiB7CiAgICAgICAgIGlmIChkb2N1bWVudCgpLnNob3VsZE1hc2tVUkxGb3JCaW5kaW5n
cyhjb21wbGV0ZVVSTCkpCi0gICAgICAgICAgICByZXR1cm4gbWFza2VkVVJMU3RyaW5nRm9yQmlu
ZGluZ3M7CisgICAgICAgICAgICByZXR1cm4gbWFza2VkVVJMU3RyaW5nRm9yQmluZGluZ3MuZ2V0
KCk7CiAgICAgICAgIGlmICghZG9jdW1lbnQoKS51cmwoKS5pc0xvY2FsRmlsZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRlVVJMLnN0cmluZygpOwogICAgICAgICBicmVhazsKQEAgLTUw
NjEsNyArNTA2MSw3IEBAIFN0cmluZyBFbGVtZW50OjpyZXNvbHZlVVJMU3RyaW5nSWZOZWVkZWQo
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlc29sdmVVUkxzIHJlCiAKICAgICBjYXNlIFJlc29s
dmVVUkxzOjpOb0V4Y2x1ZGluZ1VSTHNGb3JQcml2YWN5OgogICAgICAgICBpZiAoZG9jdW1lbnQo
KS5zaG91bGRNYXNrVVJMRm9yQmluZGluZ3MoY29tcGxldGVVUkwpKQotICAgICAgICAgICAgcmV0
dXJuIG1hc2tlZFVSTFN0cmluZ0ZvckJpbmRpbmdzOworICAgICAgICAgICAgcmV0dXJuIG1hc2tl
ZFVSTFN0cmluZ0ZvckJpbmRpbmdzLmdldCgpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug
UmVzb2x2ZVVSTHM6Ok5vOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFt
ZXMucGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAppbmRleCA0MDNiNmFmYzkz
MmMuLmJiNjgwNzEzYjg1ZSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFt
ZXMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKQEAgLTEyMiw5ICsx
MjIsOSBAQCBFTkQKICAgICBwcmludCBGICIgICAgICAgIHJldHVybiBWZWN0b3I8VCwgaW5saW5l
Q2FwYWNpdHk+OjphdChzdGF0aWNfY2FzdDxzaXplX3Q+KGkpKTtcbiI7CiAgICAgcHJpbnQgRiAi
ICAgIH1cbiI7CiAgICAgcHJpbnQgRiAifTtcblxuIjsKLSAgICBwcmludCBGICJleHRlcm4gTGF6
eU5ldmVyRGVzdHJveWVkPEZhbWlseU5hbWVzTGlzdDxjb25zdCBTdHJpbmdJbXBsKiwgIiwgc2Nh
bGFyKGtleXMgJXBhcmFtZXRlcnMpLCAiPj4gZmFtaWx5TmFtZXNEYXRhO1xuIjsKLSAgICBwcmlu
dCBGICJleHRlcm4gTGF6eU5ldmVyRGVzdHJveWVkPEZhbWlseU5hbWVzTGlzdDxBdG9tU3RyaW5n
SW1wbCosICIsIHNjYWxhcihrZXlzICVwYXJhbWV0ZXJzKSwgIj4+IGZhbWlseU5hbWVzO1xuXG4i
OwotICAgIHByaW50TWFjcm9zKCRGLCAiZXh0ZXJuIExhenlOZXZlckRlc3Ryb3llZDxjb25zdCBB
dG9tU3RyaW5nPiIsICIiLCBcJXBhcmFtZXRlcnMpOworICAgIHByaW50IEYgImV4dGVybiBMYXp5
TmV2ZXJEZXN0cm95ZWQ8RmFtaWx5TmFtZXNMaXN0PGNvbnN0IFN0YXRpY1N0cmluZ0ltcGwqLCAi
LCBzY2FsYXIoa2V5cyAlcGFyYW1ldGVycyksICI+PiBmYW1pbHlOYW1lc0RhdGE7XG4iOworICAg
IHByaW50IEYgImV4dGVybiBNYWluVGhyZWFkTGF6eU5ldmVyRGVzdHJveWVkPEZhbWlseU5hbWVz
TGlzdDxBdG9tU3RyaW5nSW1wbCosICIsIHNjYWxhcihrZXlzICVwYXJhbWV0ZXJzKSwgIj4+IGZh
bWlseU5hbWVzO1xuXG4iOworICAgIHByaW50TWFjcm9zKCRGLCAiZXh0ZXJuIE1haW5UaHJlYWRM
YXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4iLCAiIiwgXCVwYXJhbWV0ZXJzKTsK
ICAgICBwcmludCBGICJcbiI7CiAgICAgcHJpbnQgRiAiXG4iOwogCkBAIC0xMzksMTAgKzEzOSwx
MCBAQCBFTkQKIAogICAgIHByaW50IEYgU3RhdGljU3RyaW5nOjpHZW5lcmF0ZVN0cmluZ3MoXCVw
YXJhbWV0ZXJzKTsKIAotICAgIHByaW50IEYgIkxhenlOZXZlckRlc3Ryb3llZDxGYW1pbHlOYW1l
c0xpc3Q8Y29uc3QgU3RyaW5nSW1wbCosICIsIHNjYWxhcihrZXlzICVwYXJhbWV0ZXJzKSwgIj4+
IGZhbWlseU5hbWVzRGF0YTtcbiI7Ci0gICAgcHJpbnQgRiAiTGF6eU5ldmVyRGVzdHJveWVkPEZh
bWlseU5hbWVzTGlzdDxBdG9tU3RyaW5nSW1wbCosICIsIHNjYWxhcihrZXlzICVwYXJhbWV0ZXJz
KSwgIj4+IGZhbWlseU5hbWVzO1xuXG4iOworICAgIHByaW50IEYgIkxhenlOZXZlckRlc3Ryb3ll
ZDxGYW1pbHlOYW1lc0xpc3Q8Y29uc3QgU3RhdGljU3RyaW5nSW1wbCosICIsIHNjYWxhcihrZXlz
ICVwYXJhbWV0ZXJzKSwgIj4+IGZhbWlseU5hbWVzRGF0YTtcbiI7CisgICAgcHJpbnQgRiAiTWFp
blRocmVhZExhenlOZXZlckRlc3Ryb3llZDxGYW1pbHlOYW1lc0xpc3Q8QXRvbVN0cmluZ0ltcGwq
LCAiLCBzY2FsYXIoa2V5cyAlcGFyYW1ldGVycyksICI+PiBmYW1pbHlOYW1lcztcblxuIjsKIAot
ICAgIHByaW50TWFjcm9zKCRGLCAiTGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+
IiwgIiIsIFwlcGFyYW1ldGVycyk7CisgICAgcHJpbnRNYWNyb3MoJEYsICJNYWluVGhyZWFkTGF6
eU5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21TdHJpbmc+IiwgIiIsIFwlcGFyYW1ldGVycyk7CiAK
ICAgICBwcmludEluaXQoJEYsIDApOwogCkBAIC0xNTEsMTIgKzE1MSwxMiBAQCBFTkQKIAogICAg
IHByaW50IEYgIiAgICBmYW1pbHlOYW1lc0RhdGEuY29uc3RydWN0KCk7XG4iOwogICAgIGZvciBt
eSAkbmFtZSAoc29ydCBrZXlzICVwYXJhbWV0ZXJzKSB7Ci0gICAgICAgIHByaW50IEYgIiAgICBm
YW1pbHlOYW1lc0RhdGEtPnVuY2hlY2tlZEFwcGVuZChzXyR7bmFtZX1EYXRhLmdldCgpKTtcbiI7
CisgICAgICAgIHByaW50IEYgIiAgICBmYW1pbHlOYW1lc0RhdGEtPnVuY2hlY2tlZEFwcGVuZCgm
JHtuYW1lfURhdGEpO1xuIjsKICAgICB9CiAKICAgICBwcmludCBGICJcbiI7CiAgICAgZm9yIG15
ICRuYW1lIChzb3J0IGtleXMgJXBhcmFtZXRlcnMpIHsKLSAgICAgICAgcHJpbnQgRiAiICAgICR7
bmFtZX0uY29uc3RydWN0KHNfJHtuYW1lfURhdGEuZ2V0KCkpO1xuIjsKKyAgICAgICAgcHJpbnQg
RiAiICAgICR7bmFtZX0uY29uc3RydWN0KCYke25hbWV9RGF0YSk7XG4iOwogICAgIH0KIAogICAg
IHByaW50IEYgIlxuIjsKQEAgLTk5NiwxOCArOTk2LDEwIEBAIHN1YiBwcmludFRhZ05hbWVDcHBG
aWxlCiAgICAgfQogICAgIHByaW50IEYgIn07XG4iOwogICAgIHByaW50IEYgIlxuIjsKLSAgICBt
eSAkdW5hZGp1c3RlZFRhZ05hbWVzQ291bnQgPSAwOwotICAgIHByaW50IEYgInN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogY29uc3QgdW5hZGp1c3RlZFRhZ05hbWVzW10gPSB7XG4iOworICAg
IHByaW50IEYgInN0YXRpYyBjb25zdGV4cHIgU3RyaW5nSW1wbDo6U3RhdGljU3RyaW5nSW1wbCB1
bmFkanVzdGVkVGFnTmFtZXNbXSA9IHtcbiI7CiAgICAgZm9yIG15ICRlbGVtZW50S2V5IChzb3J0
IGJ5RWxlbWVudE5hbWVPcmRlciBrZXlzICVhbGxFbGVtZW50cykgewogICAgICAgICBuZXh0IGlm
ICRhbGxFbGVtZW50c3skZWxlbWVudEtleX17dW5hZGp1c3RlZFRhZ0VudW1WYWx1ZX0gZXEgIiI7
Ci0gICAgICAgICsrJHVuYWRqdXN0ZWRUYWdOYW1lc0NvdW50OwotICAgICAgICBwcmludCBGICIg
ICAgXCIkYWxsRWxlbWVudHN7JGVsZW1lbnRLZXl9e3BhcnNlZFRhZ05hbWV9XCIsXG4iOwotICAg
IH0KLSAgICBwcmludCBGICJ9O1xuIjsKLSAgICBwcmludCBGICJzdGF0aWMgY29uc3RleHByIHNp
emVfdCB1bmFkanVzdGVkVGFnTmFtZXNMZW5ndGhzWyR1bmFkanVzdGVkVGFnTmFtZXNDb3VudF0g
PSB7XG4iOwotICAgIGZvciBteSAkZWxlbWVudEtleSAoc29ydCBieUVsZW1lbnROYW1lT3JkZXIg
a2V5cyAlYWxsRWxlbWVudHMpIHsKLSAgICAgICAgbmV4dCBpZiAkYWxsRWxlbWVudHN7JGVsZW1l
bnRLZXl9e3VuYWRqdXN0ZWRUYWdFbnVtVmFsdWV9IGVxICIiOwotICAgICAgICBwcmludCBGICIg
ICAgXCIkYWxsRWxlbWVudHN7JGVsZW1lbnRLZXl9e3BhcnNlZFRhZ05hbWV9XCJfcy5sZW5ndGgo
KSxcbiI7CisgICAgICAgIHByaW50IEYgIiAgICBTdHJpbmdJbXBsOjpTdGF0aWNTdHJpbmdJbXBs
IHsgXCIkYWxsRWxlbWVudHN7JGVsZW1lbnRLZXl9e3BhcnNlZFRhZ05hbWV9XCIgfSxcbiI7CiAg
ICAgfQogICAgIHByaW50IEYgIn07XG4iOwogICAgIHByaW50IEYgIlxuIjsKQEAgLTEwMjEsMTAg
KzEwMTMsOSBAQCBzdWIgcHJpbnRUYWdOYW1lQ3BwRmlsZQogICAgIHByaW50IEYgIiAgICArK3Rh
Z05hbWVzRW50cnk7IC8vIFNraXAgVGFnTmFtZTo6VW5rbm93blxuIjsKICAgICBwcmludCBGICIg
ICAgZm9yIChhdXRvKiBxdWFsaWZpZWROYW1lIDogdGFnUXVhbGlmaWVkTmFtZVBvaW50ZXJzKVxu
IjsKICAgICBwcmludCBGICIgICAgICAgICoodGFnTmFtZXNFbnRyeSsrKSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8TGF6eU5ldmVyRGVzdHJveWVkPFF1YWxpZmllZE5hbWU+Kj4ocXVhbGlmaWVkTmFtZSkt
PmdldCgpLmxvY2FsTmFtZSgpO1xuIjsKLSAgICBwcmludCBGICIgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8ICR1bmFkanVzdGVkVGFnTmFtZXNDb3VudDsgKytpKSB7XG4iOwotICAgIHByaW50
IEYgIiAgICAgICAgYXV0byBpbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1w
bCh1bmFkanVzdGVkVGFnTmFtZXNbaV0sIHVuYWRqdXN0ZWRUYWdOYW1lc0xlbmd0aHNbaV0pO1xu
IjsKLSAgICBwcmludCBGICIgICAgICAgIGltcGwtPmFzc2VydEhhc2hJc0NvcnJlY3QoKTtcbiI7
Ci0gICAgcHJpbnQgRiAiICAgICAgICAqKHRhZ05hbWVzRW50cnkrKykgPSBBdG9tU3RyaW5nKGlt
cGwuZ2V0KCkpO1xuIjsKKyAgICBwcmludCBGICIgICAgZm9yIChhdXRvJiBzdHJpbmcgOiB1bmFk
anVzdGVkVGFnTmFtZXMpIHtcbiI7CisgICAgcHJpbnQgRiAiICAgICAgICByZWludGVycHJldF9j
YXN0PGNvbnN0IFN0cmluZ0ltcGwmPihzdHJpbmcpLmFzc2VydEhhc2hJc0NvcnJlY3QoKTtcbiI7
CisgICAgcHJpbnQgRiAiICAgICAgICAqKHRhZ05hbWVzRW50cnkrKykgPSBBdG9tU3RyaW5nKCZz
dHJpbmcpO1xuIjsKICAgICBwcmludCBGICIgICAgfVxuIjsKICAgICBwcmludCBGICIgICAgQVNT
RVJUKHRhZ05hbWVzRW50cnkgPT0gdGFnTmFtZVN0cmluZ3MtPmVuZCgpKTtcbiI7CiAgICAgcHJp
bnQgRiAifVxuIjsKQEAgLTE2MjQsNyArMTYxNSw3IEBAIHN1YiBwcmludERlZmluaXRpb25zCiAK
ICAgICBteSBAdGFibGVFbnRyeUZpZWxkcyA9ICgKICAgICAgICAgIkxhenlOZXZlckRlc3Ryb3ll
ZDxjb25zdCBRdWFsaWZpZWROYW1lPiogdGFyZ2V0QWRkcmVzcyIsCi0gICAgICAgICJTdHJpbmdJ
bXBsKiBuYW1lIiwKKyAgICAgICAgImNvbnN0IFN0YXRpY1N0cmluZ0ltcGwmIG5hbWUiLAogICAg
ICAgICAiTm9kZU5hbWUgbm9kZU5hbWUiCiAgICAgKTsKIApAQCAtMTY0MywxMyArMTYzNCwxMyBA
QCBzdWIgcHJpbnREZWZpbml0aW9ucwogICAgICAgICBteSAkaWRlbnRpZmllciA9ICRuYW1lc1Jl
Zi0+eyRrZXl9e2lkZW50aWZpZXJ9OwogICAgICAgICBteSAkbm9kZU5hbWVFbnVtVmFsdWUgPSAk
bmFtZXNSZWYtPnska2V5fXtub2RlTmFtZUVudW1WYWx1ZX0gfHwgIlVua25vd24iOwogICAgICAg
ICAjIEF0dHJpYnV0ZSBuYW1lcyBuZXZlciBjb3JyZXNwb25kIHRvIGEgcmVjb2duaXplZCBOb2Rl
TmFtZS4KLSAgICAgICAgcHJpbnQgRiAiICAgICAgICB7ICRjYXN0JiRpZGVudGlmaWVyJHNob3J0
Q2FtZWxUeXBlLCBzXyR7aWRlbnRpZmllcn1EYXRhLmdldCgpLCBOb2RlTmFtZTo6JG5vZGVOYW1l
RW51bVZhbHVlIH0sXG4iOworICAgICAgICBwcmludCBGICIgICAgICAgIHsgJGNhc3QmJGlkZW50
aWZpZXIkc2hvcnRDYW1lbFR5cGUsICooJiR7aWRlbnRpZmllcn1EYXRhKSwgTm9kZU5hbWU6OiRu
b2RlTmFtZUVudW1WYWx1ZSB9LFxuIjsKICAgICB9CiAKICAgICBwcmludCBGICIgICAgfTtcbiI7
CiAgICAgcHJpbnQgRiAiXG4iOwogICAgIHByaW50IEYgIiAgICBmb3IgKGF1dG8mIGVudHJ5IDog
JHt0eXBlfVRhYmxlKVxuIjsKLSAgICBwcmludCBGICIgICAgICAgIGVudHJ5LnRhcmdldEFkZHJl
c3MtPmNvbnN0cnVjdChudWxsQXRvbSgpLCBBdG9tU3RyaW5nKGVudHJ5Lm5hbWUpLCAkbmFtZXNw
YWNlVVJJLCBOYW1lc3BhY2U6OiRuYW1lc3BhY2VFbnVtVmFsdWUsIGVudHJ5Lm5vZGVOYW1lKTtc
biI7CisgICAgcHJpbnQgRiAiICAgICAgICBlbnRyeS50YXJnZXRBZGRyZXNzLT5jb25zdHJ1Y3Qo
bnVsbEF0b20oKSwgQXRvbVN0cmluZygmZW50cnkubmFtZSksICRuYW1lc3BhY2VVUkksIE5hbWVz
cGFjZTo6JG5hbWVzcGFjZUVudW1WYWx1ZSwgZW50cnkubm9kZU5hbWUpO1xuIjsKIH0KIAogIyMg
RWxlbWVudEZhY3Rvcnkgcm91dGluZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlRm9udHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRm9udENhc2NhZGVGb250cy5jcHAKaW5kZXggYTZlZjEzYWFmODI3Li5kMzYy
ZmZlMmRmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlRm9udHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRDYXNjYWRlRm9udHMuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgY29uc3QgRm9udFJhbmdl
cyYgRm9udENhc2NhZGVGb250czo6cmVhbGl6ZUZhbGxiYWNrUmFuZ2VzQXQoY29uc3QgRm9udENh
c2NhZGVEZXMKICAgICBpZiAoIWluZGV4KSB7CiAgICAgICAgIGZvbnRSYW5nZXMgPSByZWFsaXpl
TmV4dEZhbGxiYWNrKGRlc2NyaXB0aW9uLCBtX2xhc3RSZWFsaXplZEZhbGxiYWNrSW5kZXgsIG1f
Zm9udFNlbGVjdG9yLmdldCgpKTsKICAgICAgICAgaWYgKGZvbnRSYW5nZXMuaXNOdWxsKCkgJiYg
bV9mb250U2VsZWN0b3IpCi0gICAgICAgICAgICBmb250UmFuZ2VzID0gbV9mb250U2VsZWN0b3It
PmZvbnRSYW5nZXNGb3JGYW1pbHkoZGVzY3JpcHRpb24sIGZhbWlseU5hbWVzLT5hdChGYW1pbHlO
YW1lc0luZGV4OjpTdGFuZGFyZEZhbWlseSkpOworICAgICAgICAgICAgZm9udFJhbmdlcyA9IG1f
Zm9udFNlbGVjdG9yLT5mb250UmFuZ2VzRm9yRmFtaWx5KGRlc2NyaXB0aW9uLCBmYW1pbHlOYW1l
c0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSk7CiAgICAgICAgIGlm
IChmb250UmFuZ2VzLmlzTnVsbCgpKQogICAgICAgICAgICAgZm9udFJhbmdlcyA9IEZvbnRSYW5n
ZXMoRm9udENhY2hlOjpmb3JDdXJyZW50VGhyZWFkKCkubGFzdFJlc29ydEZhbGxiYWNrRm9udChk
ZXNjcmlwdGlvbikpOwogICAgICAgICByZXR1cm4gZm9udFJhbmdlczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZUZvckZvbnRSYXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlRm9yRm9udFJhdy5jcHAKaW5kZXggNzc2MDIzOTEwNDVk
Li44MzJjNjFiNjgzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVz
b2x2ZUZvckZvbnRSYXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2
ZUZvckZvbnRSYXcuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHN0ZDo6b3B0aW9uYWw8Rm9udENhc2Nh
ZGU+IHJlc29sdmVGb3JGb250UmF3KGNvbnN0IEZvbnRSYXcmIGZvbnRSYXcsIEZvbnRDYXNjYWRl
CiAgICAgICAgIHN3aXRjaE9uKGl0ZW0sIFsmXSAoQ1NTVmFsdWVJRCBpZGVudCkgewogICAgICAg
ICAgICAgaXNHZW5lcmljRmFtaWx5ID0gaWRlbnQgIT0gQ1NTVmFsdWVXZWJraXRCb2R5OwogICAg
ICAgICAgICAgaWYgKGlzR2VuZXJpY0ZhbWlseSkKLSAgICAgICAgICAgICAgICBmYW1pbHkgPSBm
YW1pbHlOYW1lcy0+YXQoQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpnZW5lcmljRm9udEZhbWls
eUluZGV4KGlkZW50KSk7CisgICAgICAgICAgICAgICAgZmFtaWx5ID0gZmFtaWx5TmFtZXNEYXRh
LT5hdChDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmdlbmVyaWNGb250RmFtaWx5SW5kZXgoaWRl
bnQpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmYW1pbHkgPSBBdG9tU3Ry
aW5nKGNvbnRleHQuc2V0dGluZ3NWYWx1ZXMoKS5mb250R2VuZXJpY0ZhbWlsaWVzLnN0YW5kYXJk
Rm9udEZhbWlseSgpKTsKICAgICAgICAgfSwgWyZdIChjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHlT
dHJpbmcpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGls
aXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFp
bi5tbQppbmRleCA3NzI5OTAwNDgxYmYuLmQ4NjYyNDgzOGNiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1Nl
cnZpY2VNYWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlTWFpbi5tbQpAQCAtMjIzLDEzICsyMjMsMTEg
QEAgaW50IFhQQ1NlcnZpY2VNYWluKGludCwgY29uc3QgY2hhcioqKQogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgY29uc3QgY2hhciogd2ViS2l0QnVuZGxlVmVyc2lv
biA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoYm9vdHN0cmFwLmdldCgpLCAiV2ViS2l0QnVu
ZGxlVmVyc2lvbiIpOwotICAgICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEJ1bmRsZVZlcnNpb24g
PSBbW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdCJdLmlu
Zm9EaWN0aW9uYXJ5WyhfX2JyaWRnZSBOU1N0cmluZyAqKWtDRkJ1bmRsZVZlcnNpb25LZXldIGNT
dHJpbmdVc2luZ0VuY29kaW5nOk5TSVNPTGF0aW4xU3RyaW5nRW5jb2RpbmddOwotICAgICAgICBp
ZiAoIXdlYktpdEJ1bmRsZVZlcnNpb24gfHwgIWV4cGVjdGVkQnVuZGxlVmVyc2lvbiB8fCBzdHJu
Y21wKHdlYktpdEJ1bmRsZVZlcnNpb24sIGV4cGVjdGVkQnVuZGxlVmVyc2lvbiwgc3RybGVuKGV4
cGVjdGVkQnVuZGxlVmVyc2lvbikpKSB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgbXNnTGVuID0g
c3RybGVuKCJXZWJLaXQgZnJhbWV3b3JrIHZlcnNpb24gbWlzbWF0Y2g6ICVzICE9ICVzXG4iKSAr
IHN0cmxlbih3ZWJLaXRCdW5kbGVWZXJzaW9uKSArIHN0cmxlbihleHBlY3RlZEJ1bmRsZVZlcnNp
b24pOwotICAgICAgICAgICAgY2hhciogbXNnID0gKGNoYXIqKSBtYWxsb2Moc2l6ZW9mKGNoYXIp
ICogbXNnTGVuKTsKLSAgICAgICAgICAgIHNucHJpbnRmKG1zZywgbXNnTGVuLCAiV2ViS2l0IGZy
YW1ld29yayB2ZXJzaW9uIG1pc21hdGNoOiAlcyAhPSAlc1xuIiwgd2ViS2l0QnVuZGxlVmVyc2lv
biwgZXhwZWN0ZWRCdW5kbGVWZXJzaW9uKTsKLSAgICAgICAgICAgIGxvZ0FuZFNldENyYXNoTG9n
TWVzc2FnZShtc2cpOworICAgICAgICBhdXRvIHdlYktpdEJ1bmRsZVZlcnNpb24gPSBTdHJpbmc6
OmZyb21MYXRpbjEoeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhib290c3RyYXAuZ2V0KCksICJX
ZWJLaXRCdW5kbGVWZXJzaW9uIikpOworICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCdW5kbGVWZXJz
aW9uID0gW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVyOkAiY29tLmFwcGxlLldlYktpdCJd
LmluZm9EaWN0aW9uYXJ5WyhfX2JyaWRnZSBOU1N0cmluZyAqKWtDRkJ1bmRsZVZlcnNpb25LZXld
OworICAgICAgICBpZiAoIXdlYktpdEJ1bmRsZVZlcnNpb24uaXNOdWxsKCkgJiYgIWV4cGVjdGVk
QnVuZGxlVmVyc2lvbi5pc051bGwoKSAmJiB3ZWJLaXRCdW5kbGVWZXJzaW9uICE9IGV4cGVjdGVk
QnVuZGxlVmVyc2lvbikgeworICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBtYWtlU3Ry
aW5nKCJXZWJLaXQgZnJhbWV3b3JrIHZlcnNpb24gbWlzbWF0Y2g6ICIsIHdlYktpdEJ1bmRsZVZl
cnNpb24sICIgIT0gIiwgZXhwZWN0ZWRCdW5kbGVWZXJzaW9uKTsKKyAgICAgICAgICAgIGxvZ0Fu
ZFNldENyYXNoTG9nTWVzc2FnZShlcnJvck1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAg
ICAgICBjcmFzaER1ZVdlYktpdEZyYW1ld29ya1ZlcnNpb25NaXNtYXRjaCgpOwogICAgICAgICB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1ByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJl
ZmVyZW5jZXMubW0KaW5kZXggM2UwZDI2MzI0NTU1Li5mZDE2MTljZjBmOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCkBAIC0y
OSw3ICsyOSw2IEBACiAjaW1wb3J0ICJBUElBcnJheS5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgog
I2ltcG9ydCAiV0tOU0FycmF5LmgiCi0jaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogI2lt
cG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIKICNpbXBvcnQgIl9XS0ZlYXR1cmVJbnRlcm5hbC5oIgog
I2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgpAQCAtNTY1LDE0ICs1NjQsMTIgQEAg
LSAodm9pZClfc2V0Rml4ZWRQaXRjaEZvbnRGYW1pbHk6KE5TU3RyaW5nICopZml4ZWRQaXRjaEZv
bnRGYW1pbHkKIAogKyAoTlNBcnJheTxfV0tGZWF0dXJlICo+ICopX2ZlYXR1cmVzCiB7Ci0gICAg
V2ViS2l0OjpJbml0aWFsaXplV2ViS2l0MigpOwogICAgIGF1dG8gZmVhdHVyZXMgPSBXZWJLaXQ6
OldlYlByZWZlcmVuY2VzOjpmZWF0dXJlcygpOwogICAgIHJldHVybiB3cmFwcGVyKEFQSTo6QXJy
YXk6OmNyZWF0ZShXVEZNb3ZlKGZlYXR1cmVzKSkpOwogfQogCiArIChOU0FycmF5PF9XS0ZlYXR1
cmUgKj4gKilfaW50ZXJuYWxEZWJ1Z0ZlYXR1cmVzCiB7Ci0gICAgV2ViS2l0OjpJbml0aWFsaXpl
V2ViS2l0MigpOwogICAgIGF1dG8gZmVhdHVyZXMgPSBXZWJLaXQ6OldlYlByZWZlcmVuY2VzOjpp
bnRlcm5hbERlYnVnRmVhdHVyZXMoKTsKICAgICByZXR1cm4gd3JhcHBlcihBUEk6OkFycmF5Ojpj
cmVhdGUoV1RGTW92ZShmZWF0dXJlcykpKTsKIH0KQEAgLTU4OSw3ICs1ODYsNiBAQCAtICh2b2lk
KV9zZXRFbmFibGVkOihCT09MKXZhbHVlIGZvckludGVybmFsRGVidWdGZWF0dXJlOihfV0tGZWF0
dXJlICopZmVhdHVyZQogCiArIChOU0FycmF5PF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUgKj4gKilf
ZXhwZXJpbWVudGFsRmVhdHVyZXMKIHsKLSAgICBXZWJLaXQ6OkluaXRpYWxpemVXZWJLaXQyKCk7
CiAgICAgYXV0byBmZWF0dXJlcyA9IFdlYktpdDo6V2ViUHJlZmVyZW5jZXM6OmV4cGVyaW1lbnRh
bEZlYXR1cmVzKCk7CiAgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1v
dmUoZmVhdHVyZXMpKSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9KU09OVmFsdWUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSlNPTlZh
bHVlLmNwcAppbmRleCBjMDkzNDg2ZGU5NjMuLjQ1ODEyMDBiYjAxNCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSlNPTlZhbHVlLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9KU09OVmFsdWUuY3BwCkBAIC02OTksMTQgKzY5OSwyMiBAQCBU
RVNUKEpTT05WYWx1ZSwgTWVtb3J5Q29zdCkKICAgICAgICAgUmVmPEpTT046OlZhbHVlPiB2YWx1
ZSA9IEpTT046OlZhbHVlOjpjcmVhdGUobWFrZVN0cmluZygidGVzdCJfcykpOwogICAgICAgICBz
aXplX3QgbWVtb3J5Q29zdCA9IHZhbHVlLT5tZW1vcnlDb3N0KCk7CiAgICAgICAgIEVYUEVDVF9H
VChtZW1vcnlDb3N0LCAwVSk7CisjaWYgSEFWRSgzNkJJVF9BRERSRVNTKQogICAgICAgICBFWFBF
Q1RfTEUobWVtb3J5Q29zdCwgNDRVKTsKKyNlbHNlCisgICAgICAgIEVYUEVDVF9MRShtZW1vcnlD
b3N0LCAzNlUpOworI2VuZGlmCiAgICAgfQogCiAgICAgewogICAgICAgICBSZWY8SlNPTjo6VmFs
dWU+IHZhbHVlID0gSlNPTjo6VmFsdWU6OmNyZWF0ZShlbXB0eVN0cmluZygpKTsKICAgICAgICAg
c2l6ZV90IG1lbW9yeUNvc3QgPSB2YWx1ZS0+bWVtb3J5Q29zdCgpOwogICAgICAgICBFWFBFQ1Rf
R1QobWVtb3J5Q29zdCwgMFUpOworI2lmIEhBVkUoMzZCSVRfQUREUkVTUykKICAgICAgICAgRVhQ
RUNUX0xFKG1lbW9yeUNvc3QsIDQwVSk7CisjZWxzZQorICAgICAgICBFWFBFQ1RfTEUobWVtb3J5
Q29zdCwgMzJVKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAKaW5kZXggOGRiNGEwOGY1MDhmLi4yMWU4MzM5Yzcz
YWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCkBA
IC02MTUsMTEgKzYxNSwxMSBAQCBURVNUKFdURiwgU3RyaW5nSW1wbE51bGxTeW1ib2xUb0F0b21T
dHJpbmcpCiAgICAgQVNTRVJUX1RSVUUocmVzdWx0Mik7CiB9CiAKLXN0YXRpYyBTdHJpbmdJbXBs
KiBzdGF0aWNTdHJpbmcgPSBNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiQ29jb2EiKTsKK3N0YXRp
YyBTdHJpbmdJbXBsOjpTdGF0aWNTdHJpbmdJbXBsIHN0YXRpY1N0cmluZyB7IkNvY29hIn07CiAK
IFRFU1QoV1RGLCBTdHJpbmdJbXBsU3RhdGljVG9BdG9tU3RyaW5nKQogewotICAgIFN0cmluZ0lt
cGwmIG9yaWdpbmFsID0gKnN0YXRpY1N0cmluZzsKKyAgICBTdHJpbmdJbXBsJiBvcmlnaW5hbCA9
IHN0YXRpY1N0cmluZzsKICAgICBBU1NFUlRfRkFMU0Uob3JpZ2luYWwuaXNTeW1ib2woKSk7CiAg
ICAgQVNTRVJUX0ZBTFNFKG9yaWdpbmFsLmlzQXRvbSgpKTsKICAgICBBU1NFUlRfVFJVRShvcmln
aW5hbC5pc1N0YXRpYygpKTsKQEAgLTczNCw2ICs3MzQsMjMgQEAgVEVTVChXVEYsIER5bmFtaWNT
dGF0aWNTdHJpbmdJbXBsKQogICAgIGRvU3RhdGljU3RyaW5nSW1wbFRlc3RzKFN0YXRpY1N0cmlu
Z0ltcGxUZXN0U2V0OjpEeW5hbWljYWxseUFsbG9jYXRlZEltcGwsIGhlbGxvLCB3b3JsZCwgbG9u
Z2VyLCBoZWxsbzIpOwogfQogCitzdGF0aWMgU3ltYm9sSW1wbDo6U3RhdGljU3ltYm9sSW1wbCBz
dGF0aWNTeW1ib2wgeyJDb2NvYSJ9Oworc3RhdGljIFN5bWJvbEltcGw6OlN0YXRpY1N5bWJvbElt
cGwgc3RhdGljUHJpdmF0ZVN5bWJvbCB7IkNvY29hIiwgU3ltYm9sSW1wbDo6c19mbGFnSXNQcml2
YXRlIH07CisKK1RFU1QoV1RGLCBTdGF0aWNTeW1ib2xJbXBsKQoreworICAgIGF1dG8mIHN5bWJv
bCA9IHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPihzdGF0aWNTeW1ib2wpOworICAgIEFTU0VSVF9U
UlVFKHN5bWJvbC5pc1N5bWJvbCgpKTsKKyAgICBBU1NFUlRfRkFMU0Uoc3ltYm9sLmlzUHJpdmF0
ZSgpKTsKK30KKworVEVTVChXVEYsIFN0YXRpY1ByaXZhdGVTeW1ib2xJbXBsKQoreworICAgIGF1
dG8mIHN5bWJvbCA9IHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPihzdGF0aWNQcml2YXRlU3ltYm9s
KTsKKyAgICBBU1NFUlRfVFJVRShzeW1ib2wuaXNTeW1ib2woKSk7CisgICAgQVNTRVJUX1RSVUUo
c3ltYm9sLmlzUHJpdmF0ZSgpKTsKK30KKwogVEVTVChXVEYsIEV4dGVybmFsU3RyaW5nSW1wbENy
ZWF0ZThiaXQpCiB7CiAgICAgY29uc3RleHByIExDaGFyIGJ1ZmZlcltdID0gImhlbGxvIjsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCmlu
ZGV4IDA3OWU5NzQ0NTBlNC4uZjgwZWIyNWU0ODg3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKQEAgLTQyLDE1ICs0MiwxNiBAQAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKyAg
ICAKK2NvbnN0IFN0cmluZyBGaWxlTW9uaXRvclRlc3REYXRhKCJUaGlzIGlzIGEgdGVzdCJfcyk7
Citjb25zdCBTdHJpbmcgRmlsZU1vbml0b3JSZXZpc2VkRGF0YSgiVGhpcyBpcyBzb21lIGNoYW5n
ZWQgdGV4dCBmb3IgdGhlIHRlc3QiX3MpOworY29uc3QgU3RyaW5nIEZpbGVNb25pdG9yU2Vjb25k
UmV2aXNlZERhdGEoIlRoaXMgaXMgc29tZSBjaGFuZ2VkIHRleHQgZm9yIHRoZSB0ZXN0Il9zKTsK
IAogY2xhc3MgRmlsZU1vbml0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogcHVibGlj
OgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgV1RGOjppbml0aWFs
aXplTWFpblRocmVhZCgpOwotICAgICAgICBjb25zdCBTdHJpbmcgRmlsZU1vbml0b3JUZXN0RGF0
YSgiVGhpcyBpcyBhIHRlc3QiX3MpOwotICAgICAgICBjb25zdCBTdHJpbmcgRmlsZU1vbml0b3JS
ZXZpc2VkRGF0YSgiVGhpcyBpcyBzb21lIGNoYW5nZWQgdGV4dCBmb3IgdGhlIHRlc3QiX3MpOwot
ICAgICAgICBjb25zdCBTdHJpbmcgRmlsZU1vbml0b3JTZWNvbmRSZXZpc2VkRGF0YSgiVGhpcyBp
cyBzb21lIGNoYW5nZWQgdGV4dCBmb3IgdGhlIHRlc3QiX3MpOwogICAgICAgICAKICAgICAgICAg
Ly8gY3JlYXRlIHRlbXAgZmlsZQogICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlOwpAQCAtMTIxLDEwICsxMjIsNiBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBE
ZXRlY3RDaGFuZ2UpCiAKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKLSAgICBj
b25zdCBTdHJpbmcgRmlsZU1vbml0b3JUZXN0RGF0YSgiVGhpcyBpcyBhIHRlc3QiX3MpOwotICAg
IGNvbnN0IFN0cmluZyBGaWxlTW9uaXRvclJldmlzZWREYXRhKCJUaGlzIGlzIHNvbWUgY2hhbmdl
ZCB0ZXh0IGZvciB0aGUgdGVzdCJfcyk7Ci0gICAgY29uc3QgU3RyaW5nIEZpbGVNb25pdG9yU2Vj
b25kUmV2aXNlZERhdGEoIlRoaXMgaXMgc29tZSBjaGFuZ2VkIHRleHQgZm9yIHRoZSB0ZXN0Il9z
KTsKLQogICAgIGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBR
dWV1ZSIpOwogCiAgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVt
cEZpbGVQYXRoKCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNo
YW5nZVR5cGUgdHlwZSkgewpAQCAtMTM5LDcgKzEzNiw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRl
c3QsIERldGVjdENoYW5nZSkKICAgICAgICAgfQogICAgIH0pOwogCi0gICAgdGVzdFF1ZXVlLT5k
aXNwYXRjaChbPSwgdGhpc10gKCkgbXV0YWJsZSB7CisgICAgdGVzdFF1ZXVlLT5kaXNwYXRjaChb
dGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgIFN0cmluZyBmaWxlQ29udGVudHMgPSByZWFkQ29u
dGVudHNPZkZpbGUodGVtcEZpbGVQYXRoKCkpOwogICAgICAgICBFWFBFQ1RfU1RSRVEoRmlsZU1v
bml0b3JUZXN0RGF0YS51dGY4KCkuZGF0YSgpLCBmaWxlQ29udGVudHMudXRmOCgpLmRhdGEoKSk7
CiAKQEAgLTE2Niw5ICsxNjMsNiBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRlY3RNdWx0
aXBsZUNoYW5nZXMpCiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyh0ZW1w
RmlsZVBhdGgoKSkpOwogCiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwotICAgIGNv
bnN0IFN0cmluZyBGaWxlTW9uaXRvclRlc3REYXRhKCJUaGlzIGlzIGEgdGVzdCJfcyk7Ci0gICAg
Y29uc3QgU3RyaW5nIEZpbGVNb25pdG9yUmV2aXNlZERhdGEoIlRoaXMgaXMgc29tZSBjaGFuZ2Vk
IHRleHQgZm9yIHRoZSB0ZXN0Il9zKTsKLSAgICBjb25zdCBTdHJpbmcgRmlsZU1vbml0b3JTZWNv
bmRSZXZpc2VkRGF0YSgiVGhpcyBpcyBzb21lIGNoYW5nZWQgdGV4dCBmb3IgdGhlIHRlc3QiX3Mp
OwogCiAgICAgYXV0byB0ZXN0UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiVGVzdCBXb3JrIFF1
ZXVlIik7CiAKQEAgLTE4NCw3ICsxNzgsNyBAQCBURVNUX0YoRmlsZU1vbml0b3JUZXN0LCBEZXRl
Y3RNdWx0aXBsZUNoYW5nZXMpCiAgICAgICAgIH0KICAgICB9KTsKICAgICAKLSAgICB0ZXN0UXVl
dWUtPmRpc3BhdGNoKFs9LCB0aGlzXSAoKSBtdXRhYmxlIHsKKyAgICB0ZXN0UXVldWUtPmRpc3Bh
dGNoKFt0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAgICAgU3RyaW5nIGZpbGVDb250ZW50cyA9IHJl
YWRDb250ZW50c09mRmlsZSh0ZW1wRmlsZVBhdGgoKSk7CiAgICAgICAgIEVYUEVDVF9TVFJFUShG
aWxlTW9uaXRvclRlc3REYXRhLnV0ZjgoKS5kYXRhKCksIGZpbGVDb250ZW50cy51dGY4KCkuZGF0
YSgpKTsKIApAQCAtMjA1LDcgKzE5OSw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVj
dE11bHRpcGxlQ2hhbmdlcykKIAogICAgIHJlc2V0VGVzdFN0YXRlKCk7CiAKLSAgICB0ZXN0UXVl
dWUtPmRpc3BhdGNoKFs9LCB0aGlzXSAoKSBtdXRhYmxlIHsKKyAgICB0ZXN0UXVldWUtPmRpc3Bh
dGNoKFt0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBzZWNvbmRDb21tYW5kID0gY3Jl
YXRlQ29tbWFuZCh0ZW1wRmlsZVBhdGgoKSwgRmlsZU1vbml0b3JTZWNvbmRSZXZpc2VkRGF0YSk7
CiAgICAgICAgIGF1dG8gcmMgPSBzeXN0ZW0oc2Vjb25kQ29tbWFuZC51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgQVNTRVJUX05FKHJjLCAtMSk7CkBAIC0yNjQsOSArMjU4LDYgQEAgVEVTVF9GKEZp
bGVNb25pdG9yVGVzdCwgRGV0ZWN0Q2hhbmdlQW5kVGhlbkRlbGV0ZSkKICAgICBFWFBFQ1RfVFJV
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CiAKICAgICBXVEY6Omlu
aXRpYWxpemVNYWluVGhyZWFkKCk7Ci0gICAgY29uc3QgU3RyaW5nIEZpbGVNb25pdG9yVGVzdERh
dGEoIlRoaXMgaXMgYSB0ZXN0Il9zKTsKLSAgICBjb25zdCBTdHJpbmcgRmlsZU1vbml0b3JSZXZp
c2VkRGF0YSgiVGhpcyBpcyBzb21lIGNoYW5nZWQgdGV4dCBmb3IgdGhlIHRlc3QiX3MpOwotICAg
IGNvbnN0IFN0cmluZyBGaWxlTW9uaXRvclNlY29uZFJldmlzZWREYXRhKCJUaGlzIGlzIHNvbWUg
Y2hhbmdlZCB0ZXh0IGZvciB0aGUgdGVzdCJfcyk7CiAKICAgICBhdXRvIHRlc3RRdWV1ZSA9IFdv
cmtRdWV1ZTo6Y3JlYXRlKCJUZXN0IFdvcmsgUXVldWUiKTsKIApAQCAtMjgyLDcgKzI3Myw3IEBA
IFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdENoYW5nZUFuZFRoZW5EZWxldGUpCiAgICAg
ICAgIH0KICAgICB9KTsKIAotICAgIHRlc3RRdWV1ZS0+ZGlzcGF0Y2goWz0sIHRoaXNdICgpIG11
dGFibGUgeworICAgIHRlc3RRdWV1ZS0+ZGlzcGF0Y2goW3RoaXNdICgpIG11dGFibGUgewogICAg
ICAgICBTdHJpbmcgZmlsZUNvbnRlbnRzID0gcmVhZENvbnRlbnRzT2ZGaWxlKHRlbXBGaWxlUGF0
aCgpKTsKICAgICAgICAgRVhQRUNUX1NUUkVRKEZpbGVNb25pdG9yVGVzdERhdGEudXRmOCgpLmRh
dGEoKSwgZmlsZUNvbnRlbnRzLnV0ZjgoKS5kYXRhKCkpOwogCkBAIC0zMjEsMTAgKzMxMiw2IEBA
IFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVjdERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFu
Z2UpCiAKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAKLSAgICBjb25zdCBTdHJp
bmcgRmlsZU1vbml0b3JUZXN0RGF0YSgiVGhpcyBpcyBhIHRlc3QiX3MpOwotICAgIGNvbnN0IFN0
cmluZyBGaWxlTW9uaXRvclJldmlzZWREYXRhKCJUaGlzIGlzIHNvbWUgY2hhbmdlZCB0ZXh0IGZv
ciB0aGUgdGVzdCJfcyk7Ci0gICAgY29uc3QgU3RyaW5nIEZpbGVNb25pdG9yU2Vjb25kUmV2aXNl
ZERhdGEoIlRoaXMgaXMgc29tZSBjaGFuZ2VkIHRleHQgZm9yIHRoZSB0ZXN0Il9zKTsKLQogICAg
IGF1dG8gdGVzdFF1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIlRlc3QgV29yayBRdWV1ZSIpOwog
CiAgICAgYXV0byBtb25pdG9yID0gbWFrZVVuaXF1ZTxGaWxlTW9uaXRvcj4odGVtcEZpbGVQYXRo
KCksIHRlc3RRdWV1ZS5jb3B5UmVmKCksIFtdIChGaWxlTW9uaXRvcjo6RmlsZUNoYW5nZVR5cGUg
dHlwZSkgewpAQCAtMzUzLDcgKzM0MCw3IEBAIFRFU1RfRihGaWxlTW9uaXRvclRlc3QsIERldGVj
dERlbGV0ZUJ1dE5vdFN1YnNlcXVlbnRDaGFuZ2UpCiAKICAgICByZXNldFRlc3RTdGF0ZSgpOwog
Ci0gICAgdGVzdFF1ZXVlLT5kaXNwYXRjaChbPSwgdGhpc10gKCkgbXV0YWJsZSB7CisgICAgdGVz
dFF1ZXVlLT5kaXNwYXRjaChbdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgIEVYUEVDVF9GQUxT
RShGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHRlbXBGaWxlUGF0aCgpKSk7CiAKICAgICAgICAgYXV0
byBoYW5kbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZSh0ZW1wRmlsZVBhdGgoKSwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpUcnVuY2F0ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAppbmRl
eCAyYmYxZDM5N2E1ZmMuLjMwZTM1ODYyNGY4NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3Bw
CkBAIC0zNiwxMyArMzYsMTQgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBjb25zdGV4
cHIgdWludDMyX3QgbWluNkJpdFZhbHVlIHsgMCB9OwogCitjb25zdCBVUkwgd2ViS2l0VVJMIHsg
Imh0dHBzOi8vd2Via2l0Lm9yZyJfcyB9OworY29uc3QgVVJMIGV4YW1wbGVVUkwgeyAiaHR0cHM6
Ly9leGFtcGxlLmNvbSJfcyB9OworY29uc3QgVVJMIGVtcHR5VVJMIHsgfTsKKwogLy8gUG9zaXRp
dmUgdGVzdCBjYXNlcy4KIAogVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgV2VsbEtub3du
VVJMcykKIHsKLSAgICBjb25zdCBVUkwgd2ViS2l0VVJMIHsgImh0dHBzOi8vd2Via2l0Lm9yZyJf
cyB9OwotICAgIGNvbnN0IFVSTCBleGFtcGxlVVJMIHsgImh0dHBzOi8vZXhhbXBsZS5jb20iX3Mg
fTsKLSAgICBjb25zdCBVUkwgZW1wdHlVUkwgeyB9OwogICAgIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50IGF0dHJpYnV0aW9uIHsgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZUlEKG1pbjZC
aXRWYWx1ZSksIFBDTTo6U291cmNlU2l0ZSB7IHdlYktpdFVSTCB9LCBQQ006OkF0dHJpYnV0aW9u
RGVzdGluYXRpb25TaXRlIHsgZXhhbXBsZVVSTCB9LCAidGVzdC5idW5kbGUuaWRlbnRpZmllciJf
cywgV2FsbFRpbWU6Om5vdygpLCBQQ006OkF0dHJpYnV0aW9uRXBoZW1lcmFsOjpObyB9OwogICAg
IGF0dHJpYnV0aW9uLmF0dHJpYnV0ZUFuZEdldEVhcmxpZXN0VGltZVRvU2VuZChXZWJDb3JlOjpQ
Q006OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgeyBtaW42Qml0VmFsdWUsIFdlYkNvcmU6OlBDTTo6
QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6UHJpb3JpdHk6OlByaW9yaXR5VmFsdWUobWluNkJpdFZh
bHVlKSwgeyB9LCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSB9LCBXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6SXNSdW5uaW5nTGF5b3V0VGVzdDo6Tm8pOwogCkBAIC01NCw5ICs1NSw2
IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFdlbGxLbm93blVSTHMpCiAKIFRFU1Qo
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFZhbGlkTWluVmFsdWVzKQogewotICAgIGNvbnN0IFVS
TCB3ZWJLaXRVUkwgeyAiaHR0cHM6Ly93ZWJraXQub3JnIl9zIH07Ci0gICAgY29uc3QgVVJMIGV4
YW1wbGVVUkwgeyAiaHR0cHM6Ly9leGFtcGxlLmNvbSJfcyB9OwotICAgIGNvbnN0IFVSTCBlbXB0
eVVSTCB7IH07CiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0cmlidXRpb24geyBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlSUQobWluNkJpdFZhbHVlKSwgUENNOjpTb3VyY2VT
aXRlIHsgd2ViS2l0VVJMIH0sIFBDTTo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyBleGFt
cGxlVVJMIH0sICJ0ZXN0LmJ1bmRsZS5pZGVudGlmaWVyIl9zLCBXYWxsVGltZTo6bm93KCksIFBD
TTo6QXR0cmlidXRpb25FcGhlbWVyYWw6Ok5vIH07CiAgICAgYXR0cmlidXRpb24uYXR0cmlidXRl
QW5kR2V0RWFybGllc3RUaW1lVG9TZW5kKFdlYkNvcmU6OlBDTTo6QXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSB7IG1pbjZCaXRWYWx1ZSwgV2ViQ29yZTo6UENNOjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
OjpQcmlvcml0eTo6UHJpb3JpdHlWYWx1ZShtaW42Qml0VmFsdWUpLCB7IH0sIHsgfSwgeyB9LCB7
IH0sIHsgfSwgeyB9IH0sIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpJc1J1bm5p
bmdMYXlvdXRUZXN0OjpObyk7CiAKQEAgLTY1LDkgKzYzLDYgQEAgVEVTVChQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCwgVmFsaWRNaW5WYWx1ZXMpCiAKIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQsIFZhbGlkTWlkVmFsdWVzKQogewotICAgIGNvbnN0IFVSTCB3ZWJLaXRVUkwgeyAiaHR0cHM6
Ly93ZWJraXQub3JnIl9zIH07Ci0gICAgY29uc3QgVVJMIGV4YW1wbGVVUkwgeyAiaHR0cHM6Ly9l
eGFtcGxlLmNvbSJfcyB9OwotICAgIGNvbnN0IFVSTCBlbXB0eVVSTCB7IH07CiAgICAgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgYXR0cmlidXRpb24geyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
U291cmNlSUQoKHVpbnQzMl90KTE5MiksIFBDTTo6U291cmNlU2l0ZSB7IHdlYktpdFVSTCB9LCBQ
Q006OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlIHsgZXhhbXBsZVVSTCB9LCAidGVzdC5idW5k
bGUuaWRlbnRpZmllciJfcywgV2FsbFRpbWU6Om5vdygpLCBQQ006OkF0dHJpYnV0aW9uRXBoZW1l
cmFsOjpObyB9OwogICAgIGF0dHJpYnV0aW9uLmF0dHJpYnV0ZUFuZEdldEVhcmxpZXN0VGltZVRv
U2VuZChXZWJDb3JlOjpQQ006OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgeyAodWludDMyX3QpOSwg
V2ViQ29yZTo6UENNOjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpQcmlvcml0eTo6UHJpb3JpdHlW
YWx1ZSgodWludDMyX3QpMjIpLCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9IH0sIFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpJc1J1bm5pbmdMYXlvdXRUZXN0OjpObyk7CiAK
QEAgLTc2LDkgKzcxLDYgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgVmFsaWRNaWRW
YWx1ZXMpCiAKIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFZhbGlkTWF4VmFsdWVzKQog
ewotICAgIGNvbnN0IFVSTCB3ZWJLaXRVUkwgeyAiaHR0cHM6Ly93ZWJraXQub3JnIl9zIH07Ci0g
ICAgY29uc3QgVVJMIGV4YW1wbGVVUkwgeyAiaHR0cHM6Ly9leGFtcGxlLmNvbSJfcyB9OwotICAg
IGNvbnN0IFVSTCBlbXB0eVVSTCB7IH07CiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0
cmlidXRpb24geyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlSUQoc3RkOjpudW1lcmlj
X2xpbWl0czx1aW50OF90Pjo6bWF4KCkpLCBQQ006OlNvdXJjZVNpdGUgeyB3ZWJLaXRVUkwgfSwg
UENNOjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSB7IGV4YW1wbGVVUkwgfSwgInRlc3QuYnVu
ZGxlLmlkZW50aWZpZXIiX3MsIFdhbGxUaW1lOjpub3coKSwgUENNOjpBdHRyaWJ1dGlvbkVwaGVt
ZXJhbDo6Tm8gfTsKICAgICBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVU
b1NlbmQoV2ViQ29yZTo6UENNOjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIHsgV2ViQ29yZTo6UENN
OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhFbnRyb3B5LCBXZWJDb3JlOjpQQ006OkF0dHJp
YnV0aW9uVHJpZ2dlckRhdGE6OlByaW9yaXR5OjpQcmlvcml0eVZhbHVlKFdlYkNvcmU6OlBDTTo6
QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6UHJpb3JpdHk6Ok1heEVudHJvcHkpLCB7IH0sIHsgfSwg
eyB9LCB7IH0sIHsgfSwgeyB9IH0sIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpJ
c1J1bm5pbmdMYXlvdXRUZXN0OjpObyk7CiAKQEAgLTg3LDkgKzc5LDYgQEAgVEVTVChQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCwgVmFsaWRNYXhWYWx1ZXMpCiAKIFRFU1QoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsIEVhcmxpZXN0VGltZVRvU2VuZEF0dHJpYnV0aW9uTWluaW11bURlbGF5KQogewot
ICAgIGNvbnN0IFVSTCB3ZWJLaXRVUkwgeyAiaHR0cHM6Ly93ZWJraXQub3JnIl9zIH07Ci0gICAg
Y29uc3QgVVJMIGV4YW1wbGVVUkwgeyAiaHR0cHM6Ly9leGFtcGxlLmNvbSJfcyB9OwotICAgIGNv
bnN0IFVSTCBlbXB0eVVSTCB7IH07CiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0cmli
dXRpb24geyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlSUQoc3RkOjpudW1lcmljX2xp
bWl0czx1aW50OF90Pjo6bWF4KCkpLCBQQ006OlNvdXJjZVNpdGUgeyB3ZWJLaXRVUkwgfSwgUENN
OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSB7IGV4YW1wbGVVUkwgfSwgInRlc3QuYnVuZGxl
LmlkZW50aWZpZXIiX3MsIFdhbGxUaW1lOjpub3coKSwgUENNOjpBdHRyaWJ1dGlvbkVwaGVtZXJh
bDo6Tm8gfTsKICAgICBhdXRvIG5vdyA9IFdhbGxUaW1lOjpub3coKTsKICAgICBhdHRyaWJ1dGlv
bi5hdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoV2ViQ29yZTo6UENNOjpBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhIHsgV2ViQ29yZTo6UENNOjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpN
YXhFbnRyb3B5LCBXZWJDb3JlOjpQQ006OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OlByaW9yaXR5
OjpQcmlvcml0eVZhbHVlKFdlYkNvcmU6OlBDTTo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6UHJp
b3JpdHk6Ok1heEVudHJvcHkpLCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9IH0sIFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpJc1J1bm5pbmdMYXlvdXRUZXN0OjpObyk7CkBA
IC0xNDUsOSArMTM0LDYgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgVmFsaWRTb3Vy
Y2VOb25jZSkKIAogVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgSW52YWxpZFNvdXJjZUhv
c3QpCiB7Ci0gICAgY29uc3QgVVJMIHdlYktpdFVSTCB7ICJodHRwczovL3dlYmtpdC5vcmciX3Mg
fTsKLSAgICBjb25zdCBVUkwgZXhhbXBsZVVSTCB7ICJodHRwczovL2V4YW1wbGUuY29tIl9zIH07
Ci0gICAgY29uc3QgVVJMIGVtcHR5VVJMIHsgfTsKICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCBhdHRyaWJ1dGlvbiB7IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VJRChzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKSksIFBDTTo6U291cmNlU2l0ZSB7IGVtcHR5VVJM
IH0sIFBDTTo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyBleGFtcGxlVVJMIH0sICJ0ZXN0
LmJ1bmRsZS5pZGVudGlmaWVyIl9zLCBXYWxsVGltZTo6bm93KCksIFBDTTo6QXR0cmlidXRpb25F
cGhlbWVyYWw6Ok5vIH07CiAgICAgYXR0cmlidXRpb24uYXR0cmlidXRlQW5kR2V0RWFybGllc3RU
aW1lVG9TZW5kKFdlYkNvcmU6OlBDTTo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSB7IFdlYkNvcmU6
OlBDTTo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6TWF4RW50cm9weSwgV2ViQ29yZTo6UENNOjpB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpQcmlvcml0eTo6UHJpb3JpdHlWYWx1ZShXZWJDb3JlOjpQ
Q006OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OlByaW9yaXR5OjpNYXhFbnRyb3B5KSwgeyB9LCB7
IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSB9LCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6SXNSdW5uaW5nTGF5b3V0VGVzdDo6Tm8pOwogCkBAIC0xNTcsOSArMTQzLDYgQEAgVEVTVChQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgSW52YWxpZFNvdXJjZUhvc3QpCiAKIFRFU1QoUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQsIEludmFsaWREZXN0aW5hdGlvbkhvc3QpCiB7Ci0gICAgY29uc3Qg
VVJMIHdlYktpdFVSTCB7ICJodHRwczovL3dlYmtpdC5vcmciX3MgfTsKLSAgICBjb25zdCBVUkwg
ZXhhbXBsZVVSTCB7ICJodHRwczovL2V4YW1wbGUuY29tIl9zIH07Ci0gICAgY29uc3QgVVJMIGVt
cHR5VVJMIHsgfTsKICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBhdHRyaWJ1dGlvbiB7IFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VJRChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4
X3Q+OjptYXgoKSksIFBDTTo6U291cmNlU2l0ZSB7IHdlYktpdFVSTCB9LCBQQ006OkF0dHJpYnV0
aW9uRGVzdGluYXRpb25TaXRlIHsgZW1wdHlVUkwgfSwgInRlc3QuYnVuZGxlLmlkZW50aWZpZXIi
X3MsIFdhbGxUaW1lOjpub3coKSwgUENNOjpBdHRyaWJ1dGlvbkVwaGVtZXJhbDo6Tm8gfTsKICAg
ICBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoV2ViQ29yZTo6
UENNOjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIHsgV2ViQ29yZTo6UENNOjpBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhOjpNYXhFbnRyb3B5LCBXZWJDb3JlOjpQQ006OkF0dHJpYnV0aW9uVHJpZ2dlckRh
dGE6OlByaW9yaXR5OjpQcmlvcml0eVZhbHVlKFdlYkNvcmU6OlBDTTo6QXR0cmlidXRpb25Ucmln
Z2VyRGF0YTo6UHJpb3JpdHk6Ok1heEVudHJvcHkpLCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwg
eyB9IH0sIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpJc1J1bm5pbmdMYXlvdXRU
ZXN0OjpObyk7CiAKQEAgLTE2OSw5ICsxNTIsNiBAQCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCBJbnZhbGlkRGVzdGluYXRpb25Ib3N0KQogCiBURVNUKFByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQogewotICAgIGNvbnN0IFVSTCB3ZWJLaXRVUkwg
eyAiaHR0cHM6Ly93ZWJraXQub3JnIl9zIH07Ci0gICAgY29uc3QgVVJMIGV4YW1wbGVVUkwgeyAi
aHR0cHM6Ly9leGFtcGxlLmNvbSJfcyB9OwotICAgIGNvbnN0IFVSTCBlbXB0eVVSTCB7IH07CiAg
ICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0cmlidXRpb24geyBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6U291cmNlSUQoc3RkOjpudW1lcmljX2xpbWl0czx1aW50OF90Pjo6bWF4KCkpLCBQ
Q006OlNvdXJjZVNpdGUgeyB3ZWJLaXRVUkwgfSwgUENNOjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
U2l0ZSB7IGV4YW1wbGVVUkwgfSwgInRlc3QuYnVuZGxlLmlkZW50aWZpZXIiX3MsIFdhbGxUaW1l
Ojpub3coKSwgUENNOjpBdHRyaWJ1dGlvbkVwaGVtZXJhbDo6Tm8gfTsKICAgICBhdHRyaWJ1dGlv
bi5hdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoV2ViQ29yZTo6UENNOjpBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhIHsgKFdlYkNvcmU6OlBDTTo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6
TWF4RW50cm9weSArIDEpLCBXZWJDb3JlOjpQQ006OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OlBy
aW9yaXR5OjpQcmlvcml0eVZhbHVlKFdlYkNvcmU6OlBDTTo6QXR0cmlidXRpb25UcmlnZ2VyRGF0
YTo6UHJpb3JpdHk6Ok1heEVudHJvcHkpLCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9IH0s
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpJc1J1bm5pbmdMYXlvdXRUZXN0OjpO
byk7CiAKQEAgLTE4MSw5ICsxNjEsNiBAQCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhKQogCiBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBJ
bnZhbGlkUHJpb3JpdHkpCiB7Ci0gICAgY29uc3QgVVJMIHdlYktpdFVSTCB7ICJodHRwczovL3dl
YmtpdC5vcmciX3MgfTsKLSAgICBjb25zdCBVUkwgZXhhbXBsZVVSTCB7ICJodHRwczovL2V4YW1w
bGUuY29tIl9zIH07Ci0gICAgY29uc3QgVVJMIGVtcHR5VVJMIHsgfTsKICAgICBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCBhdHRyaWJ1dGlvbiB7IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3Vy
Y2VJRChzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKSksIFBDTTo6U291cmNlU2l0
ZSB7IHdlYktpdFVSTCB9LCBQQ006OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlIHsgZXhhbXBs
ZVVSTCB9LCAidGVzdC5idW5kbGUuaWRlbnRpZmllciJfcywgV2FsbFRpbWU6Om5vdygpLCBQQ006
OkF0dHJpYnV0aW9uRXBoZW1lcmFsOjpObyB9OwogICAgIGF0dHJpYnV0aW9uLmF0dHJpYnV0ZUFu
ZEdldEVhcmxpZXN0VGltZVRvU2VuZChXZWJDb3JlOjpQQ006OkF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEgeyBXZWJDb3JlOjpQQ006OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6Ok1heEVudHJvcHksIFdl
YkNvcmU6OlBDTTo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6UHJpb3JpdHk6OlByaW9yaXR5VmFs
dWUoV2ViQ29yZTo6UENNOjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpQcmlvcml0eTo6TWF4RW50
cm9weSArIDEpLCB7IH0sIHsgfSwgeyB9LCB7IH0sIHsgfSwgeyB9IH0sIFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpJc1J1bm5pbmdMYXlvdXRUZXN0OjpObyk7CiAKQEAgLTE5Myw5
ICsxNzAsNiBAQCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBJbnZhbGlkUHJpb3JpdHkp
CiAKIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIEludmFsaWRNaXNzaW5nQ29udmVyc2lv
bikKIHsKLSAgICBjb25zdCBVUkwgd2ViS2l0VVJMIHsgImh0dHBzOi8vd2Via2l0Lm9yZyJfcyB9
OwotICAgIGNvbnN0IFVSTCBleGFtcGxlVVJMIHsgImh0dHBzOi8vZXhhbXBsZS5jb20iX3MgfTsK
LSAgICBjb25zdCBVUkwgZW1wdHlVUkwgeyB9OwogICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50
IGF0dHJpYnV0aW9uIHsgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZUlEKHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDhfdD46Om1heCgpKSwgUENNOjpTb3VyY2VTaXRlIHsgd2ViS2l0VVJM
IH0sIFBDTTo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyBleGFtcGxlVVJMIH0sICJ0ZXN0
LmJ1bmRsZS5pZGVudGlmaWVyIl9zLCBXYWxsVGltZTo6bm93KCksIFBDTTo6QXR0cmlidXRpb25F
cGhlbWVyYWw6Ok5vIH07CiAKICAgICBBU1NFUlRfVFJVRShhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlv
blJlcG9ydENsaWNrU291cmNlVVJMKCkuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbQppbmRleCAxY2JkZjY4Mzk0ZmUuLjJmYjAxMTNkNWJlMyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtNzYsMjEgKzc2LDE3IEBAIHN0YXRpYyBi
b29sIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXF1ZXN0Tm9HZXN0dXJlID0gdHJ1ZTsKIHN0YXRp
YyBfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgbG9jYWxBdXRoZW50aWNhdG9yUG9saWN5ID0g
X1dLTG9jYWxBdXRoZW50aWNhdG9yUG9saWN5RGlzYWxsb3c7CiBzdGF0aWMgU3RyaW5nIHdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxQaW47CiBzdGF0aWMgQk9PTCB3ZWJBdXRoZW50aWNhdGlvblBhbmVs
TnVsbFVzZXJIYW5kbGUgPSBOTzsKLQotc3RhdGljIE5ldmVyRGVzdHJveWVkPHN0ZDo6dW5pcXVl
X3B0cjxTdHJpbmc+ID4gd2ViQXV0aGVudGljYXRpb25QYW5lbFNlbGVjdGVkQ3JlZGVudGlhbE5h
bWU7Ci1zdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8c3RkOjp1bmlxdWVfcHRyPFN0cmluZz4gPiB3ZWJB
dXRoZW50aWNhdGlvblBhbmVsU2VsZWN0ZWRDcmVkZW50aWFsRGlzcGxheU5hbWU7Ci0KLSNkZWZp
bmUgU1RSSU5HUyBcCi1jb25zdCBTdHJpbmcgdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCA9IFwK
LSAgICAiQkRqL3p4U2t6S2dhQnVTM2NkV0RGNTU4b2Y4QWFJcGdGcHNqRi9RbTE3NDlWQkpQZ3FV
SXdmaFdISjkxbmI3VSIgXAotICAgICJQSDc2YzArV0ZPelpLc2xQeXlGc2U0Z29HSVcyUjdrOVZI
TFBFWmw1bmZuQmdFVkZoNXpldisveHBIUUl2dXE2IiBcCi0gICAgIlJRPT0iX3M7IFwKLWNvbnN0
IFN0cmluZyB0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0QWx0ZXJuYXRlID0gIkJCUm9pMkpiUjBJ
WFRlSm12WFVwMVlJdU00c3BoL0x1M2VHZjc1RjduK0hvakhLRzcwYTRSMHJCMlBRY2U1L1NKbGU2
VDdPTzVDcWV0L0xKWlZNNk5ROHlERHhXdmF5ZjcxR1REcDJ5VXR1SWJxSkxGVmJwV3ltbGo5V1Jp
emdYM0E9PSJfczsgXAotY29uc3QgU3RyaW5nIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0ID0g
Im9tSnBaRW9BQVFJREJBVUdCd2dKWkc1aGJXVmtTbTlvYmc9PSJfczsgLyogeyAiaWQiOiBoJzAw
MDEwMjAzMDQwNTA2MDcwODA5JywgIm5hbWUiOiAiSm9obiIgfSAqLyBcCi1jb25zdCBTdHJpbmcg
dGVzdFVzZXJFbnRpdHlCdW5kbGVOb1VzZXJIYW5kbGVCYXNlNjQgPSAib1dSdVlXMWxiRTFESUU1
dkxVaGhibVJzWlE9PSJfczsgLyogeyJuYW1lIjogIk1DIE5vLUhhbmRsZSJ9ICovIFwKLWNvbnN0
IFN0cmluZyB0ZXN0V2ViS2l0QVBJQWNjZXNzR3JvdXAgPSAiY29tLmFwcGxlLlRlc3RXZWJLaXRB
UEkiX3M7IFwKLWNvbnN0IFN0cmluZyB0ZXN0V2ViS2l0QVBJQWx0ZXJuYXRlQWNjZXNzR3JvdXAg
PSAiY29tLmFwcGxlLlRlc3RXZWJLaXRBUElBbHRlcm5hdGUiX3M7Ci0KK3N0YXRpYyBTdHJpbmcg
dGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCA9CisgICAgIkJEai96eFNrektnYUJ1UzNjZFdERjU1
OG9mOEFhSXBnRnBzakYvUW0xNzQ5VkJKUGdxVUl3ZmhXSEo5MW5iN1UiCisgICAgIlBINzZjMCtX
Rk96WktzbFB5eUZzZTRnb0dJVzJSN2s5VkhMUEVabDVuZm5CZ0VWRmg1emV2Ky94cEhRSXZ1cTYi
CisgICAgIlJRPT0iX3M7CitzdGF0aWMgU3RyaW5nIHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjRB
bHRlcm5hdGUgPSAiQkJSb2kySmJSMElYVGVKbXZYVXAxWUl1TTRzcGgvTHUzZUdmNzVGN24rSG9q
SEtHNzBhNFIwckIyUFFjZTUvU0psZTZUN09PNUNxZXQvTEpaVk02TlE4eUREeFd2YXlmNzFHVERw
MnlVdHVJYnFKTEZWYnBXeW1sajlXUml6Z1gzQT09Il9zOworc3RhdGljIFN0cmluZyB0ZXN0VXNl
ckVudGl0eUJ1bmRsZUJhc2U2NCA9ICJvbUpwWkVvQUFRSURCQVVHQndnSlpHNWhiV1ZrU205b2Jn
PT0iX3M7IC8vIHsgImlkIjogaCcwMDAxMDIwMzA0MDUwNjA3MDgwOScsICJuYW1lIjogIkpvaG4i
IH0KK3N0YXRpYyBTdHJpbmcgdGVzdFVzZXJFbnRpdHlCdW5kbGVOb1VzZXJIYW5kbGVCYXNlNjQg
PSAib1dSdVlXMWxiRTFESUU1dkxVaGhibVJzWlE9PSJfczsgLy8geyJuYW1lIjogIk1DIE5vLUhh
bmRsZSJ9CitzdGF0aWMgU3RyaW5nIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxTZWxlY3RlZENyZWRl
bnRpYWxOYW1lOworc3RhdGljIFN0cmluZyB3ZWJBdXRoZW50aWNhdGlvblBhbmVsU2VsZWN0ZWRD
cmVkZW50aWFsRGlzcGxheU5hbWU7CitzdGF0aWMgU3RyaW5nIHRlc3RXZWJLaXRBUElBY2Nlc3NH
cm91cCA9ICJjb20uYXBwbGUuVGVzdFdlYktpdEFQSSJfczsKK3N0YXRpYyBTdHJpbmcgdGVzdFdl
YktpdEFQSUFsdGVybmF0ZUFjY2Vzc0dyb3VwID0gImNvbS5hcHBsZS5UZXN0V2ViS2l0QVBJQWx0
ZXJuYXRlIl9zOwogc3RhdGljIGJvb2wgbGFDb250ZXh0UmVxdWVzdGVkID0gZmFsc2U7CiAKIEBp
bnRlcmZhY2UgVGVzdFdlYkF1dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsRGVsZWdhdGU+CkBAIC0xNjMsNyArMTU5LDYgQEAgLSAo
dm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCAqKXBhbmVsIHJlcXVlc3RQSU5X
aXRoUmVtYWluaW5nUmV0cmllczoKIAogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbCAqKXBhbmVsIHNlbGVjdEFzc2VydGlvblJlc3BvbnNlOihOU0FycmF5IDwgX1dLV2Vi
QXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqPiAqKXJlc3BvbnNlcyBzb3VyY2U6KF9X
S1dlYkF1dGhlbnRpY2F0aW9uU291cmNlKXNvdXJjZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoX1dLV2ViQXV0aGVudGljYXRpb25Bc3NlcnRpb25SZXNwb25zZSAqKSljb21wbGV0aW9uSGFu
ZGxlcgogewotICAgIFNUUklOR1M7CiAgICAgaWYgKHJlc3BvbnNlcy5jb3VudCA9PSAxKSB7CiAg
ICAgICAgIGF1dG8gbGFDb250ZXh0ID0gYWRvcHROUyhbW0xBQ29udGV4dCBhbGxvY10gaW5pdF0p
OwogICAgICAgICBbcmVzcG9uc2VzLmZpcnN0T2JqZWN0IHNldExBQ29udGV4dDpsYUNvbnRleHQu
Z2V0KCldOwpAQCAtMTgwLDggKzE3NSw4IEBAIC0gKHZvaWQpcGFuZWw6KF9XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwgKilwYW5lbCBzZWxlY3RBc3NlcnRpb25SZXNwb25zZTooTlNBcnJhCiAgICAg
ICAgIGF1dG8gbGFDb250ZXh0ID0gYWRvcHROUyhbW0xBQ29udGV4dCBhbGxvY10gaW5pdF0pOwog
ICAgICAgICBbb2JqZWN0IHNldExBQ29udGV4dDpsYUNvbnRleHQuZ2V0KCldOwogCi0gICAgICAg
IHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxTZWxlY3RlZENyZWRlbnRpYWxOYW1lLmdldCgpID0gV1RG
OjptYWtlVW5pcXVlPFN0cmluZz4ob2JqZWN0Lm5hbWUpOwotICAgICAgICB3ZWJBdXRoZW50aWNh
dGlvblBhbmVsU2VsZWN0ZWRDcmVkZW50aWFsRGlzcGxheU5hbWUuZ2V0KCkgPSBXVEY6Om1ha2VV
bmlxdWU8U3RyaW5nPihvYmplY3QuZGlzcGxheU5hbWUpOworICAgICAgICB3ZWJBdXRoZW50aWNh
dGlvblBhbmVsU2VsZWN0ZWRDcmVkZW50aWFsTmFtZSA9IG9iamVjdC5uYW1lOworICAgICAgICB3
ZWJBdXRoZW50aWNhdGlvblBhbmVsU2VsZWN0ZWRDcmVkZW50aWFsRGlzcGxheU5hbWUgPSBvYmpl
Y3QuZGlzcGxheU5hbWU7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG9iamVjdCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yMDIsMTMgKzE5NywxMSBAQCAtICh2b2lkKXBhbmVsOihf
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFuZWwgc2VsZWN0QXNzZXJ0aW9uUmVzcG9uc2U6
KE5TQXJyYQogCiAtICh2b2lkKXBhbmVsOihfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsICopcGFu
ZWwgZGVjaWRlUG9saWN5Rm9yTG9jYWxBdXRoZW50aWNhdG9yV2l0aENvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShfV0tMb2NhbEF1dGhlbnRpY2F0b3JQb2xpY3kgcG9saWN5KSljb21wbGV0aW9u
SGFuZGxlcgogewotICAgIFNUUklOR1M7CiAgICAgY29tcGxldGlvbkhhbmRsZXIobG9jYWxBdXRo
ZW50aWNhdG9yUG9saWN5KTsKIH0KIAogLSAodm9pZClwYW5lbDooX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbCAqKXBhbmVsIHJlcXVlc3RMQUNvbnRleHRGb3JVc2VyVmVyaWZpY2F0aW9uV2l0aENv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShMQUNvbnRleHQgKmNvbnRleHQpKWNvbXBsZXRpb25I
YW5kbGVyCiB7Ci0gICAgU1RSSU5HUzsKICAgICBsYUNvbnRleHRSZXF1ZXN0ZWQgPSB0cnVlOwog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CiB9CkBAIC0zMjksNyArMzIyLDcgQEAgc3RhdGlj
IHZvaWQgcmVzZXQoKQogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxQaW4gPSBlbXB0eVN0cmlu
ZygpOwogICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxOdWxsVXNlckhhbmRsZSA9IE5POwogICAg
IGxvY2FsQXV0aGVudGljYXRvclBvbGljeSA9IF9XS0xvY2FsQXV0aGVudGljYXRvclBvbGljeURp
c2FsbG93OwotICAgIHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxTZWxlY3RlZENyZWRlbnRpYWxOYW1l
LmdldCgpID0gV1RGOjptYWtlVW5pcXVlPFN0cmluZz4oKTsKKyAgICB3ZWJBdXRoZW50aWNhdGlv
blBhbmVsU2VsZWN0ZWRDcmVkZW50aWFsTmFtZSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgbGFDb250
ZXh0UmVxdWVzdGVkID0gZmFsc2U7CiB9CiAKQEAgLTM2Miw3ICszNTUsNiBAQCBzdGF0aWMgdm9p
ZCBjaGVja0ZyYW1lSW5mbyhXS0ZyYW1lSW5mbyAqZnJhbWUsIGJvb2wgaXNNYWluRnJhbWUsIE5T
U3RyaW5nICp1cmwsCiAKIGJvb2wgYWRkS2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZh
dGVLZXlCYXNlNjQsIGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgU3RyaW5nJiB1c2VySGFuZGxl
QmFzZTY0LCBib29sIHN5bmNocm9uaXphYmxlID0gZmFsc2UpCiB7Ci0gICAgU1RSSU5HUzsKICAg
ICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMgPSBAewogICAgICAgICAoaWQpa1NlY0F0dHJLZXlUeXBl
OiAoaWQpa1NlY0F0dHJLZXlUeXBlRUNTRUNQcmltZVJhbmRvbSwKICAgICAgICAgKGlkKWtTZWNB
dHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKQEAgLTQxNiw3ICs0MDgs
NiBAQCB2b2lkIGNsZWFuVXBLZXljaGFpbihjb25zdCBTdHJpbmcmIHJwSWQpCiAjaWYgSEFWRShO
RUFSX0ZJRUxEKQogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBOb1BhbmVsTmZjU3VjY2Vl
ZCkKIHsKLSAgICBTVFJJTkdTOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0
LWFzc2VydGlvbi1uZmMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0
V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCiAgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dl
YlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNz
TmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0
aW5nOllFU107CkBAIC00MzEsNyArNDIyLDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVs
LCBOb1BhbmVsTmZjU3VjY2VlZCkKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBOb1Bh
bmVsSGlkU3VjY2VzcykKIHsKLSAgICBTVFJJTkdTOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVz
dFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCiAgICAgYXV0byAqY29uZmlndXJh
dGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVz
dFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1
cmVKU0NGb3JUZXN0aW5nOllFU107CkBAIC00NDUsNyArNDM1LDYgQEAgVEVTVChXZWJBdXRoZW50
aWNhdGlvblBhbmVsLCBOb1BhbmVsSGlkU3VjY2VzcykKIAogVEVTVChXZWJBdXRoZW50aWNhdGlv
blBhbmVsLCBQYW5lbEhpZFN1Y2Nlc3MxKQogewotICAgIFNUUklOR1M7CiAgICAgcmVzZXQoKTsK
ICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVS
TEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XTsKIApAQCAtNDY3LDcgKzQ1Niw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUGFu
ZWxIaWRTdWNjZXNzMSkKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5lbEhpZFN1
Y2Nlc3MyKQogewotICAgIFNUUklOR1M7CiAgICAgcmVzZXQoKTsKICAgICBSZXRhaW5QdHI8TlNV
Ukw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2Vi
LWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC00OTQsNyAr
NDgyLDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5lbEhpZFN1Y2Nlc3MyKQog
Ly8gVGhlIHNlY29uZCBjYWxsYmFjayB3aWxsIHJldHVybiBfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsUmVzdWx0UHJlc2VudGVkIHdoaWNoIGxlYWRzIHRvIHN1Y2Nlc3MuCiBURVNUKFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwsIFBhbmVsUmFjeTEpCiB7Ci0gICAgU1RSSU5HUzsKICAgICByZXNldCgp
OwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdOwogCkBAIC01MTgsNyArNTA1LDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQ
YW5lbFJhY3kxKQogLy8gVW5saWtlIHRoZSBwcmV2aW91cyBvbmUsIHRoaXMgb25lIGZvY3VzZXMg
b24gdGhlIG9yZGVyIG9mIHRoZSBkZWxlZ2F0ZSBjYWxsYmFja3MuCiBURVNUKFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwsIFBhbmVsUmFjeTIpCiB7Ci0gICAgU1RSSU5HUzsKICAgICByZXNldCgpOwog
ICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
OwogCkBAIC01NDIsNyArNTI4LDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5l
bFJhY3kyKQogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFBhbmVsVHdpY2UpCiB7Ci0g
ICAgU1RSSU5HUzsKICAgICByZXNldCgpOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRp
b24tZ2V0LWFzc2VydGlvbi1oaWQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC01NjUsNyArNTUwLDYgQEAgVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5lbFR3aWNlKQogCiBURVNUKFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwsIFJlbG9hZEhpZENhbmNlbCkKIHsKLSAgICBTVFJJTkdTOwogICAgIHJlc2V0KCk7
CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5j
ZWwiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdOwogCkBAIC01ODQsNyArNTY4LDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBh
bmVsLCBSZWxvYWRIaWRDYW5jZWwpCiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTG9j
YXRpb25DaGFuZ2VIaWRDYW5jZWwpCiB7Ci0gICAgU1RSSU5HUzsKICAgICByZXNldCgpOwogICAg
IFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtY2FuY2VsIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IG90aGVyVVJMID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CkBAIC02MDQsNyArNTg3LDYgQEAg
VEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMb2NhdGlvbkNoYW5nZUhpZENhbmNlbCkKIAog
VEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBOZXdMb2FkSGlkQ2FuY2VsKQogewotICAgIFNU
UklOR1M7CiAgICAgcmVzZXQoKTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05T
QnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLWdl
dC1hc3NlcnRpb24taGlkLWNhbmNlbCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgUmV0YWluUHRyPE5TVVJMPiBvdGhl
clVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdOwpAQCAtNjI0LDcgKzYwNiw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTmV3
TG9hZEhpZENhbmNlbCkKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBDbG9zZUhpZENh
bmNlbCkKIHsKLSAgICBTVFJJTkdTOwogICAgIHJlc2V0KCk7CiAgICAgUmV0YWluUHRyPE5TVVJM
PiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1h
dXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1jYW5jZWwiIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC02NDMs
NyArNjI0LDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBDbG9zZUhpZENhbmNlbCkK
IAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBTdWJGcmFtZUNoYW5nZUxvY2F0aW9uSGlk
Q2FuY2VsKQogewotICAgIFNUUklOR1M7CiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW3BhcmVudEZy
YW1lID0gU3RyaW5nKHBhcmVudEZyYW1lKSwgc3ViRnJhbWUgPSBTdHJpbmcoc3ViRnJhbWUpXSAo
Y29uc3QgQ29ubmVjdGlvbiYgY29ubmVjdGlvbikgewogICAgICAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IGZpcnN0UmVzcG9uc2UgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKICAgICAgICAg
ICAgIEAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKQEAgLTY4OSw3ICs2NjksNiBAQCBURVNUKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwsIFN1YkZyYW1lQ2hhbmdlTG9jYXRpb25IaWRDYW5jZWwpCiAKIFRF
U1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgU3ViRnJhbWVEZXN0cnVjdGlvbkhpZENhbmNlbCkK
IHsKLSAgICBTVFJJTkdTOwogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtwYXJlbnRGcmFtZSA9IFN0
cmluZyhwYXJlbnRGcmFtZSksIHN1YkZyYW1lID0gU3RyaW5nKHN1YkZyYW1lKV0gKGNvbnN0IENv
bm5lY3Rpb24mIGNvbm5lY3Rpb24pIHsKICAgICAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBmaXJz
dFJlc3BvbnNlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6CiAgICAgICAgICAgICBAIkhU
VFAvMS4xIDIwMCBPS1xyXG4iCkBAIC03MzAsNyArNzA5LDYgQEAgVEVTVChXZWJBdXRoZW50aWNh
dGlvblBhbmVsLCBTdWJGcmFtZURlc3RydWN0aW9uSGlkQ2FuY2VsKQogCiBURVNUKFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwsIFBhbmVsSGlkQ2FuY2VsKQogewotICAgIFNUUklOR1M7CiAgICAgcmVz
ZXQoKTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlk
LWNhbmNlbCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl07CiAKQEAgLTc1NCw3ICs3MzIsNiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwsIFBhbmVsSGlkQ2FuY2VsKQogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWws
IFBhbmVsSGlkQ3RhcE5vQ3JlZGVudGlhbHNGb3VuZCkKIHsKLSAgICBTVFJJTkdTOwogICAgIHJl
c2V0KCk7CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhp
ZC1uby1jcmVkZW50aWFscyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTc3Miw3ICs3NDksNiBAQCBURVNUKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwsIFBhbmVsSGlkQ3RhcE5vQ3JlZGVudGlhbHNGb3VuZCkKIAogVEVT
VChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5lbFUyZkN0YXBOb0NyZWRlbnRpYWxzRm91bmQp
CiB7Ci0gICAgU1RSSU5HUzsKICAgICByZXNldCgpOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVz
dFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi11MmYtbm8tY3JlZGVudGlhbHMiIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC03
OTAsNyArNzY2LDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5lbFUyZkN0YXBO
b0NyZWRlbnRpYWxzRm91bmQpCiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgRmFrZVBh
bmVsSGlkU3VjY2VzcykKIHsKLSAgICBTVFJJTkdTOwogICAgIHJlc2V0KCk7CiAgICAgUmV0YWlu
UHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZCIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTgw
OSw3ICs3ODQsNiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIEZha2VQYW5lbEhpZFN1
Y2Nlc3MpCiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgRmFrZVBhbmVsSGlkQ3RhcE5v
Q3JlZGVudGlhbHNGb3VuZCkKIHsKLSAgICBTVFJJTkdTOwogICAgIHJlc2V0KCk7CiAgICAgUmV0
YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1uby1jcmVkZW50aWFs
cyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CiAKQEAgLTgyOCw3ICs4MDIsNiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwsIEZha2VQYW5lbEhpZEN0YXBOb0NyZWRlbnRpYWxzRm91bmQpCiAKIFRFU1QoV2ViQXV0aGVu
dGljYXRpb25QYW5lbCwgTnVsbFBhbmVsSGlkU3VjY2VzcykKIHsKLSAgICBTVFJJTkdTOwogICAg
IHJlc2V0KCk7CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9u
LWhpZCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEku
cmVzb3VyY2VzIl07CiAKQEAgLTg0Nyw3ICs4MjAsNiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWwsIE51bGxQYW5lbEhpZFN1Y2Nlc3MpCiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5l
bCwgTnVsbFBhbmVsSGlkQ3RhcE5vQ3JlZGVudGlhbHNGb3VuZCkKIHsKLSAgICBTVFJJTkdTOwog
ICAgIHJlc2V0KCk7CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0
aW9uLWhpZC1uby1jcmVkZW50aWFscyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTg2Nyw3ICs4MzksNiBAQCBURVNU
KFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE51bGxQYW5lbEhpZEN0YXBOb0NyZWRlbnRpYWxzRm91
bmQpCiAjaWYgSEFWRShORUFSX0ZJRUxEKQogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQ
YW5lbE11bHRpcGxlTkZDVGFnc1ByZXNlbnQpCiB7Ci0gICAgU1RSSU5HUzsKICAgICByZXNldCgp
OwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1uZmMtbXVs
dGlwbGUtdGFncyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTg4Niw3ICs4NTcsNiBAQCBURVNUKFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwsIFBhbmVsTXVsdGlwbGVORkNUYWdzUHJlc2VudCkKIAogVEVTVChXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLCBQYW5lbEhpZENhbmNlbFJlbG9hZE5vQ3Jhc2gpCiB7Ci0gICAgU1RS
SU5HUzsKICAgICByZXNldCgpOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0
LWFzc2VydGlvbi1oaWQtY2FuY2VsIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtOTA2LDcgKzg3Niw2IEBAIFRFU1Qo
V2ViQXV0aGVudGljYXRpb25QYW5lbCwgUGFuZWxIaWRDYW5jZWxSZWxvYWROb0NyYXNoKQogCiBU
RVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFBhbmVsSGlkU3VjY2Vzc0NhbmNlbE5vQ3Jhc2gp
CiB7Ci0gICAgU1RSSU5HUzsKICAgICByZXNldCgpOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVz
dFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVu
dGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC05MjQsNyArODkzLDYgQEAg
VEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQYW5lbEhpZFN1Y2Nlc3NDYW5jZWxOb0NyYXNo
KQogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFBhbmVsSGlkQ3RhcE5vQ3JlZGVudGlh
bHNGb3VuZENhbmNlbE5vQ3Jhc2gpCiB7Ci0gICAgU1RSSU5HUzsKICAgICByZXNldCgpOwogICAg
IFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1oaWQtbm8tY3JlZGVu
dGlhbHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdOwogCkBAIC05NDIsNyArOTEwLDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlv
blBhbmVsLCBQYW5lbEhpZEN0YXBOb0NyZWRlbnRpYWxzRm91bmRDYW5jZWxOb0NyYXNoKQogCiBU
RVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFBpbkdldFJldHJpZXNFcnJvcikKIHsKLSAgICBT
VFJJTkdTOwogICAgIHJlc2V0KCk7CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1t
YWtlLWNyZWRlbnRpYWwtaGlkLXBpbi1nZXQtcmV0cmllcy1lcnJvciIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTk1
Niw3ICs5MjMsNiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFBpbkdldFJldHJpZXNF
cnJvcikKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQaW5HZXRLZXlBZ3JlZW1lbnRF
cnJvcikKIHsKLSAgICBTVFJJTkdTOwogICAgIHJlc2V0KCk7CiAgICAgUmV0YWluUHRyPE5TVVJM
PiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1h
dXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi1nZXQta2V5LWFncmVlbWVudC1l
cnJvciIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEku
cmVzb3VyY2VzIl07CiAKQEAgLTk3MCw3ICs5MzYsNiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWwsIFBpbkdldEtleUFncmVlbWVudEVycm9yKQogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWwsIFBpblJlcXVlc3RQaW5FcnJvck5vRGVsZWdhdGUpCiB7Ci0gICAgU1RSSU5HUzsKICAg
ICByZXNldCgpOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50
aWFsLWhpZC1waW4iIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC05ODQsNyArOTQ5LDYgQEAgVEVTVChXZWJBdXRoZW50
aWNhdGlvblBhbmVsLCBQaW5SZXF1ZXN0UGluRXJyb3JOb0RlbGVnYXRlKQogCiBURVNUKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwsIFBpblJlcXVlc3RQaW5FcnJvck51bGxEZWxlZ2F0ZSkKIHsKLSAg
ICBTVFJJTkdTOwogICAgIHJlc2V0KCk7CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0g
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlv
bi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTEwMDIsNyArOTY2LDYgQEAg
VEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQaW5SZXF1ZXN0UGluRXJyb3JOdWxsRGVsZWdh
dGUpCiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUGluUmVxdWVzdFBpbkVycm9yKQog
ewotICAgIFNUUklOR1M7CiAgICAgcmVzZXQoKTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RV
UkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRp
Y2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQtcGluLWdldC1waW4tdG9rZW4tZmFrZS1waW4taW52
YWxpZC1lcnJvci1yZXRyeSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTEwMjIsNyArOTg1LDYgQEAgVEVTVChXZWJB
dXRoZW50aWNhdGlvblBhbmVsLCBQaW5SZXF1ZXN0UGluRXJyb3IpCiAKIFRFU1QoV2ViQXV0aGVu
dGljYXRpb25QYW5lbCwgUGluR2V0UGluVG9rZW5QaW5CbG9ja2VkRXJyb3IpCiB7Ci0gICAgU1RS
SU5HUzsKICAgICByZXNldCgpOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tbWFr
ZS1jcmVkZW50aWFsLWhpZC1waW4tZ2V0LXBpbi10b2tlbi1waW4tYmxvY2tlZC1lcnJvciIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il07CiAKQEAgLTEwNDIsNyArMTAwNCw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwg
UGluR2V0UGluVG9rZW5QaW5CbG9ja2VkRXJyb3IpCiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25Q
YW5lbCwgUGluR2V0UGluVG9rZW5QaW5BdXRoQmxvY2tlZEVycm9yKQogewotICAgIFNUUklOR1M7
CiAgICAgcmVzZXQoKTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3Jl
ZGVudGlhbC1oaWQtcGluLWdldC1waW4tdG9rZW4tcGluLWF1dGgtYmxvY2tlZC1lcnJvciIgd2l0
aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2Vz
Il07CiAKQEAgLTEwNjIsNyArMTAyMyw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwg
UGluR2V0UGluVG9rZW5QaW5BdXRoQmxvY2tlZEVycm9yKQogCiBURVNUKFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwsIFBpbkdldFBpblRva2VuUGluSW52YWxpZEVycm9yQW5kUmV0cnkpCiB7Ci0gICAg
U1RSSU5HUzsKICAgICByZXNldCgpOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24t
bWFrZS1jcmVkZW50aWFsLWhpZC1waW4tZ2V0LXBpbi10b2tlbi1waW4taW52YWxpZC1lcnJvci1y
ZXRyeSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEku
cmVzb3VyY2VzIl07CiAKQEAgLTEwODEsNyArMTA0MSw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRp
b25QYW5lbCwgUGluR2V0UGluVG9rZW5QaW5JbnZhbGlkRXJyb3JBbmRSZXRyeSkKIAogVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQaW5HZXRQaW5Ub2tlblBpbkF1dGhJbnZhbGlkRXJyb3JB
bmRSZXRyeSkKIHsKLSAgICBTVFJJTkdTOwogICAgIHJlc2V0KCk7CiAgICAgUmV0YWluUHRyPE5T
VVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndl
Yi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLXBpbi1nZXQtcGluLXRva2VuLXBp
bi1hdXRoLWludmFsaWQtZXJyb3ItcmV0cnkiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC0xMTAwLDcgKzEwNTksNiBA
QCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFBpbkdldFBpblRva2VuUGluQXV0aEludmFs
aWRFcnJvckFuZFJldHJ5KQogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE1ha2VDcmVk
ZW50aWFsSW50ZXJuYWxVVikKIHsKLSAgICBTVFJJTkdTOwogICAgIHJlc2V0KCk7CiAgICAgUmV0
YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtaGlkLWludGVybmFsLXV2
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXTsKIApAQCAtMTExNyw3ICsxMDc1LDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBh
bmVsLCBNYWtlQ3JlZGVudGlhbEludGVybmFsVVYpCiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25Q
YW5lbCwgTWFrZUNyZWRlbnRpYWxQaW4pCiB7Ci0gICAgU1RSSU5HUzsKICAgICByZXNldCgpOwog
ICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWhpZC1waW4i
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdOwogCkBAIC0xMTM1LDcgKzEwOTIsNiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwsIE1ha2VDcmVkZW50aWFsUGluKQogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE1h
a2VDcmVkZW50aWFsUGluQXV0aEJsb2NrZWRFcnJvcikKIHsKLSAgICBTVFJJTkdTOwogICAgIHJl
c2V0KCk7CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwt
aGlkLXBpbi1hdXRoLWJsb2NrZWQtZXJyb3IiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC0xMTU1LDcgKzExMTEsNiBA
QCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE1ha2VDcmVkZW50aWFsUGluQXV0aEJsb2Nr
ZWRFcnJvcikKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBNYWtlQ3JlZGVudGlhbFBp
bkludmFsaWRFcnJvckFuZFJldHJ5KQogewotICAgIFNUUklOR1M7CiAgICAgcmVzZXQoKTsKICAg
ICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1oaWQtcGluLWlu
dmFsaWQtZXJyb3ItcmV0cnkiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC0xMTc0LDcgKzExMjksNiBAQCBURVNUKFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwsIE1ha2VDcmVkZW50aWFsUGluSW52YWxpZEVycm9yQW5kUmV0
cnkpCiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgR2V0QXNzZXJ0aW9uUGluKQogewot
ICAgIFNUUklOR1M7CiAgICAgcmVzZXQoKTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0
aW9uLWdldC1hc3NlcnRpb24taGlkLXBpbiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTExOTIsNyArMTE0Niw2IEBA
IFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgR2V0QXNzZXJ0aW9uUGluKQogCiBURVNUKFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwsIEdldEFzc2VydGlvbkludGVybmFsVVYpCiB7Ci0gICAgU1RS
SU5HUzsKICAgICByZXNldCgpOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0
LWFzc2VydGlvbi1oaWQtaW50ZXJuYWwtdXYiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJl
Y3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC0xMjA5LDcgKzExNjIsNiBA
QCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIEdldEFzc2VydGlvbkludGVybmFsVVYpCiAK
IFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgR2V0QXNzZXJ0aW9uSW50ZXJuYWxVVlBpbkZh
bGxiYWNrKQogewotICAgIFNUUklOR1M7CiAgICAgcmVzZXQoKTsKICAgICBSZXRhaW5QdHI8TlNV
Ukw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2Vi
LWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24taGlkLWludGVybmFsLXV2LXBpbi1mYWxsYmFj
ayIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CiAKQEAgLTEyMjcsNyArMTE3OSw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25Q
YW5lbCwgR2V0QXNzZXJ0aW9uSW50ZXJuYWxVVlBpbkZhbGxiYWNrKQogCiBURVNUKFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwsIEdldEFzc2VydGlvblBpbkF1dGhCbG9ja2VkRXJyb3IpCiB7Ci0gICAg
U1RSSU5HUzsKICAgICByZXNldCgpOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24t
Z2V0LWFzc2VydGlvbi1oaWQtcGluLWF1dGgtYmxvY2tlZC1lcnJvciIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTEy
NDcsNyArMTE5OCw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgR2V0QXNzZXJ0aW9u
UGluQXV0aEJsb2NrZWRFcnJvcikKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBHZXRB
c3NlcnRpb25QaW5JbnZhbGlkRXJyb3JBbmRSZXRyeSkKIHsKLSAgICBTVFJJTkdTOwogICAgIHJl
c2V0KCk7CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVu
ZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhp
ZC1waW4taW52YWxpZC1lcnJvci1yZXRyeSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTEyNjcsNyArMTIxNyw2IEBA
IFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgR2V0QXNzZXJ0aW9uUGluSW52YWxpZEVycm9y
QW5kUmV0cnkpCiAjaWYgSEFWRShORUFSX0ZJRUxEKQogVEVTVChXZWJBdXRoZW50aWNhdGlvblBh
bmVsLCBOZmNQaW5DYWNoZWREaXNjb25uZWN0KQogewotICAgIFNUUklOR1M7CiAgICAgcmVzZXQo
KTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLWdldC1hc3NlcnRpb24tbmZjLXBp
bi1kaXNjb25uZWN0IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtMTI4Niw3ICsxMjM1LDYgQEAgVEVTVChXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLCBOZmNQaW5DYWNoZWREaXNjb25uZWN0KQogCiBURVNUKFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwsIE11bHRpcGxlQWNjb3VudHNOdWxsRGVsZWdhdGUpCiB7Ci0gICAgU1RS
SU5HUzsKICAgICByZXNldCgpOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0
LWFzc2VydGlvbi1oaWQtbXVsdGlwbGUtYWNjb3VudHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC0xMzA0LDcgKzEy
NTIsNiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE11bHRpcGxlQWNjb3VudHNOdWxs
RGVsZWdhdGUpCiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTXVsdGlwbGVBY2NvdW50
cykKIHsKLSAgICBTVFJJTkdTOwogICAgIHJlc2V0KCk7CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0
ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRo
ZW50aWNhdGlvbi1nZXQtYXNzZXJ0aW9uLWhpZC1tdWx0aXBsZS1hY2NvdW50cyIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAK
QEAgLTEzMjYsNyArMTI3Myw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTXVsdGlw
bGVBY2NvdW50cykKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUVycm9yKQogewot
ICAgIFNUUklOR1M7CiAgICAgcmVzZXQoKTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwg
PSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0
aW9uLW1ha2UtY3JlZGVudGlhbC1sYS1lcnJvciIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTEzNDMsNyArMTI4OSw2
IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTEFFcnJvcikKIAogVEVTVChXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLCBMQUR1cGxpY2F0ZUNyZWRlbnRpYWwpCiB7Ci0gICAgU1RSSU5HUzsK
ICAgICByZXNldCgpOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVk
ZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFsIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtMTM2Miw3ICsxMzA3
LDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUR1cGxpY2F0ZUNyZWRlbnRpYWwp
CiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTEFEdXBsaWNhdGVDcmVkZW50aWFsV2l0
aENvbnNlbnQpCiB7Ci0gICAgU1RSSU5HUzsKICAgICByZXNldCgpOwogICAgIFJldGFpblB0cjxO
U1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3
ZWItYXV0aGVudGljYXRpb24tbWFrZS1jcmVkZW50aWFsLWxhLWR1cGxpY2F0ZS1jcmVkZW50aWFs
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXTsKIApAQCAtMTM4NCw3ICsxMzI4LDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBh
bmVsLCBMQUR1cGxpY2F0ZUNyZWRlbnRpYWxXaXRoQ29uc2VudCkKIAogVEVTVChXZWJBdXRoZW50
aWNhdGlvblBhbmVsLCBMQU5vQ3JlZGVudGlhbCkKIHsKLSAgICBTVFJJTkdTOwogICAgIHJlc2V0
KCk7CiAgICAgLy8gSW4gY2FzZSB0aGlzIHdhc24ndCBjbGVhbmVkIHVwIGJ5IGFub3RoZXIgdGVz
dC4KICAgICBjbGVhblVwS2V5Y2hhaW4oZW1wdHlTdHJpbmcoKSk7CkBAIC0xNDA0LDcgKzEzNDcs
NiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTm9DcmVkZW50aWFsKQogCiBURVNU
KFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFrZUNyZWRlbnRpYWxBbGxvd0xvY2FsQXV0aGVu
dGljYXRvcikKIHsKLSAgICBTVFJJTkdTOwogICAgIHJlc2V0KCk7CiAgICAgUmV0YWluUHRyPE5T
VVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndl
Yi1hdXRoZW50aWNhdGlvbi1tYWtlLWNyZWRlbnRpYWwtbGEiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogCkBAIC0xNDI0LDcg
KzEzNjYsNiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBTWFrZUNyZWRlbnRpYWxB
bGxvd0xvY2FsQXV0aGVudGljYXRvcikKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBM
QU1ha2VDcmVkZW50aWFsTm9Nb2NrTm9Vc2VyR2VzdHVyZSkKIHsKLSAgICBTVFJJTkdTOwogICAg
IHJlc2V0KCk7CiAgICAgd2ViQXV0aGVudGljYXRpb25QYW5lbFJlcXVlc3ROb0dlc3R1cmUgPSBm
YWxzZTsKICAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAid2ViLWF1dGhlbnRpY2F0aW9uLW1ha2UtY3JlZGVudGlhbC1s
YS1uby1tb2NrIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXTsKQEAgLTE0NDQsNyArMTM4NSw2IEBAIFRFU1QoV2ViQXV0aGVudGlj
YXRpb25QYW5lbCwgTEFNYWtlQ3JlZGVudGlhbE5vTW9ja05vVXNlckdlc3R1cmUpCiAKIFRFU1Qo
V2ViQXV0aGVudGljYXRpb25QYW5lbCwgTEFHZXRBc3NlcnRpb24pCiB7Ci0gICAgU1RSSU5HUzsK
ICAgICByZXNldCgpOwogICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2Vy
dGlvbi1sYSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl07CiAKQEAgLTE0NjQsNyArMTQwNCw2IEBAIFRFU1QoV2ViQXV0aGVudGlj
YXRpb25QYW5lbCwgTEFHZXRBc3NlcnRpb24pCiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5l
bCwgTEFHZXRBc3NlcnRpb25NdWx0aXBsZUNyZWRlbnRpYWxTdG9yZSkKIHsKLSAgICBTVFJJTkdT
OwogICAgIHJlc2V0KCk7CiAgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIndlYi1hdXRoZW50aWNhdGlvbi1nZXQtYXNz
ZXJ0aW9uLWxhIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXTsKIApAQCAtMTQ4MCwxMiArMTQxOSwxMiBAQCBURVNUKFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwsIExBR2V0QXNzZXJ0aW9uTXVsdGlwbGVDcmVkZW50aWFsU3RvcmUpCiAK
ICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRl
c3RVUkwuZ2V0KCldXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEi
XTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoKndlYkF1dGhlbnRpY2F0aW9uUGFuZWxTZWxlY3RlZENy
ZWRlbnRpYWxOYW1lLmdldCgpLCAiSm9obiIpOworICAgIEVYUEVDVF9XS19TVFJFUSh3ZWJBdXRo
ZW50aWNhdGlvblBhbmVsU2VsZWN0ZWRDcmVkZW50aWFsTmFtZSwgIkpvaG4iKTsKIAogICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5n
ZXQoKV1dOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU3VjY2VlZGVkISJdOwotICAg
IEVYUEVDVF9XS19TVFJFUSgqd2ViQXV0aGVudGljYXRpb25QYW5lbFNlbGVjdGVkQ3JlZGVudGlh
bE5hbWUuZ2V0KCksICJKYW5lIik7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCp3ZWJBdXRoZW50aWNh
dGlvblBhbmVsU2VsZWN0ZWRDcmVkZW50aWFsRGlzcGxheU5hbWUuZ2V0KCksICJKYW5lIFNtaXRo
Iik7CisgICAgRVhQRUNUX1dLX1NUUkVRKHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxTZWxlY3RlZENy
ZWRlbnRpYWxOYW1lLCAiSmFuZSIpOworICAgIEVYUEVDVF9XS19TVFJFUSh3ZWJBdXRoZW50aWNh
dGlvblBhbmVsU2VsZWN0ZWRDcmVkZW50aWFsRGlzcGxheU5hbWUsICJKYW5lIFNtaXRoIik7CiAK
ICAgICBjbGVhblVwS2V5Y2hhaW4oZW1wdHlTdHJpbmcoKSk7CiB9CkBAIC0xNTEzLDcgKzE0NTIs
NiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBR2V0QXNzZXJ0aW9uTm9Nb2NrTm9V
c2VyR2VzdHVyZSkKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUdldEFzc2VydGlv
bk11bHRpcGxlT3JkZXIpCiB7Ci0gICAgU1RSSU5HUzsKICAgICByZXNldCgpOwogICAgIFJldGFp
blB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJ3ZWItYXV0aGVudGljYXRpb24tZ2V0LWFzc2VydGlvbi1sYSIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAKQEAgLTE1
MjksMTEgKzE0NjcsMTEgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUdldEFzc2Vy
dGlvbk11bHRpcGxlT3JkZXIpCiAKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKICAgICBbd2ViVmlldyB3YWl0Rm9y
TWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoKndlYkF1dGhlbnRp
Y2F0aW9uUGFuZWxTZWxlY3RlZENyZWRlbnRpYWxOYW1lLmdldCgpLCAiSm9obiIpOworICAgIEVY
UEVDVF9XS19TVFJFUSh3ZWJBdXRoZW50aWNhdGlvblBhbmVsU2VsZWN0ZWRDcmVkZW50aWFsTmFt
ZSwgIkpvaG4iKTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdl
OkAiU3VjY2VlZGVkISJdOwotICAgIEVYUEVDVF9XS19TVFJFUSgqd2ViQXV0aGVudGljYXRpb25Q
YW5lbFNlbGVjdGVkQ3JlZGVudGlhbE5hbWUuZ2V0KCksICJKYW5lIik7CisgICAgRVhQRUNUX1dL
X1NUUkVRKHdlYkF1dGhlbnRpY2F0aW9uUGFuZWxTZWxlY3RlZENyZWRlbnRpYWxOYW1lLCAiSmFu
ZSIpOwogCiAgICAgY2xlYW5VcEtleWNoYWluKGVtcHR5U3RyaW5nKCkpOwogfQpAQCAtMTU0NCw3
ICsxNDgyLDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBMQUdldEFzc2VydGlvbk11
bHRpcGxlT3JkZXIpCiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUHVibGljS2V5Q3Jl
ZGVudGlhbENyZWF0aW9uT3B0aW9uc01pbmltdW0pCiB7Ci0gICAgU1RSSU5HUzsKICAgICB1aW50
OF90IGlkZW50aWZpZXJbXSA9IHsgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCB9OwogICAgIE5TRGF0
YSAqbnNJZGVudGlmaWVyID0gW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmlkZW50aWZpZXIgbGVuZ3Ro
OnNpemVvZihpZGVudGlmaWVyKV07CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gYWRvcHROUyhbW19X
S1B1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzIGFsbG9jXSBpbml0V2l0aEFsZ29yaXRobTpA
LTddKTsKQEAgLTE1NzksNyArMTUxNiw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwg
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc01pbmltdW0pCiAKIFRFU1QoV2ViQXV0
aGVudGljYXRpb25QYW5lbCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc01heGlt
dW1EZWZhdWx0KQogewotICAgIFNUUklOR1M7CiAgICAgdWludDhfdCBpZGVudGlmaWVyW10gPSB7
IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQgfTsKICAgICBOU0RhdGEgKm5zSWRlbnRpZmllciA9IFtO
U0RhdGEgZGF0YVdpdGhCeXRlczppZGVudGlmaWVyIGxlbmd0aDpzaXplb2YoaWRlbnRpZmllcild
OwogICAgIGF1dG8gcGFyYW1ldGVyczEgPSBhZG9wdE5TKFtbX1dLUHVibGljS2V5Q3JlZGVudGlh
bFBhcmFtZXRlcnMgYWxsb2NdIGluaXRXaXRoQWxnb3JpdGhtOkAtN10pOwpAQCAtMTYzMyw3ICsx
NTY5LDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zTWF4aW11bURlZmF1bHQpCiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25Q
YW5lbCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc01heGltdW0xKQogewotICAg
IFNUUklOR1M7CiAgICAgdWludDhfdCBpZGVudGlmaWVyW10gPSB7IDB4MDEsIDB4MDIsIDB4MDMs
IDB4MDQgfTsKICAgICBOU0RhdGEgKm5zSWRlbnRpZmllciA9IFtOU0RhdGEgZGF0YVdpdGhCeXRl
czppZGVudGlmaWVyIGxlbmd0aDpzaXplb2YoaWRlbnRpZmllcildOwogICAgIGF1dG8gcGFyYW1l
dGVyczEgPSBhZG9wdE5TKFtbX1dLUHVibGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnMgYWxsb2Nd
IGluaXRXaXRoQWxnb3JpdGhtOkAtN10pOwpAQCAtMTcwNiw3ICsxNjQxLDYgQEAgVEVTVChXZWJB
dXRoZW50aWNhdGlvblBhbmVsLCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zTWF4
aW11bTEpCiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9uc01heGltdW0yKQogewotICAgIFNUUklOR1M7CiAgICAgdWludDhfdCBp
ZGVudGlmaWVyW10gPSB7IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQgfTsKICAgICBOU0RhdGEgKm5z
SWRlbnRpZmllciA9IFtOU0RhdGEgZGF0YVdpdGhCeXRlczppZGVudGlmaWVyIGxlbmd0aDpzaXpl
b2YoaWRlbnRpZmllcildOwogICAgIGF1dG8gcGFyYW1ldGVyczEgPSBhZG9wdE5TKFtbX1dLUHVi
bGljS2V5Q3JlZGVudGlhbFBhcmFtZXRlcnMgYWxsb2NdIGluaXRXaXRoQWxnb3JpdGhtOkAtN10p
OwpAQCAtMTc3Nyw3ICsxNzExLDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zTWF4aW11bTIpCiAKIFRFU1QoV2ViQXV0aGVu
dGljYXRpb25QYW5lbCwgTWFrZUNyZWRlbnRpYWxTUElUaW1lb3V0KQogewotICAgIFNUUklOR1M7
CiAgICAgcmVzZXQoKTsKIAogICAgIHVpbnQ4X3QgaWRlbnRpZmllcltdID0geyAweDAxLCAweDAy
LCAweDAzLCAweDA0IH07CkBAIC0xODA4LDcgKzE3NDEsNiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwsIE1ha2VDcmVkZW50aWFsU1BJVGltZW91dCkKICNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKSB8fCBQTEFURk9STShJT1MpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIE1h
a2VDcmVkZW50aWFsTEEpCiB7Ci0gICAgU1RSSU5HUzsKICAgICByZXNldCgpOwogCiAgICAgdWlu
dDhfdCBpZGVudGlmaWVyW10gPSB7IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQgfTsKQEAgLTE4NDYs
NyArMTc3OCw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTWFrZUNyZWRlbnRpYWxM
QSkKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBNYWtlQ3JlZGVudGlhbExBQ2xpZW50
RGF0YUhhc2hNZWRpYXRpb24pCiB7Ci0gICAgU1RSSU5HUzsKICAgICByZXNldCgpOwogCiAgICAg
dWludDhfdCBpZGVudGlmaWVyW10gPSB7IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQgfTsKQEAgLTE4
ODUsNyArMTgxNiw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgTWFrZUNyZWRlbnRp
YWxMQUNsaWVudERhdGFIYXNoTWVkaWF0aW9uKQogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwsIE1ha2VDcmVkZW50aWFsTEFBdHRlc3RhdGlvbkZhbGJhY2spCiB7Ci0gICAgU1RSSU5HUzsK
ICAgICByZXNldCgpOwogCiAgICAgdWludDhfdCBpZGVudGlmaWVyW10gPSB7IDB4MDEsIDB4MDIs
IDB4MDMsIDB4MDQgfTsKQEAgLTE5MjAsNyArMTg1MCw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRp
b25QYW5lbCwgTWFrZUNyZWRlbnRpYWxMQUF0dGVzdGF0aW9uRmFsYmFjaykKIAogVEVTVChXZWJB
dXRoZW50aWNhdGlvblBhbmVsLCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnNNaW5p
bXVuKQogewotICAgIFNUUklOR1M7CiAgICAgYXV0byBvcHRpb25zID0gYWRvcHROUyhbW19XS1B1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8g
cmVzdWx0ID0gW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgY29udmVydFRvQ29yZVJlcXVlc3RP
cHRpb25zV2l0aE9wdGlvbnM6b3B0aW9ucy5nZXQoKV07CiAKQEAgLTE5MzMsNyArMTg2Miw2IEBA
IFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zTWluaW11bikKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnNNYXhpbXVtRGVmYXVsdCkKIHsKLSAgICBTVFJJTkdTOwog
ICAgIHVpbnQ4X3QgaWRlbnRpZmllcltdID0geyAweDAxLCAweDAyLCAweDAzLCAweDA0IH07CiAg
ICAgTlNEYXRhICpuc0lkZW50aWZpZXIgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6aWRlbnRpZmll
ciBsZW5ndGg6c2l6ZW9mKGlkZW50aWZpZXIpXTsKICAgICBhdXRvIGRlc2NyaXB0b3IgPSBhZG9w
dE5TKFtbX1dLUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgYWxsb2NdIGluaXRXaXRoSWRl
bnRpZmllcjpuc0lkZW50aWZpZXJdKTsKQEAgLTE5NTksNyArMTg4Nyw2IEBAIFRFU1QoV2ViQXV0
aGVudGljYXRpb25QYW5lbCwgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zTWF4aW11
bURlZmF1bHQpCiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUHVibGljS2V5Q3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zTWF4aW11bSkKIHsKLSAgICBTVFJJTkdTOwogICAgIHVpbnQ4X3Qg
aWRlbnRpZmllcltdID0geyAweDAxLCAweDAyLCAweDAzLCAweDA0IH07CiAgICAgTlNEYXRhICpu
c0lkZW50aWZpZXIgPSBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6aWRlbnRpZmllciBsZW5ndGg6c2l6
ZW9mKGlkZW50aWZpZXIpXTsKIApAQCAtMjAyMiw3ICsxOTQ5LDYgQEAgVEVTVChXZWJBdXRoZW50
aWNhdGlvblBhbmVsLCBHZXRBc3NlcnRpb25TUElUaW1lb3V0KQogI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspIHx8IFBMQVRGT1JNKElPUykKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwg
R2V0QXNzZXJ0aW9uTEEpCiB7Ci0gICAgU1RSSU5HUzsKICAgICByZXNldCgpOwogICAgIGF1dG8g
YmVmb3JlVGltZSA9IGFkb3B0TlMoW1tOU0RhdGUgYWxsb2NdIGluaXRdKTsKIApAQCAtMjA4Niw3
ICsyMDEyLDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBHZXRBc3NlcnRpb25MQSkK
IAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBHZXRBc3NlcnRpb25MQUNsaWVudERhdGFI
YXNoTWVkaWF0aW9uKQogewotICAgIFNUUklOR1M7CiAgICAgcmVzZXQoKTsKIAogICAgIEFTU0VS
VF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwgImV4YW1w
bGUuY29tIl9zLCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCkpOwpAQCAtMjEzNyw3ICsyMDYy
LDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBHZXRBc3NlcnRpb25MQUNsaWVudERh
dGFIYXNoTWVkaWF0aW9uKQogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIEdldEFzc2Vy
dGlvbk51bGxVc2VySGFuZGxlKQogewotICAgIFNUUklOR1M7CiAgICAgcmVzZXQoKTsKIAogICAg
IEFTU0VSVF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwg
ImV4YW1wbGUuY29tIl9zLCB0ZXN0VXNlckVudGl0eUJ1bmRsZU5vVXNlckhhbmRsZUJhc2U2NCkp
OwpAQCAtMjE2Niw3ICsyMDkwLDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBHZXRB
c3NlcnRpb25OdWxsVXNlckhhbmRsZSkKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBH
ZXRBc3NlcnRpb25Dcm9zc1BsYXRmb3JtKQogewotICAgIFNUUklOR1M7CiAgICAgcmVzZXQoKTsK
IAogICAgIEFTU0VSVF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJh
c2U2NCwgZW1wdHlTdHJpbmcoKSwgdGVzdFVzZXJFbnRpdHlCdW5kbGVCYXNlNjQpKTsKQEAgLTIx
OTcsNyArMjEyMCw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgR2V0QXNzZXJ0aW9u
Q3Jvc3NQbGF0Zm9ybSkKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBHZXRBbGxDcmVk
ZW50aWFsKQogewotICAgIFNUUklOR1M7CiAgICAgcmVzZXQoKTsKIAogICAgIGF1dG8gYmVmb3Jl
ID0gYWRvcHROUyhbW05TRGF0ZSBhbGxvY10gaW5pdF0pOwpAQCAtMjIyNSw3ICsyMTQ3LDYgQEAg
VEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBHZXRBbGxDcmVkZW50aWFsKQogCiBURVNUKFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwsIEdldEFsbENyZWRlbnRpYWxOdWxsVXNlckhhbmRsZSkKIHsK
LSAgICBTVFJJTkdTOwogICAgIHJlc2V0KCk7CiAKICAgICBBU1NFUlRfVFJVRShhZGRLZXlUb0tl
eWNoYWluKHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsICJleGFtcGxlLmNvbSJfcywgdGVzdFVz
ZXJFbnRpdHlCdW5kbGVOb1VzZXJIYW5kbGVCYXNlNjQpKTsKQEAgLTIyNDQsNyArMjE2NSw2IEBA
IFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgR2V0QWxsQ3JlZGVudGlhbE51bGxVc2VySGFu
ZGxlKQogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIEdldEFsbENyZWRlbnRpYWxXaXRo
RGlzcGxheU5hbWUpCiB7Ci0gICAgU1RSSU5HUzsKICAgICByZXNldCgpOwogCiAgICAgLy8geyJp
ZCI6IGgnMDAwMTAyMDMwNDA1MDYwNzA4MDknLCAibmFtZSI6ICJKb2huIiwgImRpc3BsYXlOYW1l
IjogIkpvaG5ueSJ9CkBAIC0yMjY1LDcgKzIxODUsNiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWwsIEdldEFsbENyZWRlbnRpYWxXaXRoRGlzcGxheU5hbWUpCiAKIFRFU1QoV2ViQXV0aGVu
dGljYXRpb25QYW5lbCwgR2V0QWxsQ3JlZGVudGlhbEJ5UlBJRCkKIHsKLSAgICBTVFJJTkdTOwog
ICAgIHJlc2V0KCk7CiAKICAgICAvLyB7ImlkIjogaCcwMDAxMDIwMzA0MDUwNjA3MDgwOScsICJu
YW1lIjogIkpvaG4iLCAiZGlzcGxheU5hbWUiOiAiSm9obm55In0KQEAgLTIyOTcsNyArMjIxNiw2
IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgR2V0QWxsQ3JlZGVudGlhbEJ5UlBJRCkK
IAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBHZXRBbGxDcmVkZW50aWFsQnlDcmVkZW50
aWFsSUQpCiB7Ci0gICAgU1RSSU5HUzsKICAgICByZXNldCgpOwogICAgIGNsZWFuVXBLZXljaGFp
bigiZXhhbXBsZS5jb20iX3MpOwogCkBAIC0yMzIxLDcgKzIyMzksNiBAQCBURVNUKFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwsIEdldEFsbENyZWRlbnRpYWxCeUNyZWRlbnRpYWxJRCkKIAogVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBFbmNvZGVDVEFQQXNzZXJ0aW9uKQogewotICAgIFNUUklO
R1M7CiAgICAgdWludDhfdCBoYXNoW10gPSB7IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDEs
IDB4MDIsIDB4MDMsIDB4MDQsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDEsIDB4MDIsIDB4
MDMsIDB4MDQsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQs
IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQgfTsKICAgICBh
dXRvIG5zSGFzaCA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6aGFzaCBs
ZW5ndGg6c2l6ZW9mKGhhc2gpXSk7CiAgICAgYXV0byBvcHRpb25zID0gYWRvcHROUyhbW19XS1B1
YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucyBhbGxvY10gaW5pdF0pOwpAQCAtMjMzNSw3
ICsyMjUyLDYgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBFbmNvZGVDVEFQQXNzZXJ0
aW9uKQogCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIEVuY29kZUNUQVBDcmVhdGlvbikK
IHsKLSAgICBTVFJJTkdTOwogICAgIHVpbnQ4X3QgaGFzaFtdID0geyAweDAxLCAweDAyLCAweDAz
LCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAw
eDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAy
LCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDAxLCAweDAyLCAweDAzLCAw
eDA0IH07CiAgICAgYXV0byBuc0hhc2ggPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJ5dGVzOmhhc2ggbGVuZ3RoOnNpemVvZihoYXNoKV0pOwogICAgIHVpbnQ4X3QgaWRlbnRpZmll
cltdID0geyAweDAxLCAweDAyLCAweDAzLCAweDA0IH07CkBAIC0yMzU3LDcgKzIyNzMsNiBAQCBU
RVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIEVuY29kZUNUQVBDcmVhdGlvbikKIAogVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBVcGRhdGVDcmVkZW50aWFsRGlzcGxheU5hbWUpCiB7Ci0g
ICAgU1RSSU5HUzsKICAgICByZXNldCgpOwogICAgIGNsZWFuVXBLZXljaGFpbigiZXhhbXBsZS5j
b20iX3MpOwogCkBAIC0yMzk1LDcgKzIzMTAsNiBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwsIFVwZGF0ZUNyZWRlbnRpYWxEaXNwbGF5TmFtZSkKIAogVEVTVChXZWJBdXRoZW50aWNhdGlv
blBhbmVsLCBVcGRhdGVDcmVkZW50aWFsTmFtZSkKIHsKLSAgICBTVFJJTkdTOwogICAgIHJlc2V0
KCk7CiAgICAgY2xlYW5VcEtleWNoYWluKCJleGFtcGxlLmNvbSJfcyk7CiAKQEAgLTI0MzQsNyAr
MjM0OCw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgVXBkYXRlQ3JlZGVudGlhbE5h
bWUpCiAKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgRXhwb3J0SW1wb3J0Q3JlZGVudGlh
bCkKIHsKLSAgICBTVFJJTkdTOwogICAgIHJlc2V0KCk7CiAgICAgY2xlYW5VcEtleWNoYWluKCJl
eGFtcGxlLmNvbSJfcyk7CiAKQEAgLTI0NjMsNyArMjM3Niw2IEBAIFRFU1QoV2ViQXV0aGVudGlj
YXRpb25QYW5lbCwgRXhwb3J0SW1wb3J0Q3JlZGVudGlhbCkKIAogVEVTVChXZWJBdXRoZW50aWNh
dGlvblBhbmVsLCBFeHBvcnRJbXBvcnREdXBsaWNhdGVDcmVkZW50aWFsKQogewotICAgIFNUUklO
R1M7CiAgICAgcmVzZXQoKTsKICAgICBjbGVhblVwS2V5Y2hhaW4oZW1wdHlTdHJpbmcoKSk7CiAK
QEAgLTI0OTQsNyArMjQwNiw2IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgRXhwb3J0
SW1wb3J0RHVwbGljYXRlQ3JlZGVudGlhbCkKIAogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVs
LCBJbXBvcnRNYWxmb3JtZWRDcmVkZW50aWFsKQogewotICAgIFNUUklOR1M7CiAgICAgcmVzZXQo
KTsKIAogICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwpAQCAtMjUwNiw3ICsyNDE3LDYgQEAgVEVT
VChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBJbXBvcnRNYWxmb3JtZWRDcmVkZW50aWFsKQogCiBU
RVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiB7Ci0gICAg
U1RSSU5HUzsKICAgICByZXNldCgpOwogCiAgICAgQVNTRVJUX1RSVUUoYWRkS2V5VG9LZXljaGFp
bih0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0LCAiZXhhbXBsZS5jb20iX3MsIHRlc3RVc2VyRW50
aXR5QnVuZGxlQmFzZTY0KSk7CkBAIC0yNTE5LDggKzI0MjksNiBAQCBURVNUKFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiB9CiAjZW5kaWYgLy8gVVNFKEFQUExF
X0lOVEVSTkFMX1NESykgfHwgUExBVEZPUk0oSU9TKQogCi0jdW5kZWYgU1RSSU5HUwotCiB9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>