<?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>231060</bug_id>
          
          <creation_ts>2021-09-30 20:53:08 -0700</creation_ts>
          <short_desc>Implement missing functions in PrivateClickMeasurementDaemonClient</short_desc>
          <delta_ts>2021-10-05 14:50:01 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=231257</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1799157</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-30 20:53:08 -0700</bug_when>
    <thetext>Implement missing functions in PrivateClickMeasurementDaemonClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799158</commentid>
    <comment_count>1</comment_count>
      <attachid>439817</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-30 20:54:31 -0700</bug_when>
    <thetext>Created attachment 439817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799344</commentid>
    <comment_count>2</comment_count>
      <attachid>439867</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-01 09:28:37 -0700</bug_when>
    <thetext>Created attachment 439867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800306</commentid>
    <comment_count>3</comment_count>
      <attachid>440125</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-04 17:23:08 -0700</bug_when>
    <thetext>Created attachment 440125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800307</commentid>
    <comment_count>4</comment_count>
      <attachid>440126</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-04 17:25:01 -0700</bug_when>
    <thetext>Created attachment 440126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800312</commentid>
    <comment_count>5</comment_count>
      <attachid>440127</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-04 17:41:57 -0700</bug_when>
    <thetext>Created attachment 440127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800392</commentid>
    <comment_count>6</comment_count>
      <attachid>440159</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-04 22:54:41 -0700</bug_when>
    <thetext>Created attachment 440159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800647</commentid>
    <comment_count>7</comment_count>
      <attachid>440159</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-10-05 11:02:14 -0700</bug_when>
    <thetext>Comment on attachment 440159
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=440159&amp;action=review

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementConnection.h:63
&gt; +    explicit ConnectionToMachService(CString&amp;&amp; machServiceName, NetworkSession&amp;);

Probably don’t need the explicit.

&gt; Source/WebKit/Shared/EntryPointUtilities/Cocoa/Daemon/PCMDaemonConnectionSet.mm:47
&gt; +    m_connections.set(connection, DebugModeEnabled::No);

add() is more efficient and should suffice given that you don’t expect the key to exist.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800650</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-05 11:12:42 -0700</bug_when>
    <thetext>Done.
http://trac.webkit.org/r283559</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800652</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-05 11:13:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/83895136&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439817</attachid>
            <date>2021-09-30 20:54:31 -0700</date>
            <delta_ts>2021-10-01 09:28:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231060-20210930205430.patch</filename>
            <type>text/plain</type>
            <size>28142</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJlZDkyY2I5ODEwMzNiOGFm
Njk4YzRmY2VkMmM1Mjc2ZjEzN2RlZTYuLmIxZmRlY2Q5NzVmMjc0YTQ3MDBlMmFmOTk1OTc0YWVh
ZmE5ZTRhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjEtMDktMzAgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
bWlzc2luZyBmdW5jdGlvbnMgaW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA2MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBk
ZWJ1ZyBtb2RlIGluIHRoZSBkYWVtb24gaWYgYW55IGNvbm5lY3RlZCBjbGllbnRzIGhhdmUgZGVi
dWcgbW9kZSBlbmFibGVkLgorICAgICAgICBCcm9hZGNhc3QgZGVidWcgbWVzc2FnZXMgdG8gYWxs
IGNsaWVudHMsIHdoaWNoIHdpbGwgdGhlbiBicm9hZGNhc3QgdGhlbSB0byBhbGwgd2ViIHByb2Nl
c3Nlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6bWFuYWdlck9yUHJveHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNsaWVudDo6YnJvYWRjYXN0Q29uc29s
ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNsaWVudDo6ZGVidWdNb2Rl
RW5hYmxlZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFn
ZXJQcm94eTo6TWFuYWdlclByb3h5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1By
aXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpQQ006OkNvbm5lY3Rpb246OkNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQ
Q006OkNvbm5lY3Rpb246OmluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb246OnNlbmREZWJ1Z01vZGVJc0VuYWJsZWRNZXNz
YWdlSWZOZWNlc3NhcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb246
OmNoZWNrRm9yRGVidWdNZXNzYWdlQnJvYWRjYXN0IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFhQQ1V0aWxpdGllcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1t
OgorICAgICAgICAoV2ViS2l0OjpQQ006OmFkZFZlcnNpb25Ub0RpY3Rpb25hcnkpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006OmFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGljdGlvbmFyeSk6
CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURh
ZW1vbkNvbm5lY3Rpb25TZXQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFhQQ1V0aWxpdGllcy5oLgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0Nv
Y29hL0RhZW1vbi9QQ01EYWVtb25Db25uZWN0aW9uU2V0Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6UENNOjpEYWVtb25Db25uZWN0aW9uU2V0OjpzaW5nbGV0b24pOgorICAgICAgICAoV2Vi
S2l0OjpQQ006OkRhZW1vbkNvbm5lY3Rpb25TZXQ6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6RGFlbW9uQ29ubmVjdGlvblNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpE
YWVtb25Db25uZWN0aW9uU2V0Ojpjb25uZWN0ZWROZXR3b3JrUHJvY2Vzc0hhc0RlYnVnTW9kZUVu
YWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNvbm5lY3Rpb25TZXQ6OmRlYnVn
TW9kZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNvbm5lY3Rp
b25TZXQ6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQ
b2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbToKKyAgICAg
ICAgKFdlYktpdDo6Y29ubmVjdGlvbkV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OnN0
YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6
OnBlZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA5LTMwICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFBDTTogVGFrZSBhcHAgYnVu
ZGxlIElEIGludG8gY29uc2lkZXJhdGlvbiB3aGVuIG1hdGNoaW5nIHRyaWdnZXJpbmcgZXZlbnRz
IHdpdGggcGVuZGluZyBjbGlja3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNTM1OWU0Y2M1OGE5MzBmMzI3MDc3YTc3MTI1MWUxNGQz
NTEzZDkwOS4uNzBiMjkwOGQ3YzAyNDY0MGJiYWJjY2QwODA2NWNlYjliNWEyNmVhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTk4
LDcgKzk4LDcgQEAgc3RhdGljIFN0cmluZyBwY21TdG9yZURpcmVjdG9yeShjb25zdCBOZXR3b3Jr
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXMKIHN0YXRpYyBVbmlxdWVSZWY8UENN
OjpNYW5hZ2VySW50ZXJmYWNlPiBtYW5hZ2VyT3JQcm94eShOZXR3b3JrU2Vzc2lvbiYgbmV0d29y
a1Nlc3Npb24sIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKCFwYXJhbWV0
ZXJzLnBjbU1hY2hTZXJ2aWNlTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5p
cXVlUmVmPFBDTTo6TWFuYWdlclByb3h5PihwYXJhbWV0ZXJzLnBjbU1hY2hTZXJ2aWNlTmFtZSk7
CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFBDTTo6TWFuYWdlclByb3h5PihwYXJhbWV0
ZXJzLnBjbU1hY2hTZXJ2aWNlTmFtZSwgbmV0d29ya1Nlc3Npb24pOwogICAgIHJldHVybiBtYWtl
VW5pcXVlUmVmPFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4obWFrZVVuaXF1ZVJlZjxQ
Q006OkNsaWVudEltcGw+KG5ldHdvcmtTZXNzaW9uLCBuZXR3b3JrUHJvY2VzcyksIHBjbVN0b3Jl
RGlyZWN0b3J5KG5ldHdvcmtTZXNzaW9uLCBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQYXJhbWV0ZXJzLmRpcmVjdG9yeSwgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGFyYW1ldGVycy5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDY1MDI5YTY4MzJiZGVkYTFmZDBhNGUx
YTNmYWE5YzcxZWNlMzVjZTYuLmI5MzliODE2NDAyODA4YWUxYjQyY2MwNjk5ZmMzYTE4ZjEwZWU1
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNw
YWNlIFBDTSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKLUNvbm5lY3Rpb246OkNvbm5lY3Rp
b24oQ1N0cmluZyYmKQorQ29ubmVjdGlvbjo6Q29ubmVjdGlvbihDU3RyaW5nJiYsIE5ldHdvcmtT
ZXNzaW9uJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9u
LmgKaW5kZXggNDQyZjQ4NDI1ZDY0OWQ5ZGQ2MzZmNzM3NmY2ZGM4MzgxMzgzZmIyOS4uNmU3ZGNi
ZjdjM2E2N2YxYThjZWEyNzdmZDBiMjhiNThjNDRhYmQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlv
bi5oCkBAIC0zNiw2ICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBOZXR3
b3JrU2Vzc2lvbjsKKwogbmFtZXNwYWNlIFBDTSB7CiAKIGVudW0gY2xhc3MgTWVzc2FnZVR5cGUg
OiB1aW50OF90OwpAQCAtNDMsNyArNDUsNyBAQCB1c2luZyBFbmNvZGVkTWVzc2FnZSA9IFZlY3Rv
cjx1aW50OF90PjsKIAogY2xhc3MgQ29ubmVjdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxD
b25uZWN0aW9uPiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQ29ubmVjdGlvbihDU3RyaW5nJiYg
bWFjaFNlcnZpY2VOYW1lKTsKKyAgICBleHBsaWNpdCBDb25uZWN0aW9uKENTdHJpbmcmJiBtYWNo
U2VydmljZU5hbWUsIE5ldHdvcmtTZXNzaW9uJik7CiAKICAgICB2b2lkIHNlbmQoTWVzc2FnZVR5
cGUsIEVuY29kZWRNZXNzYWdlJiYpIGNvbnN0OwogICAgIHZvaWQgc2VuZFdpdGhSZXBseShNZXNz
YWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVk
TWVzc2FnZSYmKT4mJikgY29uc3Q7CkBAIC01MSw4ICs1MywxMSBAQCBwdWJsaWM6CiBwcml2YXRl
OgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5l
ZWRlZCgpIGNvbnN0OworICAgIHZvaWQgY2hlY2tGb3JEZWJ1Z01lc3NhZ2VCcm9hZGNhc3QoeHBj
X29iamVjdF90KSBjb25zdDsKKyAgICB2b2lkIHNlbmREZWJ1Z01vZGVJc0VuYWJsZWRNZXNzYWdl
SWZOZWNlc3NhcnkoKSBjb25zdDsKIAogICAgIGNvbnN0IENTdHJpbmcgbV9tYWNoU2VydmljZU5h
bWU7CisgICAgV2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4gbV9uZXR3b3JrU2Vzc2lvbjsKICAgICBt
dXRhYmxlIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvbjsKICNlbmRp
ZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAKaW5kZXggMzczZTUxYmU3MGYwYzZl
OTIzNDg0Y2I2ZmRkZTU5NThiZjJlYjU4ZC4uYTA3NWI0ZjdjOTkxMDY1MTM0MjQ5Njc0ZjQ2Njk1
ZTY4OTk0NWMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAKQEAgLTI2LDE1ICsy
NiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1
cmVtZW50RGFlbW9uQ2xpZW50LmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CisjaW5jbHVkZSAiUENNRGFlbW9uQ29ubmVjdGlvblNldC5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogbmFtZXNwYWNlIFBDTSB7CiAKLXZvaWQgRGFlbW9uQ2xpZW50Ojpicm9hZGNhc3RD
b25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJikKK3ZvaWQgRGFl
bW9uQ2xpZW50Ojpicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VMZXZlbCBsZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
RGFlbW9uQ29ubmVjdGlvblNldDo6c2luZ2xldG9uKCkuYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
bGV2ZWwsIG1lc3NhZ2UpOwogfQogCiBib29sIERhZW1vbkNsaWVudDo6ZmVhdHVyZUVuYWJsZWQo
KSBjb25zdApAQCAtNDQsOCArNDQsNyBAQCBib29sIERhZW1vbkNsaWVudDo6ZmVhdHVyZUVuYWJs
ZWQoKSBjb25zdAogCiBib29sIERhZW1vbkNsaWVudDo6ZGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IERhZW1vbkNvbm5lY3Rpb25TZXQ6OnNpbmdsZXRvbigpLmRlYnVnTW9kZUVuYWJsZWQoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgUENNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlckludGVyZmFjZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaApp
bmRleCBhNGE5NzQ0ODk3MTFhYjQ4YTIyM2ZmYzQyZDgyMDRmMjYxOTM3MzdkLi42YjNjMDkyMTRi
NWM1N2UxZDM3YmNiYTcxOThhZTQ4OTc1NDJmOWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlckludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
SW50ZXJmYWNlLmgKQEAgLTc2LDYgKzc2LDEwIEBAIHB1YmxpYzoKIGNvbnN0ZXhwciBjb25zdCBj
aGFyKiBwcm90b2NvbFZlcnNpb25LZXkgeyAidmVyc2lvbiIgfTsKIGNvbnN0ZXhwciB1aW50NjRf
dCBwcm90b2NvbFZlcnNpb25WYWx1ZSB7IDEgfTsKIAorY29uc3RleHByIGNvbnN0IGNoYXIqIHBy
b3RvY29sRGVidWdNb2RlSXNFbmFibGVkS2V5IHsgImRlYnVnIG1vZGUgaXMgZW5hYmxlZCIgfTsK
K2NvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbERlYnVnTWVzc2FnZUxldmVsS2V5IHsgImRl
YnVnIG1lc3NhZ2UgbGV2ZWwiIH07Citjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xEZWJ1
Z01lc3NhZ2VLZXkgeyAiZGVidWcgbWVzc2FnZSIgfTsKKwogY29uc3RleHByIGNvbnN0IGNoYXIq
IHByb3RvY29sTWVzc2FnZVR5cGVLZXkgeyAibWVzc2FnZSB0eXBlIiB9OwogZW51bSBjbGFzcyBN
ZXNzYWdlVHlwZSA6IHVpbnQ4X3QgewogICAgIFN0b3JlVW5hdHRyaWJ1dGVkLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlclByb3h5LmNwcAppbmRleCBiZGE4NWM0OTZiNjBiMWViNjIwZWViNzE0NWFjODEw
M2RmNGRlY2ExLi5mOTI0MzZlNzczNTk5OGQwNjlmNmFmNmRlYTFhNTMyODEwOTYxNThhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcApAQCAtNzIsOCArNzIsOCBAQCB2b2lkIE1hbmFn
ZXJQcm94eTo6c2VuZE1lc3NhZ2VXaXRoUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXBs
eUFyZ3MuLi4pPiYmCiAgICAgfSk7CiB9CiAKLU1hbmFnZXJQcm94eTo6TWFuYWdlclByb3h5KGNv
bnN0IFN0cmluZyYgbWFjaFNlcnZpY2VOYW1lKQotICAgIDogbV9jb25uZWN0aW9uKG1hY2hTZXJ2
aWNlTmFtZS51dGY4KCkpIHsgfQorTWFuYWdlclByb3h5OjpNYW5hZ2VyUHJveHkoY29uc3QgU3Ry
aW5nJiBtYWNoU2VydmljZU5hbWUsIE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbikKKyAg
ICA6IG1fY29ubmVjdGlvbihtYWNoU2VydmljZU5hbWUudXRmOCgpLCBuZXR3b3JrU2Vzc2lvbikg
eyB9CiAKIHZvaWQgTWFuYWdlclByb3h5OjpzdG9yZVVuYXR0cmlidXRlZChXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCYmIHBjbSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaApp
bmRleCAzNGIzNDcwYWFlYmNjYzljNmY4NzQ0ZDIzYjRmMTBhMDExYzhhYzNkLi5hYWRlYzdjOTE0
MTA2NWEyNWFlZTQyMDc0NjdiMDYwNDA5NzA2OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94
eS5oCkBAIC0zMiwxMiArMzIsMTQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIE5l
dHdvcmtTZXNzaW9uOworCiBuYW1lc3BhY2UgUENNIHsKIAogY2xhc3MgTWFuYWdlclByb3h5IDog
cHVibGljIE1hbmFnZXJJbnRlcmZhY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIE1hbmFnZXJQcm94eShjb25zdCBTdHJpbmcmIG1hY2hTZXJ2aWNlTmFtZSk7
CisgICAgTWFuYWdlclByb3h5KGNvbnN0IFN0cmluZyYgbWFjaFNlcnZpY2VOYW1lLCBOZXR3b3Jr
U2Vzc2lvbiYpOwogCiAgICAgdXNpbmcgQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gU3Ry
aW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVj
dGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25D
b2NvYS5tbQppbmRleCAxYzZlNmJmZTczMTUzOWVhMTE4NDM3M2E4Y2U2YmE1NWUyYTljOWI5Li40
YWY3M2JjNGZlODY2NDg2NTY1NDNkNDRjNDc1Zjg0MWFlZTI5ZjY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1By
aXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0KQEAgLTMzLDggKzMz
LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBQQ00gewogCi1Db25uZWN0aW9u
OjpDb25uZWN0aW9uKENTdHJpbmcmJiBtYWNoU2VydmljZU5hbWUpCi0gICAgOiBtX21hY2hTZXJ2
aWNlTmFtZShXVEZNb3ZlKG1hY2hTZXJ2aWNlTmFtZSkpIHsgfQorQ29ubmVjdGlvbjo6Q29ubmVj
dGlvbihDU3RyaW5nJiYgbWFjaFNlcnZpY2VOYW1lLCBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nl
c3Npb24pCisgICAgOiBtX21hY2hTZXJ2aWNlTmFtZShXVEZNb3ZlKG1hY2hTZXJ2aWNlTmFtZSkp
CisgICAgLCBtX25ldHdvcmtTZXNzaW9uKG1ha2VXZWFrUHRyKG5ldHdvcmtTZXNzaW9uKSkgeyB9
CiAKIHZvaWQgQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpIGNvbnN0
CiB7CkBAIC01MCw4ICs1MSwzOSBAQCB2b2lkIENvbm5lY3Rpb246OmluaXRpYWxpemVDb25uZWN0
aW9uSWZOZWVkZWQoKSBjb25zdAogICAgICAgICAgICAgLy8gRGFlbW9uIGNyYXNoZWQsIHdlIHdp
bGwgbmVlZCB0byBtYWtlIGEgbmV3IGNvbm5lY3Rpb24gdG8gYSBuZXcgaW5zdGFuY2Ugb2YgdGhl
IGRhZW1vbi4KICAgICAgICAgICAgIHdlYWtUaGlzLT5tX2Nvbm5lY3Rpb24gPSBudWxscHRyOwog
ICAgICAgICB9CisgICAgICAgIHdlYWtUaGlzLT5jaGVja0ZvckRlYnVnTWVzc2FnZUJyb2FkY2Fz
dChldmVudCk7CiAgICAgfSk7CiAgICAgeHBjX2Nvbm5lY3Rpb25fYWN0aXZhdGUobV9jb25uZWN0
aW9uLmdldCgpKTsKKworICAgIHNlbmREZWJ1Z01vZGVJc0VuYWJsZWRNZXNzYWdlSWZOZWNlc3Nh
cnkoKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpzZW5kRGVidWdNb2RlSXNFbmFibGVkTWVzc2Fn
ZUlmTmVjZXNzYXJ5KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9jb25uZWN0aW9uKTsKKyAgICBp
ZiAoIW1fbmV0d29ya1Nlc3Npb24KKyAgICAgICAgfHwgbV9uZXR3b3JrU2Vzc2lvbi0+c2Vzc2lv
bklEKCkuaXNFcGhlbWVyYWwoKQorICAgICAgICB8fCAhbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29y
a1Byb2Nlc3MoKS5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRPU09iamVjdCh4cGNf
ZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIGFkZFZlcnNpb25U
b0RpY3Rpb25hcnkoZGljdGlvbmFyeS5nZXQoKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X2Jv
b2woZGljdGlvbmFyeS5nZXQoKSwgcHJvdG9jb2xEZWJ1Z01vZGVJc0VuYWJsZWRLZXksIHRydWUp
OworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShtX2Nvbm5lY3Rpb24uZ2V0KCksIGRp
Y3Rpb25hcnkuZ2V0KCkpOworfQorCit2b2lkIENvbm5lY3Rpb246OmNoZWNrRm9yRGVidWdNZXNz
YWdlQnJvYWRjYXN0KHhwY19vYmplY3RfdCByZXF1ZXN0KSBjb25zdAoreworICAgIGlmICh4cGNf
Z2V0X3R5cGUocmVxdWVzdCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgcmV0dXJu
OworICAgIGNvbnN0IGNoYXIqIGRlYnVnTWVzc2FnZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJp
bmcocmVxdWVzdCwgcHJvdG9jb2xEZWJ1Z01lc3NhZ2VLZXkpOworICAgIGlmICghZGVidWdNZXNz
YWdlKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBzdGF0aWNfY2Fz
dDxKU0M6Ok1lc3NhZ2VMZXZlbD4oeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBw
cm90b2NvbERlYnVnTWVzc2FnZUxldmVsS2V5KSk7CisgICAgYXV0byogbmV0d29ya1Nlc3Npb24g
PSBtX25ldHdvcmtTZXNzaW9uLmdldCgpOworICAgIGlmICghbmV0d29ya1Nlc3Npb24pCisgICAg
ICAgIHJldHVybjsKKyAgICBtX25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmJyb2Fk
Y2FzdENvbnNvbGVNZXNzYWdlKG1fbmV0d29ya1Nlc3Npb24tPnNlc3Npb25JRCgpLCBNZXNzYWdl
U291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgbWVzc2FnZUxldmVsLCBTdHJpbmc6OmZy
b21VVEY4KGRlYnVnTWVzc2FnZSkpOwogfQogCiBzdGF0aWMgT1NPYmplY3RQdHI8eHBjX29iamVj
dF90PiBkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29k
ZWRNZXNzYWdlJiYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRYUENVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMu
aAppbmRleCAwYzYyMjdiNDc3MzRmZWZmMjg1MWU1MjMyZGVlMjgxMzM5MzdiNDAwLi42NzlhZjBh
ZDMzOGUxNzIzNDZiNjJjMzI1MzUyYjgyMjY3ODE4ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFhQQ1V0aWxpdGllcy5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBuYW1lc3BhY2UgUENNIHsKIAordm9pZCBhZGRWZXJzaW9uVG9EaWN0aW9uYXJ5KHhwY19vYmpl
Y3RfdCk7CiB2b2lkIGFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGljdGlvbmFyeShWZWN0
b3I8dWludDhfdD4mJiwgeHBjX29iamVjdF90KTsKIAogfSAvLyBuYW1lc3BhY2UgUENNCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5tbQppbmRleCBhNjMwMzFiNWMzNmI3MTI2
MTgyMTcwNDNmZjk3ZGZmOTQ3NGM1ZDJjLi45YWVmZDdhY2Q5YjFiY2ExYmRjYzUzZWU2OTE4MmM5
ODNlYzRhMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0
aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0KQEAg
LTMwLDEwICszMCwxNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFBDTSB7CiAK
LXZvaWQgYWRkVmVyc2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KFZlY3Rvcjx1aW50
OF90PiYmIG1lc3NhZ2UsIHhwY19vYmplY3RfdCBkaWN0aW9uYXJ5KQordm9pZCBhZGRWZXJzaW9u
VG9EaWN0aW9uYXJ5KHhwY19vYmplY3RfdCBkaWN0aW9uYXJ5KQogewogICAgIEFTU0VSVCh4cGNf
Z2V0X3R5cGUoZGljdGlvbmFyeSkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSk7CiAgICAgeHBjX2Rp
Y3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LCBQQ006OnByb3RvY29sVmVyc2lvbktleSwg
UENNOjpwcm90b2NvbFZlcnNpb25WYWx1ZSk7Cit9CisKK3ZvaWQgYWRkVmVyc2lvbkFuZEVuY29k
ZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIHhwY19vYmpl
Y3RfdCBkaWN0aW9uYXJ5KQoreworICAgIGFkZFZlcnNpb25Ub0RpY3Rpb25hcnkoZGljdGlvbmFy
eSk7CiAKICAgICBhdXRvIGJ1ZmZlclNpemUgPSBtZXNzYWdlLnNpemUoKTsKICAgICBhdXRvIHJh
d1BvaW50ZXIgPSBtZXNzYWdlLnJlbGVhc2VCdWZmZXIoKS5sZWFrUHRyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9Q
Q01EYWVtb25Db25uZWN0aW9uU2V0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50
VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25Db25uZWN0aW9uU2V0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDA0ZDg3ZTQ4YWNlODM0NDgxMTEzMTM4MjYwNjExYTc1NDllMTYwYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFl
bW9uL1BDTURhZW1vbkNvbm5lY3Rpb25TZXQuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CitlbnVtIGNsYXNzIE1lc3NhZ2VMZXZl
bCA6IHVpbnQ4X3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFBDTSB7CisK
K2NsYXNzIERhZW1vbkNvbm5lY3Rpb25TZXQgeworcHVibGljOgorICAgIHN0YXRpYyBEYWVtb25D
b25uZWN0aW9uU2V0JiBzaW5nbGV0b24oKTsKKyAgICAKKyAgICB2b2lkIGFkZCh4cGNfY29ubmVj
dGlvbl90KTsKKyAgICB2b2lkIHJlbW92ZSh4cGNfY29ubmVjdGlvbl90KTsKKworICAgIHZvaWQg
Y29ubmVjdGVkTmV0d29ya1Byb2Nlc3NIYXNEZWJ1Z01vZGVFbmFibGVkKHhwY19jb25uZWN0aW9u
X3QpOworICAgIGJvb2wgZGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgYnJvYWRj
YXN0Q29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYpOworICAg
IAorcHJpdmF0ZToKKyAgICBlbnVtIGNsYXNzIERlYnVnTW9kZUVuYWJsZWQgOiBib29sIHsgTm8s
IFllcyB9OworICAgIEhhc2hNYXA8UmV0YWluUHRyPHhwY19jb25uZWN0aW9uX3Q+LCBEZWJ1Z01v
ZGVFbmFibGVkPiBtX2Nvbm5lY3Rpb25zOworICAgIHNpemVfdCBtX2Nvbm5lY3Rpb25zV2l0aERl
YnVnTW9kZUVuYWJsZWQgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBQQ00KK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uQ29ubmVjdGlvblNldC5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1v
bkNvbm5lY3Rpb25TZXQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE4MDViOWU2ZDJhNDVhYjhmYTQxNjY4MGVi
MzYzNzZmOGJmZjJkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkNvbm5lY3Rpb25TZXQubW0K
QEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiUENNRGFlbW9uQ29ubmVjdGlvblNldC5oIgorCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCIKKyNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgor
I2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2Ug
UENNIHsKKworRGFlbW9uQ29ubmVjdGlvblNldCYgRGFlbW9uQ29ubmVjdGlvblNldDo6c2luZ2xl
dG9uKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxEYWVtb25Db25uZWN0aW9uU2V0PiBzZXQ7CisgICAgcmV0dXJuIHNldC5nZXQo
KTsKK30KKyAgICAKK3ZvaWQgRGFlbW9uQ29ubmVjdGlvblNldDo6YWRkKHhwY19jb25uZWN0aW9u
X3QgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMoY29u
bmVjdGlvbikpOworICAgIG1fY29ubmVjdGlvbnMuc2V0KGNvbm5lY3Rpb24sIERlYnVnTW9kZUVu
YWJsZWQ6Ok5vKTsKK30KKwordm9pZCBEYWVtb25Db25uZWN0aW9uU2V0OjpyZW1vdmUoeHBjX2Nv
bm5lY3Rpb25fdCBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRh
aW5zKGNvbm5lY3Rpb24pKTsKKyAgICBhdXRvIGhhZERlYnVnTW9kZUVuYWJsZWQgPSBtX2Nvbm5l
Y3Rpb25zLnRha2UoY29ubmVjdGlvbik7CisgICAgaWYgKGhhZERlYnVnTW9kZUVuYWJsZWQgPT0g
RGVidWdNb2RlRW5hYmxlZDo6WWVzKSB7CisgICAgICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zV2l0
aERlYnVnTW9kZUVuYWJsZWQpOworICAgICAgICBtX2Nvbm5lY3Rpb25zV2l0aERlYnVnTW9kZUVu
YWJsZWQtLTsKKyAgICB9Cit9CisKK3ZvaWQgRGFlbW9uQ29ubmVjdGlvblNldDo6Y29ubmVjdGVk
TmV0d29ya1Byb2Nlc3NIYXNEZWJ1Z01vZGVFbmFibGVkKHhwY19jb25uZWN0aW9uX3QgY29ubmVj
dGlvbikKK3sKKyAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uKSk7
CisgICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb24pID09IERlYnVnTW9kZUVu
YWJsZWQ6Ok5vKTsKKyAgICBtX2Nvbm5lY3Rpb25zLnNldChjb25uZWN0aW9uLCBEZWJ1Z01vZGVF
bmFibGVkOjpZZXMpOworICAgIG1fY29ubmVjdGlvbnNXaXRoRGVidWdNb2RlRW5hYmxlZCsrOwor
fQorCitib29sIERhZW1vbkNvbm5lY3Rpb25TZXQ6OmRlYnVnTW9kZUVuYWJsZWQoKSBjb25zdAor
eworICAgIHJldHVybiAhIW1fY29ubmVjdGlvbnNXaXRoRGVidWdNb2RlRW5hYmxlZDsKK30KKwor
dm9pZCBEYWVtb25Db25uZWN0aW9uU2V0Ojpicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1l
c3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBh
dXRvIGRpY3Rpb25hcnkgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxs
cHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9u
YXJ5LmdldCgpLCBwcm90b2NvbERlYnVnTWVzc2FnZUxldmVsS2V5LCBzdGF0aWNfY2FzdDx1aW50
NjRfdD4obWVzc2FnZUxldmVsKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhkaWN0
aW9uYXJ5LmdldCgpLCBwcm90b2NvbERlYnVnTWVzc2FnZUtleSwgbWVzc2FnZS51dGY4KCkuZGF0
YSgpKTsKKyAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zLmtleXMoKSkK
KyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIGRp
Y3Rpb25hcnkuZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBQQ00KK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9p
bnQubW0KaW5kZXggNTQ4ZmY1MTY0YzZkNmYxOWJlNTFkNGY0NjhkZDdiZjVkNDNhNDg2ZC4uYjg4
OGE0ZDFmNjBkNDc0NWU1ZjYzNTUzMjc3YmMxNTkwMDBhZjU2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9u
RW50cnlQb2ludC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBDTURhZW1vbkVudHJ5UG9pbnQuaCIKIAor
I2ltcG9ydCAiUENNRGFlbW9uQ29ubmVjdGlvblNldC5oIgogI2ltcG9ydCAiUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCiAjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXJJbnRlcmZhY2UuaCIKICNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50WFBD
VXRpbGl0aWVzLmgiCkBAIC00MywxMyArNDQsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
c3RhdGljIEhhc2hTZXQ8UmV0YWluUHRyPHhwY19jb25uZWN0aW9uX3Q+PiYgcGVlcnMoKQotewot
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8UmV0YWluUHRyPHhwY19jb25uZWN0aW9uX3Q+Pj4gc2V0OwotICAgIHJldHVybiBz
ZXQuZ2V0KCk7Ci19Ci0KIHN0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBDTTo6RW5jb2Rl
ZE1lc3NhZ2UmJik+IHJlcGx5U2VuZGVyKFBDTTo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIE9T
T2JqZWN0UHRyPHhwY19vYmplY3RfdD4mJiByZXF1ZXN0KQogewogICAgIGlmICghUENNOjptZXNz
YWdlVHlwZVNlbmRzUmVwbHkobWVzc2FnZVR5cGUpKQpAQCAtNjksNiArNjMsMTAgQEAgc3RhdGlj
IHZvaWQgY29ubmVjdGlvbkV2ZW50SGFuZGxlcih4cGNfb2JqZWN0X3QgcmVxdWVzdCkKICAgICAg
ICAgTlNMb2coQCJyZWNlaXZlZCByZXF1ZXN0IHRoYXQgd2FzIG5vdCB0aGUgY3VycmVudCBwcm90
b2NvbCB2ZXJzaW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKHhwY19kaWN0
aW9uYXJ5X2dldF9ib29sKHJlcXVlc3QsIFBDTTo6cHJvdG9jb2xEZWJ1Z01vZGVJc0VuYWJsZWRL
ZXkpKSB7CisgICAgICAgIFBDTTo6RGFlbW9uQ29ubmVjdGlvblNldDo6c2luZ2xldG9uKCkuY29u
bmVjdGVkTmV0d29ya1Byb2Nlc3NIYXNEZWJ1Z01vZGVFbmFibGVkKHhwY19kaWN0aW9uYXJ5X2dl
dF9yZW1vdGVfY29ubmVjdGlvbihyZXF1ZXN0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICBhdXRvIG1lc3NhZ2VUeXBlIHsgc3RhdGljX2Nhc3Q8UENNOjpNZXNzYWdlVHlwZT4oeHBj
X2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBQQ006OnByb3RvY29sTWVzc2FnZVR5cGVL
ZXkpKSB9OwogICAgIHNpemVfdCBkYXRhU2l6ZSB7IDAgfTsKQEAgLTkxLDcgKzg5LDcgQEAgc3Rh
dGljIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2VydmljZUNvbm5lY3Rpb25zKGNvbnN0IGNo
YXIqIHNlcnZpY2VOYW1lKQogICAgICAgICAgICAgICAgIE5TTG9nKEAiRmFpbGVkIHRvIHN0YXJ0
IGxpc3RlbmluZyBmb3IgY29ubmVjdGlvbnMgdG8gbWFjaCBzZXJ2aWNlICVzLCBsaWtlbHkgYmVj
YXVzZSBpdCBpcyBub3QgcmVnaXN0ZXJlZCB3aXRoIGxhdW5jaGQiLCBzZXJ2aWNlTmFtZSk7CiAg
ICAgICAgICAgICBpZiAoZXZlbnQgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5URVJSVVBURUQp
IHsKICAgICAgICAgICAgICAgICBOU0xvZyhAInJlbW92aW5nIHBlZXIgY29ubmVjdGlvbiAlcCIs
IHBlZXIpOwotICAgICAgICAgICAgICAgIHBlZXJzKCkucmVtb3ZlKHBlZXIpOworICAgICAgICAg
ICAgICAgIFBDTTo6RGFlbW9uQ29ubmVjdGlvblNldDo6c2luZ2xldG9uKCkucmVtb3ZlKHBlZXIp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNv
bm5lY3Rpb25FdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtMTAwLDcgKzk4LDcgQEAgc3RhdGljIHZv
aWQgc3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2VydmljZUNvbm5lY3Rpb25zKGNvbnN0IGNoYXIqIHNl
cnZpY2VOYW1lKQogICAgICAgICB4cGNfY29ubmVjdGlvbl9hY3RpdmF0ZShwZWVyKTsKIAogICAg
ICAgICBOU0xvZyhAImFkZGluZyBwZWVyIGNvbm5lY3Rpb24gJXAiLCBwZWVyKTsKLSAgICAgICAg
cGVlcnMoKS5hZGQocGVlcik7CisgICAgICAgIFBDTTo6RGFlbW9uQ29ubmVjdGlvblNldDo6c2lu
Z2xldG9uKCkuYWRkKHBlZXIpOwogICAgIH0pOwogICAgIHhwY19jb25uZWN0aW9uX2FjdGl2YXRl
KGxpc3RlbmVyLmdldCgpLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA1ZTZi
NTJjMTIxMTQ2YzZkNTNhY2U2NjVkNjVjMjU2ZmRlNWU5NTkzLi40MDk3MmI1MjhlZGNjNzQ1ODkw
ZWY4MjliNGE1MjY0MmY0MmY5ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xOTMsNiAr
MTkzLDcgQEAgU2hhcmVkL0NvY29hL1dLTlNVUkxSZXF1ZXN0Lm1tCiBTaGFyZWQvQ29jb2EvV0tP
YmplY3QubW0KIFNoYXJlZC9Db2NvYS9XZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNDb2NvYS5t
bQogCitTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uQ29u
bmVjdGlvblNldC5tbQogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BD
TURhZW1vbkVudHJ5UG9pbnQubW0KIAogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2Ev
WFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDFjNjk1MTViYjE4MmRmYTVhNTQw
Nzc0ODY0ZjczZWMyOThjNDFkOS4uNTZiZjQ5ZWZiNDg4YWU3YjJkOTRiZDE0ZGQ3NTgxZDY0MTM3
ZWJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00NTM3LDYgKzQ1MzcsOCBAQAogCQk1QzVEMjM4ODIyN0ExODkyMDAwQjlCREEgLyog
X1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzVEMjM4OTIyN0ExODkyMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0N1c3RvbUhlYWRlckZpZWxk
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVEMjM4QTIyN0ExRDlCMDAwQjlC
REEgLyogQVBJQ3VzdG9tSGVhZGVyRmllbGRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFQSUN1c3RvbUhlYWRlckZpZWxkcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzYyODlBODI3MDY4RUMwMDBDRjVFQzYgLyogUENNRGFlbW9uQ29ubmVjdGlvblNldC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQQ01EYWVtb25Db25uZWN0aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDNjI4OUE5MjcwNjhFQzAwMENGNUVDNiAvKiBQQ01EYWVtb25Db25u
ZWN0aW9uU2V0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUENNRGFlbW9uQ29ubmVjdGlvblNl
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2MkZERjgxRUZDMjYzQzAwQ0Uw
NzJFIC8qIFdLVVJMU2NoZW1lVGFza1ByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxTY2hl
bWVUYXNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzY2QTRCMzIz
MjA5NjEzMDBFQTRENDQgLyogV0tIVFRQQ29va2llU3RvcmVSZWYuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tIVFRQQ29va2llU3RvcmVSZWYuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzY2QTRCNDIzMjA5NjE0MDBFQTRENDQgLyogV0tIVFRQ
Q29va2llU3RvcmVSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tIVFRQ
Q29va2llU3RvcmVSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0ODAsNiAr
OTQ4Miw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTVDQUY3
QUE1MjZGOTNBOTUwMDAzRjE5RSAvKiBBZEF0dHJpYnV0aW9uRGFlbW9uLmMgKi8sCisJCQkJNUM2
Mjg5QTgyNzA2OEVDMDAwQ0Y1RUM2IC8qIFBDTURhZW1vbkNvbm5lY3Rpb25TZXQuaCAqLywKKwkJ
CQk1QzYyODlBOTI3MDY4RUMwMDBDRjVFQzYgLyogUENNRGFlbW9uQ29ubmVjdGlvblNldC5tbSAq
LywKIAkJCQk1Q0I5MzEwNDI2RTgzN0ZDMDAzMkIxQzAgLyogUENNRGFlbW9uRW50cnlQb2ludC5o
ICovLAogCQkJCTVDQjkzMTA1MjZFODM3RkQwMDMyQjFDMCAvKiBQQ01EYWVtb25FbnRyeVBvaW50
Lm1tICovLAogCQkJKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAwMTUyMTk4MGU0MDQzYjMxMmNmMWEwOTZhMTNhMDU4NzQ4ZDgwOWU2Li45M2Ew
ZmIyMGJmN2U5YjM5N2JhYjg3ZDMxNGY3NDk2ZWI3NTQyOTJhIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDkt
MzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBJbXBsZW1lbnQgbWlzc2luZyBmdW5jdGlvbnMgaW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
YWVtb25DbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMTA2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1t
OgorCiAyMDIxLTA5LTMwICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFBDTTogVGFrZSBhcHAgYnVuZGxlIElEIGludG8gY29uc2lkZXJhdGlvbiB3aGVuIG1h
dGNoaW5nIHRyaWdnZXJpbmcgZXZlbnRzIHdpdGggcGVuZGluZyBjbGlja3MKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlv
bi5tbQppbmRleCBhMjQzOGFmNDQ3MGYzNTNiMjU2MTgxMTQzYTBlZmJhMjY4MDk0OGFkLi40MjU1
MmE0YTYxMDY3MmIwZmMwYzY0NjUyMWQ1N2Y2MDQyMDM1ODZhIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1t
CkBAIC00ODYsNiArNDg2LDggQEAgVEVTVChFdmVudEF0dHJpYnV0aW9uLCBEYWVtb24pCiAgICAg
RVhQRUNUX05VTEwoZXJyb3IpOwogfQogCisvLyBGSVhNRTogVXNlIHdpbGxBZGRNZXNzYWdlVG9D
b25zb2xlIGFuZCBXZWJQcmVmZXJlbmNlc0tleTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1
Z01vZGVFbmFibGVkS2V5IHRvIHRlc3QgZW5hYmxpbmcgZGVidWcgbW9kZSBhbmQgc2VlaW5nIHRo
YXQgbWVzc2FnZXMgYXJlIHNlbnQgdG8gdGhlIGNvbnNvbGUuCisKICNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCiAKICNpZiBIQVZFKFVJX0VWRU5UX0FUVFJJQlVUSU9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439867</attachid>
            <date>2021-10-01 09:28:37 -0700</date>
            <delta_ts>2021-10-04 17:23:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231060-20211001092836.patch</filename>
            <type>text/plain</type>
            <size>26943</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMzU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFiZThmNjdlZjVmMGZmMzFk
NzY3MGMxZDE1OGI2YzM5NTc3MmI1OGIuLmMyMjVlZWNmYmJkOGM1YTRlYTQ4YTBhNTI1MWYzNDYz
MWVkZjc3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMjEtMTAtMDEgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
bWlzc2luZyBmdW5jdGlvbnMgaW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA2MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBk
ZWJ1ZyBtb2RlIGluIHRoZSBkYWVtb24gaWYgYW55IGNvbm5lY3RlZCBjbGllbnRzIGhhdmUgZGVi
dWcgbW9kZSBlbmFibGVkLgorICAgICAgICBCcm9hZGNhc3QgZGVidWcgbWVzc2FnZXMgdG8gYWxs
IGNsaWVudHMsIHdoaWNoIHdpbGwgdGhlbiBicm9hZGNhc3QgdGhlbSB0byBhbGwgd2ViIHByb2Nl
c3Nlcy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6bWFuYWdlck9yUHJveHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNsaWVudDo6YnJvYWRjYXN0Q29uc29s
ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNsaWVudDo6ZGVidWdNb2Rl
RW5hYmxlZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006Ok1hbmFn
ZXJQcm94eTo6TWFuYWdlclByb3h5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1By
aXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpQQ006OkNvbm5lY3Rpb246OkNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQ
Q006OkNvbm5lY3Rpb246OmluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb246OnNlbmREZWJ1Z01vZGVJc0VuYWJsZWRNZXNz
YWdlSWZOZWNlc3NhcnkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb246
OmNoZWNrRm9yRGVidWdNZXNzYWdlQnJvYWRjYXN0IGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudFhQQ1V0aWxpdGllcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1t
OgorICAgICAgICAoV2ViS2l0OjpQQ006OmFkZFZlcnNpb25Ub0RpY3Rpb25hcnkpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006OmFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGljdGlvbmFyeSk6
CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURh
ZW1vbkNvbm5lY3Rpb25TZXQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFhQQ1V0aWxpdGllcy5oLgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0Nv
Y29hL0RhZW1vbi9QQ01EYWVtb25Db25uZWN0aW9uU2V0Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6UENNOjpEYWVtb25Db25uZWN0aW9uU2V0OjpzaW5nbGV0b24pOgorICAgICAgICAoV2Vi
S2l0OjpQQ006OkRhZW1vbkNvbm5lY3Rpb25TZXQ6OmFkZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6RGFlbW9uQ29ubmVjdGlvblNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpE
YWVtb25Db25uZWN0aW9uU2V0Ojpjb25uZWN0ZWROZXR3b3JrUHJvY2Vzc0hhc0RlYnVnTW9kZUVu
YWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNvbm5lY3Rpb25TZXQ6OmRlYnVn
TW9kZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNvbm5lY3Rp
b25TZXQ6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQ
b2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbToKKyAgICAg
ICAgKFdlYktpdDo6Y29ubmVjdGlvbkV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OnN0
YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6
OnBlZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA5LTMwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZHVtcGluZyBmb3IgVUlWaWV3
cyB3aXRoIHNlcGFyYXRlZCBsYXllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNTM1OWU0Y2M1OGE5MzBmMzI3MDc3YTc3MTI1MWUx
NGQzNTEzZDkwOS4uNzBiMjkwOGQ3YzAyNDY0MGJiYWJjY2QwODA2NWNlYjliNWEyNmVhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAg
LTk4LDcgKzk4LDcgQEAgc3RhdGljIFN0cmluZyBwY21TdG9yZURpcmVjdG9yeShjb25zdCBOZXR3
b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXMKIHN0YXRpYyBVbmlxdWVSZWY8
UENNOjpNYW5hZ2VySW50ZXJmYWNlPiBtYW5hZ2VyT3JQcm94eShOZXR3b3JrU2Vzc2lvbiYgbmV0
d29ya1Nlc3Npb24sIE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKCFwYXJh
bWV0ZXJzLnBjbU1hY2hTZXJ2aWNlTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtYWtl
VW5pcXVlUmVmPFBDTTo6TWFuYWdlclByb3h5PihwYXJhbWV0ZXJzLnBjbU1hY2hTZXJ2aWNlTmFt
ZSk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFBDTTo6TWFuYWdlclByb3h5PihwYXJh
bWV0ZXJzLnBjbU1hY2hTZXJ2aWNlTmFtZSwgbmV0d29ya1Nlc3Npb24pOwogICAgIHJldHVybiBt
YWtlVW5pcXVlUmVmPFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcj4obWFrZVVuaXF1ZVJl
ZjxQQ006OkNsaWVudEltcGw+KG5ldHdvcmtTZXNzaW9uLCBuZXR3b3JrUHJvY2VzcyksIHBjbVN0
b3JlRGlyZWN0b3J5KG5ldHdvcmtTZXNzaW9uLCBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9yeSwgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGFyYW1ldGVycy5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnkpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDY1MDI5YTY4MzJiZGVkYTFmZDBh
NGUxYTNmYWE5YzcxZWNlMzVjZTYuLmI5MzliODE2NDAyODA4YWUxYjQyY2MwNjk5ZmMzYTE4ZjEw
ZWU1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFt
ZXNwYWNlIFBDTSB7CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKLUNvbm5lY3Rpb246OkNvbm5l
Y3Rpb24oQ1N0cmluZyYmKQorQ29ubmVjdGlvbjo6Q29ubmVjdGlvbihDU3RyaW5nJiYsIE5ldHdv
cmtTZXNzaW9uJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0
aW9uLmgKaW5kZXggNDQyZjQ4NDI1ZDY0OWQ5ZGQ2MzZmNzM3NmY2ZGM4MzgxMzgzZmIyOS4uNmU3
ZGNiZjdjM2E2N2YxYThjZWEyNzdmZDBiMjhiNThjNDRhYmQ3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVj
dGlvbi5oCkBAIC0zNiw2ICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBO
ZXR3b3JrU2Vzc2lvbjsKKwogbmFtZXNwYWNlIFBDTSB7CiAKIGVudW0gY2xhc3MgTWVzc2FnZVR5
cGUgOiB1aW50OF90OwpAQCAtNDMsNyArNDUsNyBAQCB1c2luZyBFbmNvZGVkTWVzc2FnZSA9IFZl
Y3Rvcjx1aW50OF90PjsKIAogY2xhc3MgQ29ubmVjdGlvbiA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxDb25uZWN0aW9uPiB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgQ29ubmVjdGlvbihDU3RyaW5n
JiYgbWFjaFNlcnZpY2VOYW1lKTsKKyAgICBleHBsaWNpdCBDb25uZWN0aW9uKENTdHJpbmcmJiBt
YWNoU2VydmljZU5hbWUsIE5ldHdvcmtTZXNzaW9uJik7CiAKICAgICB2b2lkIHNlbmQoTWVzc2Fn
ZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYpIGNvbnN0OwogICAgIHZvaWQgc2VuZFdpdGhSZXBseShN
ZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNv
ZGVkTWVzc2FnZSYmKT4mJikgY29uc3Q7CkBAIC01MSw4ICs1MywxMSBAQCBwdWJsaWM6CiBwcml2
YXRlOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25J
Zk5lZWRlZCgpIGNvbnN0OworICAgIHZvaWQgY2hlY2tGb3JEZWJ1Z01lc3NhZ2VCcm9hZGNhc3Qo
eHBjX29iamVjdF90KSBjb25zdDsKKyAgICB2b2lkIHNlbmREZWJ1Z01vZGVJc0VuYWJsZWRNZXNz
YWdlSWZOZWNlc3NhcnkoKSBjb25zdDsKIAogICAgIGNvbnN0IENTdHJpbmcgbV9tYWNoU2Vydmlj
ZU5hbWU7CisgICAgV2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4gbV9uZXR3b3JrU2Vzc2lvbjsKICAg
ICBtdXRhYmxlIE9TT2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvbjsKICNl
bmRpZgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAKaW5kZXggMzczZTUxYmU3MGYw
YzZlOTIzNDg0Y2I2ZmRkZTU5NThiZjJlYjU4ZC4uYWRhNTI1MDIwYWJhMWZhYmVmMTEyNTQ0YzRl
YTExYTNkNmRkMmYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAKQEAgLTI2LDE1
ICsyNiwyMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByaXZhdGVDbGlja01l
YXN1cmVtZW50RGFlbW9uQ2xpZW50LmgiCiAKLSNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiUENNRGFlbW9uQ29ubmVjdGlv
blNldC5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgUENNIHsK
IAotdm9pZCBEYWVtb25DbGllbnQ6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKEpTQzo6TWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmKQordm9pZCBEYWVtb25DbGllbnQ6OmJyb2FkY2FzdENvbnNv
bGVNZXNzYWdlKEpTQzo6TWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBEYWVt
b25Db25uZWN0aW9uU2V0OjpzaW5nbGV0b24oKS5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShsZXZl
bCwgbWVzc2FnZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShsZXZlbCk7CisgICAgVU5VU0VE
X1BBUkFNKG1lc3NhZ2UpOworI2VuZGlmCiB9CiAKIGJvb2wgRGFlbW9uQ2xpZW50OjpmZWF0dXJl
RW5hYmxlZCgpIGNvbnN0CkBAIC00NCw4ICs1MSwxMSBAQCBib29sIERhZW1vbkNsaWVudDo6ZmVh
dHVyZUVuYWJsZWQoKSBjb25zdAogCiBib29sIERhZW1vbkNsaWVudDo6ZGVidWdNb2RlRW5hYmxl
ZCgpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICByZXR1cm4gRGFlbW9uQ29ubmVjdGlvblNldDo6c2luZ2xldG9uKCkuZGVidWdNb2RlRW5h
YmxlZCgpOworI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogfSAvLyBuYW1l
c3BhY2UgUENNCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFj
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaAppbmRleCBhNGE5NzQ0
ODk3MTFhYjQ4YTIyM2ZmYzQyZDgyMDRmMjYxOTM3MzdkLi42YjNjMDkyMTRiNWM1N2UxZDM3YmNi
YTcxOThhZTQ4OTc1NDJmOWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
ckludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgK
QEAgLTc2LDYgKzc2LDEwIEBAIHB1YmxpYzoKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2Nv
bFZlcnNpb25LZXkgeyAidmVyc2lvbiIgfTsKIGNvbnN0ZXhwciB1aW50NjRfdCBwcm90b2NvbFZl
cnNpb25WYWx1ZSB7IDEgfTsKIAorY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRGVidWdN
b2RlSXNFbmFibGVkS2V5IHsgImRlYnVnIG1vZGUgaXMgZW5hYmxlZCIgfTsKK2NvbnN0ZXhwciBj
b25zdCBjaGFyKiBwcm90b2NvbERlYnVnTWVzc2FnZUxldmVsS2V5IHsgImRlYnVnIG1lc3NhZ2Ug
bGV2ZWwiIH07Citjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xEZWJ1Z01lc3NhZ2VLZXkg
eyAiZGVidWcgbWVzc2FnZSIgfTsKKwogY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sTWVz
c2FnZVR5cGVLZXkgeyAibWVzc2FnZSB0eXBlIiB9OwogZW51bSBjbGFzcyBNZXNzYWdlVHlwZSA6
IHVpbnQ4X3QgewogICAgIFN0b3JlVW5hdHRyaWJ1dGVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclBy
b3h5LmNwcAppbmRleCBiZGE4NWM0OTZiNjBiMWViNjIwZWViNzE0NWFjODEwM2RmNGRlY2ExLi5m
OTI0MzZlNzczNTk5OGQwNjlmNmFmNmRlYTFhNTMyODEwOTYxNThhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlclByb3h5LmNwcApAQCAtNzIsOCArNzIsOCBAQCB2b2lkIE1hbmFnZXJQcm94eTo6c2Vu
ZE1lc3NhZ2VXaXRoUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXBseUFyZ3MuLi4pPiYm
CiAgICAgfSk7CiB9CiAKLU1hbmFnZXJQcm94eTo6TWFuYWdlclByb3h5KGNvbnN0IFN0cmluZyYg
bWFjaFNlcnZpY2VOYW1lKQotICAgIDogbV9jb25uZWN0aW9uKG1hY2hTZXJ2aWNlTmFtZS51dGY4
KCkpIHsgfQorTWFuYWdlclByb3h5OjpNYW5hZ2VyUHJveHkoY29uc3QgU3RyaW5nJiBtYWNoU2Vy
dmljZU5hbWUsIE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbikKKyAgICA6IG1fY29ubmVj
dGlvbihtYWNoU2VydmljZU5hbWUudXRmOCgpLCBuZXR3b3JrU2Vzc2lvbikgeyB9CiAKIHZvaWQg
TWFuYWdlclByb3h5OjpzdG9yZVVuYXR0cmlidXRlZChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCYmIHBjbSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaAppbmRleCAzNGIzNDcw
YWFlYmNjYzljNmY4NzQ0ZDIzYjRmMTBhMDExYzhhYzNkLi5hYWRlYzdjOTE0MTA2NWEyNWFlZTQy
MDc0NjdiMDYwNDA5NzA2OGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oCkBAIC0zMiwx
MiArMzIsMTQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIE5ldHdvcmtTZXNzaW9u
OworCiBuYW1lc3BhY2UgUENNIHsKIAogY2xhc3MgTWFuYWdlclByb3h5IDogcHVibGljIE1hbmFn
ZXJJbnRlcmZhY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IE1hbmFnZXJQcm94eShjb25zdCBTdHJpbmcmIG1hY2hTZXJ2aWNlTmFtZSk7CisgICAgTWFuYWdl
clByb3h5KGNvbnN0IFN0cmluZyYgbWFjaFNlcnZpY2VOYW1lLCBOZXR3b3JrU2Vzc2lvbiYpOwog
CiAgICAgdXNpbmcgQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gU3RyaW5nOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9j
b2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQppbmRl
eCAxYzZlNmJmZTczMTUzOWVhMTE4NDM3M2E4Y2U2YmE1NWUyYTljOWI5Li40YWY3M2JjNGZlODY2
NDg2NTY1NDNkNDRjNDc1Zjg0MWFlZTI5ZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0KQEAgLTMzLDggKzMzLDkgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBQQ00gewogCi1Db25uZWN0aW9uOjpDb25uZWN0aW9u
KENTdHJpbmcmJiBtYWNoU2VydmljZU5hbWUpCi0gICAgOiBtX21hY2hTZXJ2aWNlTmFtZShXVEZN
b3ZlKG1hY2hTZXJ2aWNlTmFtZSkpIHsgfQorQ29ubmVjdGlvbjo6Q29ubmVjdGlvbihDU3RyaW5n
JiYgbWFjaFNlcnZpY2VOYW1lLCBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24pCisgICAg
OiBtX21hY2hTZXJ2aWNlTmFtZShXVEZNb3ZlKG1hY2hTZXJ2aWNlTmFtZSkpCisgICAgLCBtX25l
dHdvcmtTZXNzaW9uKG1ha2VXZWFrUHRyKG5ldHdvcmtTZXNzaW9uKSkgeyB9CiAKIHZvaWQgQ29u
bmVjdGlvbjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpIGNvbnN0CiB7CkBAIC01MCw4
ICs1MSwzOSBAQCB2b2lkIENvbm5lY3Rpb246OmluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQo
KSBjb25zdAogICAgICAgICAgICAgLy8gRGFlbW9uIGNyYXNoZWQsIHdlIHdpbGwgbmVlZCB0byBt
YWtlIGEgbmV3IGNvbm5lY3Rpb24gdG8gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGRhZW1vbi4KICAg
ICAgICAgICAgIHdlYWtUaGlzLT5tX2Nvbm5lY3Rpb24gPSBudWxscHRyOwogICAgICAgICB9Cisg
ICAgICAgIHdlYWtUaGlzLT5jaGVja0ZvckRlYnVnTWVzc2FnZUJyb2FkY2FzdChldmVudCk7CiAg
ICAgfSk7CiAgICAgeHBjX2Nvbm5lY3Rpb25fYWN0aXZhdGUobV9jb25uZWN0aW9uLmdldCgpKTsK
KworICAgIHNlbmREZWJ1Z01vZGVJc0VuYWJsZWRNZXNzYWdlSWZOZWNlc3NhcnkoKTsKK30KKwor
dm9pZCBDb25uZWN0aW9uOjpzZW5kRGVidWdNb2RlSXNFbmFibGVkTWVzc2FnZUlmTmVjZXNzYXJ5
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9jb25uZWN0aW9uKTsKKyAgICBpZiAoIW1fbmV0d29y
a1Nlc3Npb24KKyAgICAgICAgfHwgbV9uZXR3b3JrU2Vzc2lvbi0+c2Vzc2lvbklEKCkuaXNFcGhl
bWVyYWwoKQorICAgICAgICB8fCAhbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9j
cmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIGFkZFZlcnNpb25Ub0RpY3Rpb25hcnko
ZGljdGlvbmFyeS5nZXQoKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X2Jvb2woZGljdGlvbmFy
eS5nZXQoKSwgcHJvdG9jb2xEZWJ1Z01vZGVJc0VuYWJsZWRLZXksIHRydWUpOworICAgIHhwY19j
b25uZWN0aW9uX3NlbmRfbWVzc2FnZShtX2Nvbm5lY3Rpb24uZ2V0KCksIGRpY3Rpb25hcnkuZ2V0
KCkpOworfQorCit2b2lkIENvbm5lY3Rpb246OmNoZWNrRm9yRGVidWdNZXNzYWdlQnJvYWRjYXN0
KHhwY19vYmplY3RfdCByZXF1ZXN0KSBjb25zdAoreworICAgIGlmICh4cGNfZ2V0X3R5cGUocmVx
dWVzdCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnN0
IGNoYXIqIGRlYnVnTWVzc2FnZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcocmVxdWVzdCwg
cHJvdG9jb2xEZWJ1Z01lc3NhZ2VLZXkpOworICAgIGlmICghZGVidWdNZXNzYWdlKQorICAgICAg
ICByZXR1cm47CisgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBzdGF0aWNfY2FzdDxKU0M6Ok1lc3Nh
Z2VMZXZlbD4oeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBwcm90b2NvbERlYnVn
TWVzc2FnZUxldmVsS2V5KSk7CisgICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSBtX25ldHdvcmtT
ZXNzaW9uLmdldCgpOworICAgIGlmICghbmV0d29ya1Nlc3Npb24pCisgICAgICAgIHJldHVybjsK
KyAgICBtX25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmJyb2FkY2FzdENvbnNvbGVN
ZXNzYWdlKG1fbmV0d29ya1Nlc3Npb24tPnNlc3Npb25JRCgpLCBNZXNzYWdlU291cmNlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgbWVzc2FnZUxldmVsLCBTdHJpbmc6OmZyb21VVEY4KGRlYnVn
TWVzc2FnZSkpOwogfQogCiBzdGF0aWMgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiBkaWN0aW9u
YXJ5RnJvbU1lc3NhZ2UoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYg
bWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRp
ZXMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaAppbmRleCAwYzYy
MjdiNDc3MzRmZWZmMjg1MWU1MjMyZGVlMjgxMzM5MzdiNDAwLi42NzlhZjBhZDMzOGUxNzIzNDZi
NjJjMzI1MzUyYjgyMjY3ODE4ZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50WFBDVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxp
dGllcy5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2Ug
UENNIHsKIAordm9pZCBhZGRWZXJzaW9uVG9EaWN0aW9uYXJ5KHhwY19vYmplY3RfdCk7CiB2b2lk
IGFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGljdGlvbmFyeShWZWN0b3I8dWludDhfdD4m
JiwgeHBjX29iamVjdF90KTsKIAogfSAvLyBuYW1lc3BhY2UgUENNCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1By
aXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFhQQ1V0aWxpdGllcy5tbQppbmRleCBhNjMwMzFiNWMzNmI3MTI2MTgyMTcwNDNmZjk3
ZGZmOTQ3NGM1ZDJjLi45YWVmZDdhY2Q5YjFiY2ExYmRjYzUzZWU2OTE4MmM5ODNlYzRhMGE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29j
b2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0KQEAgLTMwLDEwICszMCwx
NSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFBDTSB7CiAKLXZvaWQgYWRkVmVy
c2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KFZlY3Rvcjx1aW50OF90PiYmIG1lc3Nh
Z2UsIHhwY19vYmplY3RfdCBkaWN0aW9uYXJ5KQordm9pZCBhZGRWZXJzaW9uVG9EaWN0aW9uYXJ5
KHhwY19vYmplY3RfdCBkaWN0aW9uYXJ5KQogewogICAgIEFTU0VSVCh4cGNfZ2V0X3R5cGUoZGlj
dGlvbmFyeSkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSk7CiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0
X3VpbnQ2NChkaWN0aW9uYXJ5LCBQQ006OnByb3RvY29sVmVyc2lvbktleSwgUENNOjpwcm90b2Nv
bFZlcnNpb25WYWx1ZSk7Cit9CisKK3ZvaWQgYWRkVmVyc2lvbkFuZEVuY29kZWRNZXNzYWdlVG9E
aWN0aW9uYXJ5KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIHhwY19vYmplY3RfdCBkaWN0aW9u
YXJ5KQoreworICAgIGFkZFZlcnNpb25Ub0RpY3Rpb25hcnkoZGljdGlvbmFyeSk7CiAKICAgICBh
dXRvIGJ1ZmZlclNpemUgPSBtZXNzYWdlLnNpemUoKTsKICAgICBhdXRvIHJhd1BvaW50ZXIgPSBt
ZXNzYWdlLnJlbGVhc2VCdWZmZXIoKS5sZWFrUHRyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25Db25u
ZWN0aW9uU2V0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0Nv
Y29hL0RhZW1vbi9QQ01EYWVtb25Db25uZWN0aW9uU2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI0NGE0YWQ2
Yjg5ZjcwZGNjMjdjMzk3ZGQ2MWE2MmI1MDkyZTVjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1v
bkNvbm5lY3Rpb25TZXQuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKworbmFtZXNwYWNlIEpTQyB7
CitlbnVtIGNsYXNzIE1lc3NhZ2VMZXZlbCA6IHVpbnQ4X3Q7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworbmFtZXNwYWNlIFBDTSB7CisKK2NsYXNzIERhZW1vbkNvbm5lY3Rpb25TZXQgeworcHVi
bGljOgorICAgIHN0YXRpYyBEYWVtb25Db25uZWN0aW9uU2V0JiBzaW5nbGV0b24oKTsKKyAgICAK
KyAgICB2b2lkIGFkZCh4cGNfY29ubmVjdGlvbl90KTsKKyAgICB2b2lkIHJlbW92ZSh4cGNfY29u
bmVjdGlvbl90KTsKKworICAgIHZvaWQgY29ubmVjdGVkTmV0d29ya1Byb2Nlc3NIYXNEZWJ1Z01v
ZGVFbmFibGVkKHhwY19jb25uZWN0aW9uX3QpOworICAgIGJvb2wgZGVidWdNb2RlRW5hYmxlZCgp
IGNvbnN0OworICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlTGV2
ZWwsIGNvbnN0IFN0cmluZyYpOworICAgIAorcHJpdmF0ZToKKyAgICBlbnVtIGNsYXNzIERlYnVn
TW9kZUVuYWJsZWQgOiBib29sIHsgTm8sIFllcyB9OworICAgIEhhc2hNYXA8UmV0YWluUHRyPHhw
Y19jb25uZWN0aW9uX3Q+LCBEZWJ1Z01vZGVFbmFibGVkPiBtX2Nvbm5lY3Rpb25zOworICAgIHNp
emVfdCBtX2Nvbm5lY3Rpb25zV2l0aERlYnVnTW9kZUVuYWJsZWQgeyAwIH07Cit9OworCit9IC8v
IG5hbWVzcGFjZSBQQ00KK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9u
Q29ubmVjdGlvblNldC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkNvbm5lY3Rpb25TZXQubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTE4
MDViOWU2ZDJhNDVhYjhmYTQxNjY4MGViMzYzNzZmOGJmZjJkMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BD
TURhZW1vbkNvbm5lY3Rpb25TZXQubW0KQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUENNRGFlbW9uQ29ubmVjdGlvblNldC5oIgorCisj
aW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCIKKyNpbXBv
cnQgPHd0Zi9PU09iamVjdFB0ci5oPgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CituYW1lc3BhY2UgUENNIHsKKworRGFlbW9uQ29ubmVjdGlvblNldCYgRGFl
bW9uQ29ubmVjdGlvblNldDo6c2luZ2xldG9uKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEYWVtb25Db25uZWN0aW9uU2V0PiBz
ZXQ7CisgICAgcmV0dXJuIHNldC5nZXQoKTsKK30KKyAgICAKK3ZvaWQgRGFlbW9uQ29ubmVjdGlv
blNldDo6YWRkKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1f
Y29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbikpOworICAgIG1fY29ubmVjdGlvbnMuc2V0
KGNvbm5lY3Rpb24sIERlYnVnTW9kZUVuYWJsZWQ6Ok5vKTsKK30KKwordm9pZCBEYWVtb25Db25u
ZWN0aW9uU2V0OjpyZW1vdmUoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQoreworICAgIEFT
U0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24pKTsKKyAgICBhdXRvIGhhZERl
YnVnTW9kZUVuYWJsZWQgPSBtX2Nvbm5lY3Rpb25zLnRha2UoY29ubmVjdGlvbik7CisgICAgaWYg
KGhhZERlYnVnTW9kZUVuYWJsZWQgPT0gRGVidWdNb2RlRW5hYmxlZDo6WWVzKSB7CisgICAgICAg
IEFTU0VSVChtX2Nvbm5lY3Rpb25zV2l0aERlYnVnTW9kZUVuYWJsZWQpOworICAgICAgICBtX2Nv
bm5lY3Rpb25zV2l0aERlYnVnTW9kZUVuYWJsZWQtLTsKKyAgICB9Cit9CisKK3ZvaWQgRGFlbW9u
Q29ubmVjdGlvblNldDo6Y29ubmVjdGVkTmV0d29ya1Byb2Nlc3NIYXNEZWJ1Z01vZGVFbmFibGVk
KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQobV9jb25uZWN0aW9u
cy5jb250YWlucyhjb25uZWN0aW9uKSk7CisgICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuZ2V0KGNv
bm5lY3Rpb24pID09IERlYnVnTW9kZUVuYWJsZWQ6Ok5vKTsKKyAgICBtX2Nvbm5lY3Rpb25zLnNl
dChjb25uZWN0aW9uLCBEZWJ1Z01vZGVFbmFibGVkOjpZZXMpOworICAgIG1fY29ubmVjdGlvbnNX
aXRoRGVidWdNb2RlRW5hYmxlZCsrOworfQorCitib29sIERhZW1vbkNvbm5lY3Rpb25TZXQ6OmRl
YnVnTW9kZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiAhIW1fY29ubmVjdGlvbnNXaXRo
RGVidWdNb2RlRW5hYmxlZDsKK30KKwordm9pZCBEYWVtb25Db25uZWN0aW9uU2V0Ojpicm9hZGNh
c3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE9TT2JqZWN0KHhw
Y19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBjX2RpY3Rp
b25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCBwcm90b2NvbERlYnVnTWVzc2FnZUxl
dmVsS2V5LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obWVzc2FnZUxldmVsKSk7CisgICAgeHBjX2Rp
Y3Rpb25hcnlfc2V0X3N0cmluZyhkaWN0aW9uYXJ5LmdldCgpLCBwcm90b2NvbERlYnVnTWVzc2Fn
ZUtleSwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICBmb3IgKGF1dG8mIGNvbm5lY3Rpb24g
OiBtX2Nvbm5lY3Rpb25zLmtleXMoKSkKKyAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNz
YWdlKGNvbm5lY3Rpb24uZ2V0KCksIGRpY3Rpb25hcnkuZ2V0KCkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBQQ00KK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQ
b2ludC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2Ev
RGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQubW0KaW5kZXggNTQ4ZmY1MTY0YzZkNmYxOWJlNTFk
NGY0NjhkZDdiZjVkNDNhNDg2ZC4uYjg4OGE0ZDFmNjBkNDc0NWU1ZjYzNTUzMjc3YmMxNTkwMDBh
ZjU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGll
cy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBv
aW50Lm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlBD
TURhZW1vbkVudHJ5UG9pbnQuaCIKIAorI2ltcG9ydCAiUENNRGFlbW9uQ29ubmVjdGlvblNldC5o
IgogI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCiAjaW1wb3J0
ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaCIKICNpbXBvcnQgIlBy
aXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmgiCkBAIC00MywxMyArNDQsNiBAQAog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIEhhc2hTZXQ8UmV0YWluUHRyPHhwY19jb25u
ZWN0aW9uX3Q+PiYgcGVlcnMoKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UmV0YWluUHRyPHhwY19jb25uZWN0aW9u
X3Q+Pj4gc2V0OwotICAgIHJldHVybiBzZXQuZ2V0KCk7Ci19Ci0KIHN0YXRpYyBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFBDTTo6RW5jb2RlZE1lc3NhZ2UmJik+IHJlcGx5U2VuZGVyKFBDTTo6TWVz
c2FnZVR5cGUgbWVzc2FnZVR5cGUsIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4mJiByZXF1ZXN0
KQogewogICAgIGlmICghUENNOjptZXNzYWdlVHlwZVNlbmRzUmVwbHkobWVzc2FnZVR5cGUpKQpA
QCAtNjksNiArNjMsMTAgQEAgc3RhdGljIHZvaWQgY29ubmVjdGlvbkV2ZW50SGFuZGxlcih4cGNf
b2JqZWN0X3QgcmVxdWVzdCkKICAgICAgICAgTlNMb2coQCJyZWNlaXZlZCByZXF1ZXN0IHRoYXQg
d2FzIG5vdCB0aGUgY3VycmVudCBwcm90b2NvbCB2ZXJzaW9uIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CisgICAgaWYgKHhwY19kaWN0aW9uYXJ5X2dldF9ib29sKHJlcXVlc3QsIFBDTTo6cHJv
dG9jb2xEZWJ1Z01vZGVJc0VuYWJsZWRLZXkpKSB7CisgICAgICAgIFBDTTo6RGFlbW9uQ29ubmVj
dGlvblNldDo6c2luZ2xldG9uKCkuY29ubmVjdGVkTmV0d29ya1Byb2Nlc3NIYXNEZWJ1Z01vZGVF
bmFibGVkKHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlvbihyZXF1ZXN0KSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBhdXRvIG1lc3NhZ2VUeXBlIHsgc3RhdGljX2Nh
c3Q8UENNOjpNZXNzYWdlVHlwZT4oeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBQ
Q006OnByb3RvY29sTWVzc2FnZVR5cGVLZXkpKSB9OwogICAgIHNpemVfdCBkYXRhU2l6ZSB7IDAg
fTsKQEAgLTkxLDcgKzg5LDcgQEAgc3RhdGljIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2Vy
dmljZUNvbm5lY3Rpb25zKGNvbnN0IGNoYXIqIHNlcnZpY2VOYW1lKQogICAgICAgICAgICAgICAg
IE5TTG9nKEAiRmFpbGVkIHRvIHN0YXJ0IGxpc3RlbmluZyBmb3IgY29ubmVjdGlvbnMgdG8gbWFj
aCBzZXJ2aWNlICVzLCBsaWtlbHkgYmVjYXVzZSBpdCBpcyBub3QgcmVnaXN0ZXJlZCB3aXRoIGxh
dW5jaGQiLCBzZXJ2aWNlTmFtZSk7CiAgICAgICAgICAgICBpZiAoZXZlbnQgPT0gWFBDX0VSUk9S
X0NPTk5FQ1RJT05fSU5URVJSVVBURUQpIHsKICAgICAgICAgICAgICAgICBOU0xvZyhAInJlbW92
aW5nIHBlZXIgY29ubmVjdGlvbiAlcCIsIHBlZXIpOwotICAgICAgICAgICAgICAgIHBlZXJzKCku
cmVtb3ZlKHBlZXIpOworICAgICAgICAgICAgICAgIFBDTTo6RGFlbW9uQ29ubmVjdGlvblNldDo6
c2luZ2xldG9uKCkucmVtb3ZlKHBlZXIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGNvbm5lY3Rpb25FdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAt
MTAwLDcgKzk4LDcgQEAgc3RhdGljIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2VydmljZUNv
bm5lY3Rpb25zKGNvbnN0IGNoYXIqIHNlcnZpY2VOYW1lKQogICAgICAgICB4cGNfY29ubmVjdGlv
bl9hY3RpdmF0ZShwZWVyKTsKIAogICAgICAgICBOU0xvZyhAImFkZGluZyBwZWVyIGNvbm5lY3Rp
b24gJXAiLCBwZWVyKTsKLSAgICAgICAgcGVlcnMoKS5hZGQocGVlcik7CisgICAgICAgIFBDTTo6
RGFlbW9uQ29ubmVjdGlvblNldDo6c2luZ2xldG9uKCkuYWRkKHBlZXIpOwogICAgIH0pOwogICAg
IHhwY19jb25uZWN0aW9uX2FjdGl2YXRlKGxpc3RlbmVyLmdldCgpLmdldCgpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dAppbmRleCA1ZTZiNTJjMTIxMTQ2YzZkNTNhY2U2NjVkNjVjMjU2ZmRlNWU5
NTkzLi40MDk3MmI1MjhlZGNjNzQ1ODkwZWY4MjliNGE1MjY0MmY0MmY5ZDcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC0xOTMsNiArMTkzLDcgQEAgU2hhcmVkL0NvY29hL1dLTlNVUkxSZXF1
ZXN0Lm1tCiBTaGFyZWQvQ29jb2EvV0tPYmplY3QubW0KIFNoYXJlZC9Db2NvYS9XZWJQcmVmZXJl
bmNlc0RlZmF1bHRWYWx1ZXNDb2NvYS5tbQogCitTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9D
b2NvYS9EYWVtb24vUENNRGFlbW9uQ29ubmVjdGlvblNldC5tbQogU2hhcmVkL0VudHJ5UG9pbnRV
dGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQubW0KIAogU2hhcmVkL0Vu
dHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5t
bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZDFjNjk1MTViYjE4MmRmYTVhNTQwNzc0ODY0ZjczZWMyOThjNDFkOS4uNTZiZjQ5ZWZiNDg4
YWU3YjJkOTRiZDE0ZGQ3NTgxZDY0MTM3ZWJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NTM3LDYgKzQ1MzcsOCBAQAogCQk1QzVE
MjM4ODIyN0ExODkyMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVEMjM4OTIyN0ExODkyMDAwQjlCREEg
LyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0N1c3RvbUhlYWRlckZpZWxkcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzVEMjM4QTIyN0ExRDlCMDAwQjlCREEgLyogQVBJQ3VzdG9tSGVhZGVyRmllbGRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUN1c3RvbUhlYWRlckZpZWxkcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzYyODlBODI3MDY4RUMwMDBDRjVFQzYgLyog
UENNRGFlbW9uQ29ubmVjdGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQQ01EYWVtb25Db25uZWN0
aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNjI4OUE5MjcwNjhFQzAw
MENGNUVDNiAvKiBQQ01EYWVtb25Db25uZWN0aW9uU2V0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUENNRGFlbW9uQ29ubmVjdGlvblNldC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUM2MkZERjgxRUZDMjYzQzAwQ0UwNzJFIC8qIFdLVVJMU2NoZW1lVGFza1ByaXZhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tVUkxTY2hlbWVUYXNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzY2QTRCMzIzMjA5NjEzMDBFQTRENDQgLyogV0tIVFRQQ29va2llU3Rv
cmVSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tIVFRQQ29v
a2llU3RvcmVSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzY2QTRCNDIz
MjA5NjE0MDBFQTRENDQgLyogV0tIVFRQQ29va2llU3RvcmVSZWYuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tIVFRQQ29va2llU3RvcmVSZWYuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTk0ODAsNiArOTQ4Miw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTVDQUY3QUE1MjZGOTNBOTUwMDAzRjE5RSAvKiBBZEF0dHJpYnV0
aW9uRGFlbW9uLmMgKi8sCisJCQkJNUM2Mjg5QTgyNzA2OEVDMDAwQ0Y1RUM2IC8qIFBDTURhZW1v
bkNvbm5lY3Rpb25TZXQuaCAqLywKKwkJCQk1QzYyODlBOTI3MDY4RUMwMDBDRjVFQzYgLyogUENN
RGFlbW9uQ29ubmVjdGlvblNldC5tbSAqLywKIAkJCQk1Q0I5MzEwNDI2RTgzN0ZDMDAzMkIxQzAg
LyogUENNRGFlbW9uRW50cnlQb2ludC5oICovLAogCQkJCTVDQjkzMTA1MjZFODM3RkQwMDMyQjFD
MCAvKiBQQ01EYWVtb25FbnRyeVBvaW50Lm1tICovLAogCQkJKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440125</attachid>
            <date>2021-10-04 17:23:08 -0700</date>
            <delta_ts>2021-10-04 17:24:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231060-20211004172307.patch</filename>
            <type>text/plain</type>
            <size>61765</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE2NTcyNDhjYjJjMGVhMjZl
NjIzYWRmZmE3Y2UwMTIzYTYxODg0YTIuLjVlNWQ0NGVlM2Q4MTZlMzBmZjMxMjBjOTEzNWU1OWI3
MzQxNTNmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMjEtMTAtMDQgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
bWlzc2luZyBmdW5jdGlvbnMgaW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA2MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBk
ZWJ1ZyBtb2RlIGluIHRoZSBkYWVtb24gaWYgYW55IGNvbm5lY3RlZCBjbGllbnRzIGhhdmUgZGVi
dWcgbW9kZSBlbmFibGVkLgorICAgICAgICBCcm9hZGNhc3QgZGVidWcgbWVzc2FnZXMgdG8gYWxs
IGNsaWVudHMsIHdoaWNoIHdpbGwgdGhlbiBicm9hZGNhc3QgdGhlbSB0byBhbGwgd2ViIHByb2Nl
c3Nlcy4KKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IHRoYXQgdHVybnMgaXQgb24gdGhlbiBvZmYg
YW5kIGNoZWNrcyB0aGF0IHRoZSBkZWJ1ZyBtZXNzYWdlcyBtYWtlIGl0IGFsbCB0aGUgd2F5IHRv
IHRoZSBpbnNwZWN0b3IuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1hbmFnZXJPclByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNv
bm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjpDb25uZWN0aW9uVG9NYWNoU2VydmljZSk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U6OnNlbmQgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjpzZW5kV2l0aFJlcGx5
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpzZW5kIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UENNOjpDb25uZWN0aW9uOjpnZXQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGllbnQ6OmJyb2FkY2FzdENvbnNv
bGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGllbnQ6OmRlYnVnTW9k
ZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2V0RGVidWdNb2RlSXNFbmFi
bGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJ
bnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006Om1lc3NhZ2VUeXBlU2VuZHNSZXBs
eSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6aGFuZGxlUENNTWVzc2FnZVNldERlYnVnTW9kZUlz
RW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6ZGVjb2RlTWVzc2FnZUFuZFNlbmRUb01h
bmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6
Ok1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzZXRE
ZWJ1Z01vZGVJc0VuYWJsZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5Lmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uQ29jb2EubW06IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tLgorICAgICAgICAoV2Vi
S2l0OjpQQ006OkNvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjppbml0aWFsaXplQ29ubmVjdGlvbklm
TmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uVG9NYWNoU2Vy
dmljZTo6c2VuZERlYnVnTW9kZUlzRW5hYmxlZE1lc3NhZ2VJZk5lY2Vzc2FyeSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U6OmNoZWNrRm9yRGVi
dWdNZXNzYWdlQnJvYWRjYXN0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0
aW9uOjpzZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpzZW5k
V2l0aFJlcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uVG9NYWNo
U2VydmljZTo6c2VuZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvblRv
TWFjaFNlcnZpY2U6OnNlbmRXaXRoUmVwbHkgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9FbnRy
eVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25Db25uZWN0aW9uU2V0Lmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmguCisgICAgICAgICogU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkNvbm5lY3Rpb25T
ZXQubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNvbm5lY3Rpb25TZXQ6
OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGFlbW9uQ29ubmVjdGlvblNldDo6
YWRkKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25Db25uZWN0aW9uU2V0OjpyZW1vdmUp
OgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNvbm5lY3Rpb25TZXQ6OnNldENvbm5lY3Rl
ZE5ldHdvcmtQcm9jZXNzSGFzRGVidWdNb2RlRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6RGFlbW9uQ29ubmVjdGlvblNldDo6ZGVidWdNb2RlRW5hYmxlZCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGFlbW9uQ29ubmVjdGlvblNldDo6YnJvYWRjYXN0Q29uc29sZU1lc3Nh
Z2UpOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9Q
Q01EYWVtb25FbnRyeVBvaW50Lm1tOgorICAgICAgICAoV2ViS2l0Ojpjb25uZWN0aW9uRXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6c3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2VydmljZUNv
bm5lY3Rpb25zKToKKyAgICAgICAgKFdlYktpdDo6cGVlcnMpOiBEZWxldGVkLgorICAgICAgICAq
IFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkRm9yVGVzdGluZzpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0xMC0wNCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEVuYWJs
ZSBQQ00gZGVidWcgbW9kZSBwZXIgV2Vic2l0ZURhdGFTdG9yZSBpbnN0ZWFkIG9mIHByb2Nlc3Mt
Z2xvYmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwCmluZGV4IGNkNWJhZTIyNWVkMTZjM2M4MmVkOWIwNWI5NThkOTUxMzFlMDJiZjYuLmY5NTdm
YmFmYjRjNjUyODBjY2Y2NTQ3NjI4ZjUyZDliODViNGVhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0
YXRpYyBTdHJpbmcgcGNtU3RvcmVEaXJlY3RvcnkoY29uc3QgTmV0d29ya1Nlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFN0cmluZyYgcmVzCiBzdGF0aWMgVW5pcXVlUmVmPFBDTTo6TWFuYWdlckludGVy
ZmFjZT4gbWFuYWdlck9yUHJveHkoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBOZXR3
b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGlmICghcGFyYW1ldGVycy5wY21NYWNoU2Vy
dmljZU5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxQQ006Ok1h
bmFnZXJQcm94eT4ocGFyYW1ldGVycy5wY21NYWNoU2VydmljZU5hbWUpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJQcm94eT4ocGFyYW1ldGVycy5wY21NYWNoU2Vy
dmljZU5hbWUsIG5ldHdvcmtTZXNzaW9uKTsKICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGllbnRJbXBs
PihuZXR3b3JrU2Vzc2lvbiwgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9yeShuZXR3
b3JrU2Vzc2lvbiwgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5k
aXJlY3RvcnksIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSk7CiB9CiAKQEAgLTQyNyw5ICs0
MjcsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERl
YnVnTW9kZShib29sIGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkID0gZW5hYmxlZDsKLQotICAgIGF1dG8gbWVz
c2FnZSA9IGVuYWJsZWQgPyAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFR1cm5lZCBEZWJ1
ZyBNb2RlIG9uLiJfcyA6ICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHVybmVkIERlYnVn
IE1vZGUgb2ZmLiJfczsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5icm9hZGNhc3RDb25zb2xlTWVz
c2FnZShzZXNzaW9uSUQoKSwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
IE1lc3NhZ2VMZXZlbDo6SW5mbywgbWVzc2FnZSk7CisgICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC0+c2V0RGVidWdNb2RlSXNFbmFibGVkKGVuYWJsZWQpOwogfQogCiB2b2lkIE5ldHdvcmtT
ZXNzaW9uOjpmaXJlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVz
dGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggNjUwMjlhNjgzMmJkZWRhMWZk
MGE0ZTFhM2ZhYTljNzFlY2UzNWNlNi4uOWU4ZjViYjE4M2MwMWQ2OTA0YWUwZWVlMWZjNjlhNDNh
ZWYxZWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmNwcApAQCAtMzIsMTkgKzMyLDE4IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgUENNIHsKIAotI2lmICFQTEFURk9STShD
T0NPQSkKK0Nvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjpDb25uZWN0aW9uVG9NYWNoU2VydmljZShD
U3RyaW5nJiYgbWFjaFNlcnZpY2VOYW1lLCBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24p
CisgICAgOiBtX21hY2hTZXJ2aWNlTmFtZShXVEZNb3ZlKG1hY2hTZXJ2aWNlTmFtZSkpCisgICAg
LCBtX25ldHdvcmtTZXNzaW9uKG1ha2VXZWFrUHRyKG5ldHdvcmtTZXNzaW9uKSkgeyB9CiAKLUNv
bm5lY3Rpb246OkNvbm5lY3Rpb24oQ1N0cmluZyYmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19CisjaWYgIVBMQVRGT1JNKENPQ09BKQogCi12b2lkIENvbm5lY3Rpb246OnNlbmQoTWVzc2Fn
ZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYpIGNvbnN0Cit2b2lkIENvbm5lY3Rpb25Ub01hY2hTZXJ2
aWNlOjpzZW5kKE1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmKSBjb25zdAogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseShNZXNz
YWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVk
TWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3ZvaWQgQ29ubmVjdGlvblRv
TWFjaFNlcnZpY2U6OnNlbmRXaXRoUmVwbHkoTWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgKaW5kZXggNDQyZjQ4NDI1ZDY0OWQ5ZGQ2
MzZmNzM3NmY2ZGM4MzgxMzgzZmIyOS4uN2U5ZWZiYWU5N2EzYzExNzgwODA1Y2QwM2M0MDY5M2Qw
NzAzY2ZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oCkBAIC0yOCwxNCArMjgsMTcgQEAKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJ
Lmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIE5ldHdvcmtTZXNzaW9u
OworCiBuYW1lc3BhY2UgUENNIHsKIAogZW51bSBjbGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3Q7
CkBAIC00MywxOCArNDYsMzQgQEAgdXNpbmcgRW5jb2RlZE1lc3NhZ2UgPSBWZWN0b3I8dWludDhf
dD47CiAKIGNsYXNzIENvbm5lY3Rpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q29ubmVjdGlv
bj4gewogcHVibGljOgotICAgIGV4cGxpY2l0IENvbm5lY3Rpb24oQ1N0cmluZyYmIG1hY2hTZXJ2
aWNlTmFtZSk7CisgICAgQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBleHBsaWNpdCBDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikK
KyAgICAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikgeyB9CisgICAgeHBjX2Nvbm5lY3Rp
b25fdCBnZXQoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KKyAgICB2b2lk
IHNlbmQoeHBjX29iamVjdF90KSBjb25zdDsKKyAgICB2b2lkIHNlbmRXaXRoUmVwbHkoeHBjX29i
amVjdF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHhwY19vYmplY3RfdCk+JiYpIGNvbnN0Owor
cHJvdGVjdGVkOgorICAgIG11dGFibGUgUmV0YWluUHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29u
bmVjdGlvbjsKKyNlbmRpZgorfTsKKworY2xhc3MgQ29ubmVjdGlvblRvTWFjaFNlcnZpY2UgOiBw
dWJsaWMgQ29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ29ubmVjdGlvblRvTWFj
aFNlcnZpY2UoQ1N0cmluZyYmIG1hY2hTZXJ2aWNlTmFtZSwgTmV0d29ya1Nlc3Npb24mKTsKIAog
ICAgIHZvaWQgc2VuZChNZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJikgY29uc3Q7CiAgICAg
dm9pZCBzZW5kV2l0aFJlcGx5KE1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYpPiYmKSBjb25zdDsKIAogcHJpdmF0ZToK
LSNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVk
ZWQoKSBjb25zdDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGNoZWNrRm9yRGVidWdN
ZXNzYWdlQnJvYWRjYXN0KHhwY19vYmplY3RfdCkgY29uc3Q7CisjZW5kaWYKKyAgICB2b2lkIHNl
bmREZWJ1Z01vZGVJc0VuYWJsZWRNZXNzYWdlSWZOZWNlc3NhcnkoKSBjb25zdDsKIAogICAgIGNv
bnN0IENTdHJpbmcgbV9tYWNoU2VydmljZU5hbWU7Ci0gICAgbXV0YWJsZSBPU09iamVjdFB0cjx4
cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5lY3Rpb247Ci0jZW5kaWYKKyAgICBXZWFrUHRyPE5ldHdv
cmtTZXNzaW9uPiBtX25ldHdvcmtTZXNzaW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgUENNCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwCmluZGV4IDM3M2U1MWJlNzBmMGM2ZTkyMzQ4NGNi
NmZkZGU1OTU4YmYyZWI1OGQuLmFkYTUyNTAyMGFiYTFmYWJlZjExMjU0NGM0ZWExMWEzZDZkZDJm
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwCkBAIC0yNiwxNSArMjYsMjIgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
ZW1vbkNsaWVudC5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2lm
IFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlBDTURhZW1vbkNvbm5lY3Rpb25TZXQuaCIKKyNl
bmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFBDTSB7CiAKLXZvaWQgRGFl
bW9uQ2xpZW50Ojpicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJikKK3ZvaWQgRGFlbW9uQ2xpZW50Ojpicm9hZGNhc3RDb25zb2xlTWVzc2FnZShK
U0M6Ok1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgRGFlbW9uQ29ubmVjdGlv
blNldDo6c2luZ2xldG9uKCkuYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobGV2ZWwsIG1lc3NhZ2Up
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTShtZXNz
YWdlKTsKKyNlbmRpZgogfQogCiBib29sIERhZW1vbkNsaWVudDo6ZmVhdHVyZUVuYWJsZWQoKSBj
b25zdApAQCAtNDQsOCArNTEsMTEgQEAgYm9vbCBEYWVtb25DbGllbnQ6OmZlYXR1cmVFbmFibGVk
KCkgY29uc3QKIAogYm9vbCBEYWVtb25DbGllbnQ6OmRlYnVnTW9kZUVuYWJsZWQoKSBjb25zdAog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJu
IERhZW1vbkNvbm5lY3Rpb25TZXQ6OnNpbmdsZXRvbigpLmRlYnVnTW9kZUVuYWJsZWQoKTsKKyNl
bHNlCiAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBDTQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXIuY3BwCmluZGV4IGY0NTEzYTE3ODQ4MWFmZDAxYzRkMjM4YTA0ZDJmZDdk
NGQ2NDk2NGUuLmI4MDdmYmZkMDgzZjZhZjM3ZGY3MzU4ODQxYTlmYTNjOGIwYTNhN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5jcHAKQEAgLTIyNyw2ICsyMjcsMTYgQEAgdm9pZCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI6Om1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdh
Y3lTdG8KICAgICBzdG9yZSgpLmluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUo
bWVhc3VyZW1lbnQpLCB0eXBlLCBbXSB7IH0pOwogfQogCit2b2lkIFByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlcjo6c2V0RGVidWdNb2RlSXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAg
ICAvLyBUaGlzIGRvZXNuJ3QgbWFpbnRhaW4gc3RhdGUsIGl0IGp1c3QgYnJvYWRjYXN0cyBhIG1l
c3NhZ2Ugd2hlbiBkZWJ1ZyBtb2RlIGVuYWJsZWQgY2hhbmdlcy4KKyAgICAvLyBUaGUgc3RhdGUg
aXMgZWl0aGVyIHN0b3JlZCBpbiBOZXR3b3JrU2Vzc2lvbiB3aGVuIG5vdCB1c2luZyB0aGUgZGFl
bW9uCisgICAgLy8gb3IgaW4gRGFlbW9uQ29ubmVjdGlvblNldCBwZXIgY29ubmVjdGlvbiB3aGVu
IHVzaW5nIHRoZSBkYWVtb24gdG8gbm90IGhhdmUgZ2xvYmFsIHN0YXRlLgorCisgICAgYXV0byBt
ZXNzYWdlID0gZW5hYmxlZCA/ICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHVybmVkIERl
YnVnIE1vZGUgb24uIl9zIDogIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUdXJuZWQgRGVi
dWcgTW9kZSBvZmYuIl9zOworICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShN
ZXNzYWdlTGV2ZWw6OkluZm8sIG1lc3NhZ2UpOworfQorCiB2b2lkIFByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlcjo6aGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYm
IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
VVJMLCBjb25zdCBBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXImIGFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIu
aAppbmRleCBiZWQwYTM2Y2ZjODBjNDkxNWJmMjY5MWUxOWJiNmRmNWNiODNkZGE5Li4xOGUzNGNk
OTY2ZTU1Mjg0ZTQ3Y2I5OTZkNDY2NGY3MmMzY2Y3MzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKQEAg
LTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFs
OwogICAgIHZvaWQgbWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3Jh
Z2UoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGUpIGZpbmFsOworICAgIHZvaWQgc2V0RGVidWdNb2RlSXNFbmFibGVkKGJvb2wp
IGZpbmFsOwogCiAgICAgdm9pZCB0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcpPiYmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldE92ZXJyaWRlVGltZXJG
b3JUZXN0aW5nKGJvb2wgdmFsdWUpIGZpbmFsIHsgbV9pc1J1bm5pbmdUZXN0ID0gdmFsdWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNwcAppbmRleCBlNDIyOTJmZGNhNjVh
NDFlOTc5ZTJiZDE2ZTFhMTdjYTk2Y2UyMjkwLi5kMGRjMDVkMjkzYWQ2MjRlMjJjYWJiZWVhZjJk
MDQxNDg0NzExNmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVy
ZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVy
LmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmgiCiAjaW5jbHVk
ZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgiCisjaW5jbHVkZSAiUENNRGFlbW9u
Q29ubmVjdGlvblNldC5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY5LDYgKzcwLDEwIEBAIEZVTkNUSU9OKG1pZ3JhdGVQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKQogQVJHVU1FTlRTKFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0
aW9uVHlwZSkKIEVORAogCitGVU5DVElPTihzZXREZWJ1Z01vZGVJc0VuYWJsZWQpCitBUkdVTUVO
VFMoYm9vbCkKK0VORAorCiBGVU5DVElPTih0b1N0cmluZ0ZvclRlc3RpbmcpCiBBUkdVTUVOVFMo
KQogUkVQTFkoU3RyaW5nKQpAQCAtMTQ3LDYgKzE1Miw3IEBAIGJvb2wgbWVzc2FnZVR5cGVTZW5k
c1JlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlKQogICAgIHN3aXRjaCAobWVzc2FnZVR5cGUp
IHsKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpIYW5kbGVBdHRyaWJ1dGlvbjoKICAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFn
ZToKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXREZWJ1Z01vZGVJc0VuYWJsZWQ6CiAgICAgY2Fz
ZSBNZXNzYWdlVHlwZTo6U2V0T3ZlcnJpZGVUaW1lckZvclRlc3Rpbmc6CiAgICAgY2FzZSBNZXNz
YWdlVHlwZTo6U2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nOgogICAgIGNhc2UgTWVzc2Fn
ZVR5cGU6OlNldFRva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZzoKQEAgLTIwMCw2ICsyMDYsMjEg
QEAgdm9pZCBoYW5kbGVQQ01NZXNzYWdlKFBDTTo6RW5jb2RlZE1lc3NhZ2UmJiBlbmNvZGVkTWVz
c2FnZSkKICAgICBJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCAm
ZGFlbW9uTWFuYWdlcigpLCBJbmZvOjpNZW1iZXJGdW5jdGlvbik7CiB9CiAKK3N0YXRpYyB2b2lk
IGhhbmRsZVBDTU1lc3NhZ2VTZXREZWJ1Z01vZGVJc0VuYWJsZWQoY29uc3QgQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgUENNOjpFbmNvZGVkTWVzc2FnZSYmIGVuY29kZWRNZXNzYWdlKQoreworICAg
IFBDTTo6RGVjb2RlciBkZWNvZGVyKFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGVuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBlbmFibGVkOworICAgIGlm
IChVTkxJS0VMWSghZW5hYmxlZCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIGNvbm5l
Y3Rpb25TZXQgPSBEYWVtb25Db25uZWN0aW9uU2V0OjpzaW5nbGV0b24oKTsKKyAgICBib29sIGRl
YnVnTW9kZVdhc0VuYWJsZWQgPSBjb25uZWN0aW9uU2V0LmRlYnVnTW9kZUVuYWJsZWQoKTsKKyAg
ICBjb25uZWN0aW9uU2V0LnNldENvbm5lY3RlZE5ldHdvcmtQcm9jZXNzSGFzRGVidWdNb2RlRW5h
YmxlZChjb25uZWN0aW9uLCAqZW5hYmxlZCk7CisgICAgaWYgKGRlYnVnTW9kZVdhc0VuYWJsZWQg
IT0gY29ubmVjdGlvblNldC5kZWJ1Z01vZGVFbmFibGVkKCkpCisgICAgICAgIGRhZW1vbk1hbmFn
ZXIoKS5zZXREZWJ1Z01vZGVJc0VuYWJsZWQoKmVuYWJsZWQpOworfQorCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBJbmZvPgogdm9pZCBoYW5kbGVQQ01NZXNzYWdlV2l0aFJlcGx5KFBDTTo6RW5jb2RlZE1l
c3NhZ2UmJiBlbmNvZGVkTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQQ006OkVuY29k
ZWRNZXNzYWdlJiYpPiYmIHJlcGx5U2VuZGVyKQogewpAQCAtMjE3LDcgKzIzOCw3IEBAIHZvaWQg
aGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseShQQ006OkVuY29kZWRNZXNzYWdlJiYgZW5jb2RlZE1l
c3NhZ2UsIENvbXBsZXRpb25ICiAgICAgSVBDOjpjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92ZSgq
YXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksICZkYWVtb25NYW5hZ2VyKCks
IEluZm86Ok1lbWJlckZ1bmN0aW9uKTsKIH0KIAotdm9pZCBkZWNvZGVNZXNzYWdlQW5kU2VuZFRv
TWFuYWdlcihNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZW5jb2Rl
ZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIHJl
cGx5U2VuZGVyKQordm9pZCBkZWNvZGVNZXNzYWdlQW5kU2VuZFRvTWFuYWdlcihjb25zdCBDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgVmVjdG9yPHVpbnQ4
X3Q+JiYgZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4
X3Q+JiYpPiYmIHJlcGx5U2VuZGVyKQogewogICAgIEFTU0VSVChtZXNzYWdlVHlwZVNlbmRzUmVw
bHkobWVzc2FnZVR5cGUpID09ICEhcmVwbHlTZW5kZXIpOwogICAgIHN3aXRjaCAobWVzc2FnZVR5
cGUpIHsKQEAgLTIzMyw2ICsyNTQsOSBAQCB2b2lkIGRlY29kZU1lc3NhZ2VBbmRTZW5kVG9NYW5h
Z2VyKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBWZWN0b3I8dWludDhfdD4mJiBlbgogICAgIGNh
c2UgUENNOjpNZXNzYWdlVHlwZTo6Q2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbjoKICAgICAgICAg
aGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6Y2xlYXJGb3JSZWdpc3RyYWJs
ZURvbWFpbj4oV1RGTW92ZShlbmNvZGVkTWVzc2FnZSksIFdURk1vdmUocmVwbHlTZW5kZXIpKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpTZXREZWJ1Z01vZGVJ
c0VuYWJsZWQ6CisgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2VTZXREZWJ1Z01vZGVJc0VuYWJsZWQo
Y29ubmVjdGlvbiwgV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6Ok1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZy
b21MZWdhY3lTdG9yYWdlOgogICAgICAgICBoYW5kbGVQQ01NZXNzYWdlPE1lc3NhZ2VJbmZvOjpt
aWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZT4oV1RGTW92ZShl
bmNvZGVkTWVzc2FnZSkpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcklu
dGVyZmFjZS5oCmluZGV4IGRkZmVkM2ViN2NjMWU0NjA3YTQ4MzVmZTQ3ZWJjNWZhYzBkOWFjMmUu
LmNmODBjNDQyOTY5MmU5MDUyNTU2M2Y3YmI1MjA0OWEyNGIwYzRjOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXJJbnRlcmZhY2UuaApAQCAtNDEsNiArNDEsOCBAQCBjbGFzcyBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI7CiAKIG5hbWVzcGFjZSBQQ00gewogCitjbGFzcyBDb25uZWN0
aW9uOworCiBjbGFzcyBNYW5hZ2VySW50ZXJmYWNlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5N
YW5hZ2VySW50ZXJmYWNlKCkgeyB9OwpAQCAtNTcsNiArNTksNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlKFByaXZhdGVD
bGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBl
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVnTW9kZUlzRW5hYmxlZChib29sKSA9IDA7
CiAKICAgICB2aXJ0dWFsIHZvaWQgdG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nKT4mJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRPdmVycmlk
ZVRpbWVyRm9yVGVzdGluZyhib29sIHZhbHVlKSA9IDA7CkBAIC03NSw2ICs3OCw5IEBAIHB1Ymxp
YzoKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbFZlcnNpb25LZXkgeyAidmVyc2lvbiIg
fTsKIGNvbnN0ZXhwciB1aW50NjRfdCBwcm90b2NvbFZlcnNpb25WYWx1ZSB7IDEgfTsKIAorY29u
c3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRGVidWdNZXNzYWdlTGV2ZWxLZXkgeyAiZGVidWcg
bWVzc2FnZSBsZXZlbCIgfTsKK2NvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbERlYnVnTWVz
c2FnZUtleSB7ICJkZWJ1ZyBtZXNzYWdlIiB9OworCiBjb25zdGV4cHIgY29uc3QgY2hhciogcHJv
dG9jb2xNZXNzYWdlVHlwZUtleSB7ICJtZXNzYWdlIHR5cGUiIH07CiBlbnVtIGNsYXNzIE1lc3Nh
Z2VUeXBlIDogdWludDhfdCB7CiAgICAgU3RvcmVVbmF0dHJpYnV0ZWQsCkBAIC04Miw2ICs4OCw3
IEBAIGVudW0gY2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBDbGVhciwKICAgICBD
bGVhckZvclJlZ2lzdHJhYmxlRG9tYWluLAogICAgIE1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEZyb21MZWdhY3lTdG9yYWdlLAorICAgIFNldERlYnVnTW9kZUlzRW5hYmxlZCwKICAgICBU
b1N0cmluZ0ZvclRlc3RpbmcsCiAgICAgU2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcsCiAgICAg
U2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nLApAQCAtOTksNyArMTA2LDcgQEAgZW51bSBj
bGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3QgewogY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3Rv
Y29sRW5jb2RlZE1lc3NhZ2VLZXkgeyAiZW5jb2RlZCBtZXNzYWdlIiB9OwogdXNpbmcgRW5jb2Rl
ZE1lc3NhZ2UgPSBWZWN0b3I8dWludDhfdD47CiAKLXZvaWQgZGVjb2RlTWVzc2FnZUFuZFNlbmRU
b01hbmFnZXIoTWVzc2FnZVR5cGUsIFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmKTsKK3ZvaWQgZGVjb2RlTWVzc2Fn
ZUFuZFNlbmRUb01hbmFnZXIoY29uc3QgQ29ubmVjdGlvbiYsIE1lc3NhZ2VUeXBlLCBWZWN0b3I8
dWludDhfdD4mJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90
PiYmKT4mJik7CiBib29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSk7CiAKIHZv
aWQgaW5pdGlhbGl6ZVBDTVN0b3JhZ2VJbkRpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKQEAgLTEx
OCw2ICsxMjUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYktpdDo6UENNOjpN
ZXNzYWdlVHlwZT4gewogICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OkNsZWFyLAog
ICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OkNsZWFyRm9yUmVnaXN0cmFibGVEb21h
aW4sCiAgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6TWlncmF0ZVByaXZhdGVDbGlj
a01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UsCisgICAgICAgIFdlYktpdDo6UENNOjpNZXNz
YWdlVHlwZTo6U2V0RGVidWdNb2RlSXNFbmFibGVkLAogICAgICAgICBXZWJLaXQ6OlBDTTo6TWVz
c2FnZVR5cGU6OlRvU3RyaW5nRm9yVGVzdGluZywKICAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3Nh
Z2VUeXBlOjpTZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZywKICAgICAgICAgV2ViS2l0OjpQQ006
Ok1lc3NhZ2VUeXBlOjpTZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDQzMmYyNWE2ODcwYTc1MjJjMDAxNGQ1ZTdlNDA4MDg3
YTE5NGQ0MWQuLmExODc3ODRkODZmYTEzOTAyMDYzOTFhZmRkMDk3ZDIwYjdjMWZmYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuY3BwCkBAIC03Miw4ICs3Miw4IEBAIHZvaWQgTWFuYWdl
clByb3h5OjpzZW5kTWVzc2FnZVdpdGhSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcGx5
QXJncy4uLik+JiYKICAgICB9KTsKIH0KIAotTWFuYWdlclByb3h5OjpNYW5hZ2VyUHJveHkoY29u
c3QgU3RyaW5nJiBtYWNoU2VydmljZU5hbWUpCi0gICAgOiBtX2Nvbm5lY3Rpb24obWFjaFNlcnZp
Y2VOYW1lLnV0ZjgoKSkgeyB9CitNYW5hZ2VyUHJveHk6Ok1hbmFnZXJQcm94eShjb25zdCBTdHJp
bmcmIG1hY2hTZXJ2aWNlTmFtZSwgTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uKQorICAg
IDogbV9jb25uZWN0aW9uKG1hY2hTZXJ2aWNlTmFtZS51dGY4KCksIG5ldHdvcmtTZXNzaW9uKSB7
IH0KIAogdm9pZCBNYW5hZ2VyUHJveHk6OnN0b3JlVW5hdHRyaWJ1dGVkKFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50JiYgcGNtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CkBAIC05NSw2ICs5NSwxMSBAQCB2b2lkIE1hbmFnZXJQcm94eTo6
Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYgZAogICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VUeXBlOjpDbGVhckZvclJlZ2lz
dHJhYmxlRG9tYWluPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZG9tYWluKTsKIH0KIAor
dm9pZCBNYW5hZ2VyUHJveHk6OnNldERlYnVnTW9kZUlzRW5hYmxlZChib29sIGVuYWJsZWQpCit7
CisgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6OlNldERlYnVnTW9kZUlzRW5hYmxlZD4oZW5h
YmxlZCk7Cit9CisKIHZvaWQgTWFuYWdlclByb3h5OjptaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRGcm9tTGVnYWN5U3RvcmFnZShXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYm
IHBjbSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgdHlwZSkKIHsKICAg
ICBzZW5kTWVzc2FnZTxNZXNzYWdlVHlwZTo6TWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50
RnJvbUxlZ2FjeVN0b3JhZ2U+KHBjbSwgdHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmgK
aW5kZXggZjRkZGMxY2NiMWQ0YzFiYzdiYTA2NDI2Yzk0ZjViYmNhNjA0NGMxNi4uZjkxMTYxNWI1
MmM5ZThhMjgwZDI3YTE5ZTZmNzMyYzg3ZDRjMTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJv
eHkuaApAQCAtMzIsMTIgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBO
ZXR3b3JrU2Vzc2lvbjsKKwogbmFtZXNwYWNlIFBDTSB7CiAKIGNsYXNzIE1hbmFnZXJQcm94eSA6
IHB1YmxpYyBNYW5hZ2VySW50ZXJmYWNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKLSAgICBNYW5hZ2VyUHJveHkoY29uc3QgU3RyaW5nJiBtYWNoU2VydmljZU5hbWUp
OworICAgIE1hbmFnZXJQcm94eShjb25zdCBTdHJpbmcmIG1hY2hTZXJ2aWNlTmFtZSwgTmV0d29y
a1Nlc3Npb24mKTsKIAogICAgIHVzaW5nIEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IFN0
cmluZzsKIApAQCAtNDYsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJGb3JSZWdpc3RyYWJs
ZURvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBtaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRGcm9tTGVnYWN5U3RvcmFnZShXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYm
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgZmluYWw7CisgICAgdm9p
ZCBzZXREZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCkgZmluYWw7CiAKICAgICB2b2lkIHRvU3RyaW5n
Rm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgc2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCkgZmluYWw7CkBAIC02
Niw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8TWVzc2FnZVR5cGUgbWVzc2FnZVR5
cGUsIHR5cGVuYW1lLi4uIEFyZ3MsIHR5cGVuYW1lLi4uIFJlcGx5QXJncz4KICAgICB2b2lkIHNl
bmRNZXNzYWdlV2l0aFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVwbHlBcmdzLi4uKT4m
JiwgQXJncyYmLi4uKSBjb25zdDsKIAotICAgIENvbm5lY3Rpb24gbV9jb25uZWN0aW9uOworICAg
IENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlIG1fY29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFBDTQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb25D
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uQ29jb2EubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzM1NWJmMjAzMDEwNTNhZjEzYWQ5MjBjODg3ZTlmMzA3YmJhNWRiOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uQ29jb2EubW0K
QEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oIgorCisjaW1wb3J0ICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEVuY29kZXIuaCIKKyNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1
cmVtZW50WFBDVXRpbGl0aWVzLmgiCisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK25hbWVzcGFjZSBQQ00geworCit2b2lkIENvbm5lY3Rpb25U
b01hY2hTZXJ2aWNlOjppbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCkgY29uc3QKK3sKKyAg
ICBpZiAobV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisgICAgbV9jb25uZWN0aW9uID0g
YWRvcHROUyh4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9zZXJ2aWNlKG1fbWFjaFNlcnZpY2VO
YW1lLmRhdGEoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgMCkpOworICAgIHhwY19jb25u
ZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvbi5nZXQoKSwgW3dlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpXSh4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGV2ZW50ID09IFhQQ19F
UlJPUl9DT05ORUNUSU9OX0lOVkFMSUQpCisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkZhaWxl
ZCB0byBjb25uZWN0IHRvIG1hY2ggc2VydmljZSAlcywgbGlrZWx5IGJlY2F1c2UgaXQgaXMgbm90
IHJlZ2lzdGVyZWQgd2l0aCBsYXVuY2hkIiwgd2Vha1RoaXMtPm1fbWFjaFNlcnZpY2VOYW1lLmRh
dGEoKSk7CisgICAgICAgIGlmIChldmVudCA9PSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlRFUlJV
UFRFRCkgeworICAgICAgICAgICAgLy8gRGFlbW9uIGNyYXNoZWQsIHdlIHdpbGwgbmVlZCB0byBt
YWtlIGEgbmV3IGNvbm5lY3Rpb24gdG8gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGRhZW1vbi4KKyAg
ICAgICAgICAgIHdlYWtUaGlzLT5tX2Nvbm5lY3Rpb24gPSBudWxscHRyOworICAgICAgICB9Cisg
ICAgICAgIHdlYWtUaGlzLT5jaGVja0ZvckRlYnVnTWVzc2FnZUJyb2FkY2FzdChldmVudCk7Cisg
ICAgfSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fYWN0aXZhdGUobV9jb25uZWN0aW9uLmdldCgpKTsK
KworICAgIHNlbmREZWJ1Z01vZGVJc0VuYWJsZWRNZXNzYWdlSWZOZWNlc3NhcnkoKTsKK30KKwor
dm9pZCBDb25uZWN0aW9uVG9NYWNoU2VydmljZTo6c2VuZERlYnVnTW9kZUlzRW5hYmxlZE1lc3Nh
Z2VJZk5lY2Vzc2FyeSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fY29ubmVjdGlvbik7CisgICAg
aWYgKCFtX25ldHdvcmtTZXNzaW9uCisgICAgICAgIHx8IG1fbmV0d29ya1Nlc3Npb24tPnNlc3Np
b25JRCgpLmlzRXBoZW1lcmFsKCkKKyAgICAgICAgfHwgIW1fbmV0d29ya1Nlc3Npb24tPnByaXZh
dGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2Rlci5lbmNvZGUodHJ1ZSk7CisgICAgc2Vu
ZChNZXNzYWdlVHlwZTo6U2V0RGVidWdNb2RlSXNFbmFibGVkLCBlbmNvZGVyLnRha2VCdWZmZXIo
KSk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvblRvTWFjaFNlcnZpY2U6OmNoZWNrRm9yRGVidWdNZXNz
YWdlQnJvYWRjYXN0KHhwY19vYmplY3RfdCByZXF1ZXN0KSBjb25zdAoreworICAgIGlmICh4cGNf
Z2V0X3R5cGUocmVxdWVzdCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgcmV0dXJu
OworICAgIGNvbnN0IGNoYXIqIGRlYnVnTWVzc2FnZSA9IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJp
bmcocmVxdWVzdCwgcHJvdG9jb2xEZWJ1Z01lc3NhZ2VLZXkpOworICAgIGlmICghZGVidWdNZXNz
YWdlKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBtZXNzYWdlTGV2ZWwgPSBzdGF0aWNfY2Fz
dDxKU0M6Ok1lc3NhZ2VMZXZlbD4oeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBw
cm90b2NvbERlYnVnTWVzc2FnZUxldmVsS2V5KSk7CisgICAgYXV0byogbmV0d29ya1Nlc3Npb24g
PSBtX25ldHdvcmtTZXNzaW9uLmdldCgpOworICAgIGlmICghbmV0d29ya1Nlc3Npb24pCisgICAg
ICAgIHJldHVybjsKKyAgICBtX25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrUHJvY2VzcygpLmJyb2Fk
Y2FzdENvbnNvbGVNZXNzYWdlKG1fbmV0d29ya1Nlc3Npb24tPnNlc3Npb25JRCgpLCBNZXNzYWdl
U291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgbWVzc2FnZUxldmVsLCBTdHJpbmc6OmZy
b21VVEY4KGRlYnVnTWVzc2FnZSkpOworfQorCitzdGF0aWMgT1NPYmplY3RQdHI8eHBjX29iamVj
dF90PiBkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29k
ZWRNZXNzYWdlJiYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE9TT2Jq
ZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgYWRk
VmVyc2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KFdURk1vdmUobWVzc2FnZSksIGRp
Y3Rpb25hcnkuZ2V0KCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFy
eS5nZXQoKSwgcHJvdG9jb2xNZXNzYWdlVHlwZUtleSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1l
c3NhZ2VUeXBlKSk7CisgICAgcmV0dXJuIGRpY3Rpb25hcnk7Cit9CisKK3ZvaWQgQ29ubmVjdGlv
bjo6c2VuZCh4cGNfb2JqZWN0X3QgbWVzc2FnZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb24uZ2V0KCkpOworICAgIEFTU0VS
VCh4cGNfZ2V0X3R5cGUobWVzc2FnZSkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSk7CisgICAgeHBj
X2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbi5nZXQoKSwgbWVzc2FnZSk7Cit9
CisKK3ZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseSh4cGNfb2JqZWN0X3QgbWVzc2FnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh4cGNfb2JqZWN0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBjb25zdAoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgQVNTRVJUKG1f
Y29ubmVjdGlvbi5nZXQoKSk7CisgICAgQVNTRVJUKHhwY19nZXRfdHlwZShtZXNzYWdlKSA9PSBY
UENfVFlQRV9ESUNUSU9OQVJZKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Vfd2l0
aF9yZXBseShtX2Nvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UsIGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKHhwY19vYmplY3RfdCByZXBseSkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHJlcGx5KTsK
KyAgICB9KS5nZXQoKSk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvblRvTWFjaFNlcnZpY2U6OnNlbmQo
TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSkgY29uc3QK
K3sKKyAgICBpbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCk7CisgICAgQ29ubmVjdGlvbjo6
c2VuZChkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UobWVzc2FnZVR5cGUsIFdURk1vdmUobWVzc2FnZSkp
LmdldCgpKTsKK30KKwordm9pZCBDb25uZWN0aW9uVG9NYWNoU2VydmljZTo6c2VuZFdpdGhSZXBs
eShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBjb25zdAoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgaW5pdGlhbGl6
ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOworCisgICAgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseShk
aWN0aW9uYXJ5RnJvbU1lc3NhZ2UobWVzc2FnZVR5cGUsIFdURk1vdmUobWVzc2FnZSkpLmdldCgp
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKHhwY19v
YmplY3RfdCByZXBseSkgbXV0YWJsZSB7CisgICAgICAgIGlmICh4cGNfZ2V0X3R5cGUocmVwbHkp
ICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVwbHksIHByb3RvY29s
VmVyc2lvbktleSkgIT0gcHJvdG9jb2xWZXJzaW9uVmFsdWUpIHsKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZV90IGRhdGFTaXplIHsgMCB9OworICAgICAgICBj
b25zdCB2b2lkKiBkYXRhID0geHBjX2RpY3Rpb25hcnlfZ2V0X2RhdGEocmVwbHksIHByb3RvY29s
RW5jb2RlZE1lc3NhZ2VLZXksICZkYXRhU2l6ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBkYXRhU2l6ZSB9KTsKKyAgICB9
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgUENNCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
Y29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0KZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjNmU2YmZlNzMxNTM5ZWExMTg0MzczYThjZTZi
YTU1ZTJhOWM5YjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9j
b2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oIgotCi0jaW1w
b3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oIgotI2ltcG9ydCA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1uYW1lc3BhY2UgUENN
IHsKLQotQ29ubmVjdGlvbjo6Q29ubmVjdGlvbihDU3RyaW5nJiYgbWFjaFNlcnZpY2VOYW1lKQot
ICAgIDogbV9tYWNoU2VydmljZU5hbWUoV1RGTW92ZShtYWNoU2VydmljZU5hbWUpKSB7IH0KLQot
dm9pZCBDb25uZWN0aW9uOjppbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCkgY29uc3QKLXsK
LSAgICBpZiAobV9jb25uZWN0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgbV9jb25uZWN0aW9u
ID0gYWRvcHRPU09iamVjdCh4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9zZXJ2aWNlKG1fbWFj
aFNlcnZpY2VOYW1lLmRhdGEoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgMCkpOwotICAg
IHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKG1fY29ubmVjdGlvbi5nZXQoKSwgW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSh4cGNfb2JqZWN0X3QgZXZlbnQpIHsKLSAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKGV2ZW50
ID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQpCi0gICAgICAgICAgICBXVEZMb2dBbHdh
eXMoIkZhaWxlZCB0byBjb25uZWN0IHRvIG1hY2ggc2VydmljZSAlcywgbGlrZWx5IGJlY2F1c2Ug
aXQgaXMgbm90IHJlZ2lzdGVyZWQgd2l0aCBsYXVuY2hkIiwgd2Vha1RoaXMtPm1fbWFjaFNlcnZp
Y2VOYW1lLmRhdGEoKSk7Ci0gICAgICAgIGlmIChldmVudCA9PSBYUENfRVJST1JfQ09OTkVDVElP
Tl9JTlRFUlJVUFRFRCkgewotICAgICAgICAgICAgLy8gRGFlbW9uIGNyYXNoZWQsIHdlIHdpbGwg
bmVlZCB0byBtYWtlIGEgbmV3IGNvbm5lY3Rpb24gdG8gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGRh
ZW1vbi4KLSAgICAgICAgICAgIHdlYWtUaGlzLT5tX2Nvbm5lY3Rpb24gPSBudWxscHRyOwotICAg
ICAgICB9Ci0gICAgfSk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fYWN0aXZhdGUobV9jb25uZWN0aW9u
LmdldCgpKTsKLX0KLQotc3RhdGljIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gZGljdGlvbmFy
eUZyb21NZXNzYWdlKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmIG1l
c3NhZ2UpCi17Ci0gICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlv
bmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgIGFkZFZlcnNpb25BbmRFbmNv
ZGVkTWVzc2FnZVRvRGljdGlvbmFyeShXVEZNb3ZlKG1lc3NhZ2UpLCBkaWN0aW9uYXJ5LmdldCgp
KTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnkuZ2V0KCksIHByb3Rv
Y29sTWVzc2FnZVR5cGVLZXksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtZXNzYWdlVHlwZSkpOwot
ICAgIHJldHVybiBkaWN0aW9uYXJ5OwotfQotCi12b2lkIENvbm5lY3Rpb246OnNlbmQoTWVzc2Fn
ZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSkgY29uc3QKLXsKLSAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGluaXRpYWxpemVDb25uZWN0aW9uSWZO
ZWVkZWQoKTsKLQotICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShtX2Nvbm5lY3Rpb24u
Z2V0KCksIGRpY3Rpb25hcnlGcm9tTWVzc2FnZShtZXNzYWdlVHlwZSwgV1RGTW92ZShtZXNzYWdl
KSkuZ2V0KCkpOwotfQotCi12b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoUmVwbHkoTWVzc2FnZVR5
cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKLXsK
LSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGluaXRpYWxpemVDb25uZWN0aW9u
SWZOZWVkZWQoKTsKLQotICAgIGF1dG8gZGljdGlvbmFyeSA9IGRpY3Rpb25hcnlGcm9tTWVzc2Fn
ZShtZXNzYWdlVHlwZSwgV1RGTW92ZShtZXNzYWdlKSk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2Vu
ZF9tZXNzYWdlX3dpdGhfcmVwbHkobV9jb25uZWN0aW9uLmdldCgpLCBkaWN0aW9uYXJ5LmdldCgp
LCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICh4cGNfb2JqZWN0X3QgcmVwbHkpIG11
dGFibGUgewotICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgICAgICBpZiAo
eHBjX2dldF90eXBlKHJlcGx5KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKSB7Ci0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOwotICAgICAgICB9Ci0gICAgICAgIGlmICh4cGNfZGljdGlvbmFyeV9nZXRfdWlu
dDY0KHJlcGx5LCBwcm90b2NvbFZlcnNpb25LZXkpICE9IHByb3RvY29sVmVyc2lvblZhbHVlKSB7
Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcih7IH0pOwotICAgICAgICB9Ci0gICAgICAgIHNpemVfdCBkYXRhU2l6
ZSB7IDAgfTsKLSAgICAgICAgY29uc3Qgdm9pZCogZGF0YSA9IHhwY19kaWN0aW9uYXJ5X2dldF9k
YXRhKHJlcGx5LCBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCAmZGF0YVNpemUpOwotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwg
ZGF0YVNpemUgfSk7Ci0gICAgfSkuZ2V0KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBQQ00KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25Db25uZWN0aW9uU2V0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9Q
Q01EYWVtb25Db25uZWN0aW9uU2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUxMzQyNzA4Y2NhYmY1YmQ5OWQ5
NDE0NTI1ZmQwODQyN2Y5ZTllYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkNvbm5lY3Rpb25T
ZXQuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKworbmFtZXNwYWNlIEpTQyB7CitlbnVtIGNsYXNz
IE1lc3NhZ2VMZXZlbCA6IHVpbnQ4X3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNw
YWNlIFBDTSB7CisKK2NsYXNzIENvbm5lY3Rpb247CisKK2NsYXNzIERhZW1vbkNvbm5lY3Rpb25T
ZXQgeworcHVibGljOgorICAgIHN0YXRpYyBEYWVtb25Db25uZWN0aW9uU2V0JiBzaW5nbGV0b24o
KTsKKyAgICAKKyAgICB2b2lkIGFkZCh4cGNfY29ubmVjdGlvbl90KTsKKyAgICB2b2lkIHJlbW92
ZSh4cGNfY29ubmVjdGlvbl90KTsKKworICAgIHZvaWQgc2V0Q29ubmVjdGVkTmV0d29ya1Byb2Nl
c3NIYXNEZWJ1Z01vZGVFbmFibGVkKGNvbnN0IENvbm5lY3Rpb24mLCBib29sKTsKKyAgICBib29s
IGRlYnVnTW9kZUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIGJyb2FkY2FzdENvbnNvbGVNZXNz
YWdlKEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmKTsKKyAgICAKK3ByaXZhdGU6Cisg
ICAgZW51bSBjbGFzcyBEZWJ1Z01vZGVFbmFibGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBI
YXNoTWFwPFJldGFpblB0cjx4cGNfY29ubmVjdGlvbl90PiwgRGVidWdNb2RlRW5hYmxlZD4gbV9j
b25uZWN0aW9uczsKKyAgICBzaXplX3QgbV9jb25uZWN0aW9uc1dpdGhEZWJ1Z01vZGVFbmFibGVk
IHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgUENNCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29j
b2EvRGFlbW9uL1BDTURhZW1vbkNvbm5lY3Rpb25TZXQubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25Db25uZWN0aW9uU2V0
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM3OTdkNmE0NzFkMmNlZjFkYjk2ZGFiYzE4ZjUzMDc0MTc3NjA3ZDAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25Db25uZWN0aW9uU2V0Lm1tCkBAIC0wLDAgKzEsOTEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBDTURhZW1vbkNv
bm5lY3Rpb25TZXQuaCIKKworI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0
aW9uLmgiCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2Uu
aCIKKyNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgorI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgUENNIHsKKworRGFlbW9uQ29ubmVjdGlv
blNldCYgRGFlbW9uQ29ubmVjdGlvblNldDo6c2luZ2xldG9uKCkKK3sKKyAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEYWVtb25Db25uZWN0
aW9uU2V0PiBzZXQ7CisgICAgcmV0dXJuIHNldC5nZXQoKTsKK30KKyAgICAKK3ZvaWQgRGFlbW9u
Q29ubmVjdGlvblNldDo6YWRkKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKK3sKKyAgICBB
U1NFUlQoIW1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbikpOworICAgIG1fY29ubmVj
dGlvbnMuc2V0KGNvbm5lY3Rpb24sIERlYnVnTW9kZUVuYWJsZWQ6Ok5vKTsKK30KKwordm9pZCBE
YWVtb25Db25uZWN0aW9uU2V0OjpyZW1vdmUoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQor
eworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24pKTsKKyAgICBh
dXRvIGhhZERlYnVnTW9kZUVuYWJsZWQgPSBtX2Nvbm5lY3Rpb25zLnRha2UoY29ubmVjdGlvbik7
CisgICAgaWYgKGhhZERlYnVnTW9kZUVuYWJsZWQgPT0gRGVidWdNb2RlRW5hYmxlZDo6WWVzKSB7
CisgICAgICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zV2l0aERlYnVnTW9kZUVuYWJsZWQpOworICAg
ICAgICBtX2Nvbm5lY3Rpb25zV2l0aERlYnVnTW9kZUVuYWJsZWQtLTsKKyAgICB9Cit9CisKK3Zv
aWQgRGFlbW9uQ29ubmVjdGlvblNldDo6c2V0Q29ubmVjdGVkTmV0d29ya1Byb2Nlc3NIYXNEZWJ1
Z01vZGVFbmFibGVkKGNvbnN0IENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGJvb2wgZW5hYmxlZCkK
K3sKKyAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmdldCgpKSk7
CisgICAgYm9vbCBvbGRWYWx1ZSA9IG1fY29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb24uZ2V0KCkp
ID09IERlYnVnTW9kZUVuYWJsZWQ6OlllczsKKyAgICBpZiAob2xkVmFsdWUgPT0gZW5hYmxlZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGVuYWJsZWQpIHsKKyAgICAgICAgbV9jb25uZWN0
aW9ucy5zZXQoY29ubmVjdGlvbi5nZXQoKSwgRGVidWdNb2RlRW5hYmxlZDo6WWVzKTsKKyAgICAg
ICAgbV9jb25uZWN0aW9uc1dpdGhEZWJ1Z01vZGVFbmFibGVkKys7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgbV9jb25uZWN0aW9ucy5zZXQoY29ubmVjdGlvbi5nZXQoKSwgRGVidWdNb2RlRW5hYmxl
ZDo6Tm8pOworICAgICAgICBtX2Nvbm5lY3Rpb25zV2l0aERlYnVnTW9kZUVuYWJsZWQtLTsKKyAg
ICB9Cit9CisKK2Jvb2wgRGFlbW9uQ29ubmVjdGlvblNldDo6ZGVidWdNb2RlRW5hYmxlZCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuICEhbV9jb25uZWN0aW9uc1dpdGhEZWJ1Z01vZGVFbmFibGVkOwor
fQorCit2b2lkIERhZW1vbkNvbm5lY3Rpb25TZXQ6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKEpT
Qzo6TWVzc2FnZUxldmVsIG1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQorewor
ICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRl
KG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRp
Y3Rpb25hcnkuZ2V0KCksIHByb3RvY29sRGVidWdNZXNzYWdlTGV2ZWxLZXksIHN0YXRpY19jYXN0
PHVpbnQ2NF90PihtZXNzYWdlTGV2ZWwpKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5n
KGRpY3Rpb25hcnkuZ2V0KCksIHByb3RvY29sRGVidWdNZXNzYWdlS2V5LCBtZXNzYWdlLnV0Zjgo
KS5kYXRhKCkpOworICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fY29ubmVjdGlvbnMua2V5
cygpKQorICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbi5nZXQo
KSwgZGljdGlvbmFyeS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50
VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50
cnlQb2ludC5tbQppbmRleCA1NDhmZjUxNjRjNmQ2ZjE5YmU1MWQ0ZjQ2OGRkN2JmNWQ0M2E0ODZk
Li45NDYxNjFmNTQ2Y2IwYmU4MDE0NjlmNDUxYmYwZmFkZTIwZWEwMDQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01E
YWVtb25FbnRyeVBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRV
dGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQubW0KQEAgLTI2LDcgKzI2
LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUENNRGFlbW9uRW50cnlQb2ludC5o
IgogCisjaW1wb3J0ICJQQ01EYWVtb25Db25uZWN0aW9uU2V0LmgiCiAjaW1wb3J0ICJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKyNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1
cmVtZW50RGVjb2Rlci5oIgogI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
SW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGll
cy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CkBAIC00MywxMyArNDUsNiBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIEhhc2hTZXQ8UmV0YWluUHRyPHhwY19j
b25uZWN0aW9uX3Q+PiYgcGVlcnMoKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8UmV0YWluUHRyPHhwY19jb25uZWN0
aW9uX3Q+Pj4gc2V0OwotICAgIHJldHVybiBzZXQuZ2V0KCk7Ci19Ci0KIHN0YXRpYyBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFBDTTo6RW5jb2RlZE1lc3NhZ2UmJik+IHJlcGx5U2VuZGVyKFBDTTo6
TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4mJiByZXF1
ZXN0KQogewogICAgIGlmICghUENNOjptZXNzYWdlVHlwZVNlbmRzUmVwbHkobWVzc2FnZVR5cGUp
KQpAQCAtNzQsNyArNjksNyBAQCBzdGF0aWMgdm9pZCBjb25uZWN0aW9uRXZlbnRIYW5kbGVyKHhw
Y19vYmplY3RfdCByZXF1ZXN0KQogICAgIHNpemVfdCBkYXRhU2l6ZSB7IDAgfTsKICAgICBjb25z
dCB2b2lkKiBkYXRhID0geHBjX2RpY3Rpb25hcnlfZ2V0X2RhdGEocmVxdWVzdCwgUENNOjpwcm90
b2NvbEVuY29kZWRNZXNzYWdlS2V5LCAmZGF0YVNpemUpOwogICAgIFBDTTo6RW5jb2RlZE1lc3Nh
Z2UgZW5jb2RlZE1lc3NhZ2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRh
dGFTaXplIH07Ci0gICAgZGVjb2RlTWVzc2FnZUFuZFNlbmRUb01hbmFnZXIobWVzc2FnZVR5cGUs
IFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpLCByZXBseVNlbmRlcihtZXNzYWdlVHlwZSwgcmVxdWVz
dCkpOworICAgIGRlY29kZU1lc3NhZ2VBbmRTZW5kVG9NYW5hZ2VyKFBDTTo6Q29ubmVjdGlvbih4
cGNfZGljdGlvbmFyeV9nZXRfcmVtb3RlX2Nvbm5lY3Rpb24ocmVxdWVzdCkpLCBtZXNzYWdlVHlw
ZSwgV1RGTW92ZShlbmNvZGVkTWVzc2FnZSksIHJlcGx5U2VuZGVyKG1lc3NhZ2VUeXBlLCByZXF1
ZXN0KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25u
ZWN0aW9ucyhjb25zdCBjaGFyKiBzZXJ2aWNlTmFtZSkKQEAgLTkxLDcgKzg2LDcgQEAgc3RhdGlj
IHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2VydmljZUNvbm5lY3Rpb25zKGNvbnN0IGNoYXIq
IHNlcnZpY2VOYW1lKQogICAgICAgICAgICAgICAgIE5TTG9nKEAiRmFpbGVkIHRvIHN0YXJ0IGxp
c3RlbmluZyBmb3IgY29ubmVjdGlvbnMgdG8gbWFjaCBzZXJ2aWNlICVzLCBsaWtlbHkgYmVjYXVz
ZSBpdCBpcyBub3QgcmVnaXN0ZXJlZCB3aXRoIGxhdW5jaGQiLCBzZXJ2aWNlTmFtZSk7CiAgICAg
ICAgICAgICBpZiAoZXZlbnQgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5URVJSVVBURUQpIHsK
ICAgICAgICAgICAgICAgICBOU0xvZyhAInJlbW92aW5nIHBlZXIgY29ubmVjdGlvbiAlcCIsIHBl
ZXIpOwotICAgICAgICAgICAgICAgIHBlZXJzKCkucmVtb3ZlKHBlZXIpOworICAgICAgICAgICAg
ICAgIFBDTTo6RGFlbW9uQ29ubmVjdGlvblNldDo6c2luZ2xldG9uKCkucmVtb3ZlKHBlZXIpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbm5l
Y3Rpb25FdmVudEhhbmRsZXIoZXZlbnQpOwpAQCAtMTAwLDcgKzk1LDcgQEAgc3RhdGljIHZvaWQg
c3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2VydmljZUNvbm5lY3Rpb25zKGNvbnN0IGNoYXIqIHNlcnZp
Y2VOYW1lKQogICAgICAgICB4cGNfY29ubmVjdGlvbl9hY3RpdmF0ZShwZWVyKTsKIAogICAgICAg
ICBOU0xvZyhAImFkZGluZyBwZWVyIGNvbm5lY3Rpb24gJXAiLCBwZWVyKTsKLSAgICAgICAgcGVl
cnMoKS5hZGQocGVlcik7CisgICAgICAgIFBDTTo6RGFlbW9uQ29ubmVjdGlvblNldDo6c2luZ2xl
dG9uKCkuYWRkKHBlZXIpOwogICAgIH0pOwogICAgIHhwY19jb25uZWN0aW9uX2FjdGl2YXRlKGxp
c3RlbmVyLmdldCgpLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA1ZTZiNTJj
MTIxMTQ2YzZkNTNhY2U2NjVkNjVjMjU2ZmRlNWU5NTkzLi40M2I0YzJkYjI4MTNhODdjZTBlMDkw
OWU1ZmFjY2U0NDJjZDZlNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MSw3ICs0MSw3
IEBAIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCiBOZXR3
b3JrUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL0RhZW1vbi9EYWVtb25FbnRyeVBvaW50Lm1tCiBO
ZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VF
bnRyeVBvaW50Lm1tCiAKLU5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2Nv
Y29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCitOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudENvbm5lY3Rpb25Db2NvYS5tbQogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29jb2Eu
bW0KIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tCiAKQEAgLTE5Myw2ICsxOTMsNyBAQCBTaGFy
ZWQvQ29jb2EvV0tOU1VSTFJlcXVlc3QubW0KIFNoYXJlZC9Db2NvYS9XS09iamVjdC5tbQogU2hh
cmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0NvY29hLm1tCiAKK1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25Db25uZWN0aW9uU2V0Lm1t
CiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQ
b2ludC5tbQogCiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQ
Q1NlcnZpY2VFbnRyeVBvaW50Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA3YjA5ZTVhNTUxNzM5MzNk
YmNlNjJjNDZlNzk1NTE2ZDE3ZjFiNWRjLi40MWFiMmQwNzViZTNmYTNkN2Q5YWM0ZWVjZWNiMzcw
ZGUzYmY5ZDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTY1OCw2ICs2NTgsMTEgQEAgc3RhdGljIFZl
Y3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiB0b1dlYnNpdGVEYXRhUmVjb3JkcyhOU0Fy
cmF5ICpkYXRhUmVjb3IKICAgICBfd2Vic2l0ZURhdGFTdG9yZS0+YWxsb3dUTFNDZXJ0aWZpY2F0
ZUNoYWluRm9yTG9jYWxQQ01UZXN0aW5nKFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyhzZXJ2ZXJU
cnVzdCkpOwogfQogCistICh2b2lkKV9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9k
ZUVuYWJsZWRGb3JUZXN0aW5nOihCT09MKWVuYWJsZWQKK3sKKyAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGUoZW5hYmxlZCk7Cit9CisKIC0g
KHZvaWQpX2FwcEJvdW5kRG9tYWluczoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqKSlj
b21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IGE5ZGJmMTUyMWQ2N2ExNDQ1NjBhZmFkNjI0NTNjNTY1
ZjU3YzIzNTQuLmU3NWZjNmEyMzgxZjYxOWIwZTcwODA0MGZmNDljM2E1NDBhY2U4NzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtODUsNiArODUsNyBAQCB0eXBlZGVmIE5TX09QVElP
TlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogCiAtICh2
b2lkKV9hbGxvd1RMU0NlcnRpZmljYXRlQ2hhaW46KE5TQXJyYXkgKiljZXJ0aWZpY2F0ZUNoYWlu
IGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBp
b3MoMTUuMCkpOwogLSAodm9pZClfdHJ1c3RTZXJ2ZXJGb3JMb2NhbFBDTVRlc3Rpbmc6KFNlY1Ry
dXN0UmVmKXNlcnZlclRydXN0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVn
TW9kZUVuYWJsZWRGb3JUZXN0aW5nOihCT09MKWVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLSAodm9pZClfcmVuYW1lT3JpZ2lu
OihOU1VSTCAqKW9sZE5hbWUgdG86KE5TVVJMICopbmV3TmFtZSBmb3JEYXRhT2ZUeXBlczooTlNT
ZXQ8TlNTdHJpbmcgKj4gKilkYXRhVHlwZXMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZv
aWQpKWNvbXBsZXRpb25IYW5kbGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMWM2OTUxNWJiMTgyZGZhNWE1NDA3NzQ4NjRmNzNl
YzI5OGM0MWQ5Li5iYTIzNzllYzRlMDk3YTIzNjRhZmRhNGZiMjczNGY2ZmQxN2QxZjhkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ1
MzcsNiArNDUzNyw4IEBACiAJCTVDNUQyMzg4MjI3QTE4OTIwMDBCOUJEQSAvKiBfV0tDdXN0b21I
ZWFkZXJGaWVsZHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tDdXN0b21IZWFkZXJGaWVsZHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
NUQyMzg5MjI3QTE4OTIwMDBCOUJEQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQ3VzdG9tSGVhZGVyRmllbGRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNUQyMzhBMjI3QTFEOUIwMDBCOUJEQSAvKiBBUElD
dXN0b21IZWFkZXJGaWVsZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJ
Q3VzdG9tSGVhZGVyRmllbGRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNjI4
OUE4MjcwNjhFQzAwMENGNUVDNiAvKiBQQ01EYWVtb25Db25uZWN0aW9uU2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBDTURhZW1vbkNvbm5lY3Rpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUM2Mjg5QTkyNzA2OEVDMDAwQ0Y1RUM2IC8qIFBDTURhZW1vbkNvbm5lY3Rpb25TZXQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQQ01EYWVtb25Db25uZWN0aW9uU2V0Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzYyRkRGODFFRkMyNjNDMDBDRTA3MkUgLyogV0tV
UkxTY2hlbWVUYXNrUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VSTFNjaGVtZVRhc2tQcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjZBNEIzMjMyMDk2MTMwMEVB
NEQ0NCAvKiBXS0hUVFBDb29raWVTdG9yZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDNjZBNEI0MjMyMDk2MTQwMEVBNEQ0NCAvKiBXS0hUVFBDb29raWVTdG9y
ZVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0hUVFBDb29raWVTdG9y
ZVJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDYwMCw3ICs0NjAyLDcgQEAK
IAkJNUNCOTMwQzAyNkUwNTQyRjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xp
ZW50SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Q0I5MzBDMTI2RTA1NEI4MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRD
bGllbnRJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlj
a01lYXN1cmVtZW50Q2xpZW50SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Q0I5MzBGMjI2RTdFRUUwMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3Jr
TG9hZGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNUNCOTMwRjQyNkU4MDFFODAwMzJCMUMwIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjkzMEY0MjZFODAxRTgwMDMyQjFDMCAvKiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbkNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1Q0I5MzBGNTI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUNCOTMwRjYyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDQjkzMEY3MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDY4LDcgKzk0NzAsNyBAQAogCQk1Q0I5MzBGMTI2RTdF
RTg5MDAzMkIxQzAgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAotCQkJCTVDQjkzMEY0MjZFODAxRTgwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSAqLywKKwkJCQk1Q0I5MzBGNDI2RTgwMUU4
MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uQ29jb2EubW0gKi8s
CiAJCQkJNUNCOTMwRjIyNkU3RUVFMDAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TmV0d29ya0xvYWRlckNvY29hLm1tICovLAogCQkJCTVDQjkzMTA3MjZFODQxQ0IwMDMyQjFDMCAv
KiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oICovLAogCQkJCTVDQjkzMTA4
MjZFODQxQ0IwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5t
bSAqLywKQEAgLTk0ODAsNiArOTQ4Miw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAogCQkJCTVDQUY3QUE1MjZGOTNBOTUwMDAzRjE5RSAvKiBBZEF0dHJpYnV0aW9uRGFl
bW9uLmMgKi8sCisJCQkJNUM2Mjg5QTgyNzA2OEVDMDAwQ0Y1RUM2IC8qIFBDTURhZW1vbkNvbm5l
Y3Rpb25TZXQuaCAqLywKKwkJCQk1QzYyODlBOTI3MDY4RUMwMDBDRjVFQzYgLyogUENNRGFlbW9u
Q29ubmVjdGlvblNldC5tbSAqLywKIAkJCQk1Q0I5MzEwNDI2RTgzN0ZDMDAzMkIxQzAgLyogUENN
RGFlbW9uRW50cnlQb2ludC5oICovLAogCQkJCTVDQjkzMTA1MjZFODM3RkQwMDMyQjFDMCAvKiBQ
Q01EYWVtb25FbnRyeVBvaW50Lm1tICovLAogCQkJKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjYzU0ODUzOWExYzBkOGZmMDJhMzAwYWMwODlk
YmEzNTQ5NWZlOTQ2Li44Y2Q5NTE1ZGIwMmZlODAyNjgyZWM5NWYzYmVkMmI3OGYxZmFmNWFjIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMjEtMTAtMDQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgbWlzc2luZyBmdW5jdGlvbnMgaW4gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9F
dmVudEF0dHJpYnV0aW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dGVzdERhZW1vblBM
aXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNsZWFuVXBEYWVtb24pOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
VUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdh
dGUubW06CisgICAgICAgICgtW1Rlc3RVSURlbGVnYXRlIF93ZWJWaWV3OmRpZEF0dGFjaExvY2Fs
SW5zcGVjdG9yOl0pOgorICAgICAgICAoLVtUZXN0VUlEZWxlZ2F0ZSB3YWl0Rm9ySW5zcGVjdG9y
VG9TaG93XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfdGVzdF93YWl0Rm9ySW5zcGVjdG9yVG9T
aG93XSk6CisKIDIwMjEtMTAtMDQgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFNlbmQgRVdTIGV4Y2VwdGlvbiBlbWFpbHMgdG8gYm90IHdhdGNoZXJzIGlu
c3RlYWQgb2YgQWFrYXNoCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW0KaW5kZXggOTQwMTk2N2FlMTAyZTA0YjU0
MmQ0ZTg3N2VkYzk0ZjMzNDVmNzNlMi4uZGM2Mjk5NWQzNDdhMTA4ODYxOWJmNDRlMThlYTY2M2I3
ODY1NTJkMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9FdmVudEF0dHJpYnV0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbQpAQCAtMjksMTMgKzI5LDE3IEBACiAjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdE5h
dmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFVJRGVsZWdhdGUuaCIKICNpbXBvcnQg
IlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIlV0aWxpdGllcy5oIgorI2ltcG9ydCAiV0tXZWJW
aWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLTWFpbi5oPgorI2lt
cG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0
aW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0
IDxXZWJLaXQvX1dLSW5zcGVjdG9yLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9y
dCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4K
QEAgLTQwMCw2ICs0MDQsNyBAQCBzdGF0aWMgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiB0ZXN0
RGFlbW9uUExpc3QoTlNVUkwgKnN0b3JhZ2VMb2NhdGlvbikKICAgICB4cGNfZGljdGlvbmFyeV9z
ZXRfc3RyaW5nKHBsaXN0LmdldCgpLCAiX01hbmFnZWRCeSIsICJUZXN0V2ViS2l0QVBJIik7CiAg
ICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhwbGlzdC5nZXQoKSwgIkxhYmVsIiwgIm9yZy53
ZWJraXQucGNtdGVzdGRhZW1vbiIpOwogICAgIHhwY19kaWN0aW9uYXJ5X3NldF9ib29sKHBsaXN0
LmdldCgpLCAiTGF1bmNoT25seU9uY2UiLCB0cnVlKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRf
c3RyaW5nKHBsaXN0LmdldCgpLCAiU3RhbmRhcmRFcnJvclBhdGgiLCBbc3RvcmFnZUxvY2F0aW9u
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImRhZW1vbl9zdGRlcnIiXS5wYXRoLmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbik7CiAKICAgICB7CiAgICAgICAgIGF1dG8gZW52aXJvbm1lbnRW
YXJpYWJsZXMgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBu
dWxscHRyLCAwKSk7CkBAIC00MzEsNiArNDM2LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0RpY3Rp
b25hcnk+IHRlc3REYWVtb25QTGlzdChOU1VSTCAqc3RvcmFnZUxvY2F0aW9uKQogICAgIHJldHVy
biBAewogICAgICAgICBAIkxhYmVsIiA6IEAib3JnLndlYmtpdC5wY210ZXN0ZGFlbW9uIiwKICAg
ICAgICAgQCJMYXVuY2hPbmx5T25jZSIgOiBAWUVTLAorICAgICAgICBAIlN0YW5kYXJkRXJyb3JQ
YXRoIiA6IFtzdG9yYWdlTG9jYXRpb24gVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZGFl
bW9uX3N0ZGVyciJdLnBhdGgsCiAgICAgICAgIEAiRW52aXJvbm1lbnRWYXJpYWJsZXMiIDogQHsg
QCJEWUxEX0ZSQU1FV09SS19QQVRIIiA6IGN1cnJlbnRFeGVjdXRhYmxlRGlyZWN0b3J5KCkuZ2V0
KCkucGF0aCB9LAogICAgICAgICBAIk1hY2hTZXJ2aWNlcyIgOiBAeyBAIm9yZy53ZWJraXQucGNt
dGVzdGRhZW1vbi5zZXJ2aWNlIiA6IEBZRVMgfSwKICAgICAgICAgQCJQcm9ncmFtQXJndW1lbnRz
IiA6IEBbCkBAIC00NDUsNyArNDUxLDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+
IHRlc3REYWVtb25QTGlzdChOU1VSTCAqc3RvcmFnZUxvY2F0aW9uKQogCiAjZW5kaWYKIAotVEVT
VChFdmVudEF0dHJpYnV0aW9uLCBEYWVtb24pCitzdGF0aWMgc3RkOjpwYWlyPE5TVVJMICosIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKj4gc2V0VXBEYWVtb24oV0tXZWJWaWV3Q29uZmlndXJhdGlv
biAqdmlld0NvbmZpZ3VyYXRpb24pCiB7CiAgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFnZXIg
PSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CiAgICAgTlNVUkwgKnRlbXBEaXIgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIkV2ZW50QXR0cmlidXRpb25EYWVtb25UZXN0Il0gaXNEaXJl
Y3Rvcnk6WUVTXTsKQEAgLTQ2NywyNSArNDczLDY5IEBAIFRFU1QoRXZlbnRBdHRyaWJ1dGlvbiwg
RGFlbW9uKQogICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKICAgICBzdWNjZXNzID0gW3BsaXN0IHdy
aXRlVG9VUkw6cGxpc3RMb2NhdGlvbiBlcnJvcjomZXJyb3JdOwogICAgIEVYUEVDVF9UUlVFKHN1
Y2Nlc3MpOwotICAgIHN5c3RlbShbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImxhdW5jaGN0
bCBsb2FkICVAIiwgcGxpc3RMb2NhdGlvbi5wYXRoXS5VVEY4U3RyaW5nKTsKKyAgICBzeXN0ZW0o
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJsYXVuY2hjdGwgbG9hZCAlQCIsIHBsaXN0TG9j
YXRpb24ucGF0aF0uZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKICNlbmRpZgogICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKIAogICAgIGF1dG8gZGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10pOwogICAgIGRhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uZ2V0KCkucGNtTWFjaFNlcnZpY2VOYW1lID0gQCJvcmcud2Via2l0LnBj
bXRlc3RkYWVtb24uc2VydmljZSI7Ci0gICAgYXV0byB2aWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7Ci0gICAgdmlld0NvbmZpZ3VyYXRpb24u
Z2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0p
LmdldCgpOwotICAgIHJ1bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3Qodmlld0NvbmZpZ3VyYXRp
b24uZ2V0KCksIFtdKFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgSFRUUFNlcnZlciYgc2VydmVy
KSB7Ci0gICAgICAgIFt3ZWJWaWV3IF9hZGRFdmVudEF0dHJpYnV0aW9uV2l0aFNvdXJjZUlEOjQy
IGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVVUkwoKSBzb3VyY2VEZXNjcmlwdGlvbjpAInRlc3Qgc291
cmNlIGRlc2NyaXB0aW9uIiBwdXJjaGFzZXI6QCJ0ZXN0IHB1cmNoYXNlciIgcmVwb3J0RW5kcG9p
bnQ6c2VydmVyLnJlcXVlc3QoKS5VUkwgb3B0aW9uYWxOb25jZTpuaWwgYXBwbGljYXRpb25CdW5k
bGVJRDpAInRlc3QuYnVuZGxlLmlkIl07Ci0gICAgfSk7CisgICAgdmlld0NvbmZpZ3VyYXRpb24u
d2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pLmdldCgp
OworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHRlbXBEaXIsIHZpZXdDb25maWd1cmF0aW9u
KTsKK30KIAorc3RhdGljIHZvaWQgY2xlYW5VcERhZW1vbihOU1VSTCAqdGVtcERpcikKK3sKICAg
ICBzeXN0ZW0oImtpbGxhbGwgQWRBdHRyaWJ1dGlvbkRhZW1vbiAtOSIpOwogCi0gICAgRVhQRUNU
X1RSVUUoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6dGVtcERpci5wYXRoXSk7Ci0gICAg
W2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDp0ZW1wRGlyIGVycm9yOiZlcnJvcl07CisgICAg
RVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQ
YXRoOnRlbXBEaXIucGF0aF0pOworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnRlbXBEaXIgZXJyb3I6
JmVycm9yXTsKICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiB9CiAKK1RFU1QoRXZlbnRBdHRyaWJ1
dGlvbiwgRGFlbW9uKQoreworICAgIGF1dG8gW3RlbXBEaXIsIGNvbmZpZ3VyYXRpb25dID0gc2V0
VXBEYWVtb24oYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKS5hdXRvcmVsZWFz
ZSgpKTsKKyAgICBydW5CYXNpY0V2ZW50QXR0cmlidXRpb25UZXN0KGNvbmZpZ3VyYXRpb24sIFtd
KFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgSFRUUFNlcnZlciYgc2VydmVyKSB7CisgICAgICAg
IFt3ZWJWaWV3IF9hZGRFdmVudEF0dHJpYnV0aW9uV2l0aFNvdXJjZUlEOjQyIGRlc3RpbmF0aW9u
VVJMOmV4YW1wbGVVUkwoKSBzb3VyY2VEZXNjcmlwdGlvbjpAInRlc3Qgc291cmNlIGRlc2NyaXB0
aW9uIiBwdXJjaGFzZXI6QCJ0ZXN0IHB1cmNoYXNlciIgcmVwb3J0RW5kcG9pbnQ6c2VydmVyLnJl
cXVlc3QoKS5VUkwgb3B0aW9uYWxOb25jZTpuaWwgYXBwbGljYXRpb25CdW5kbGVJRDpAInRlc3Qu
YnVuZGxlLmlkIl07CisgICAgfSk7CisgICAgY2xlYW5VcERhZW1vbih0ZW1wRGlyKTsKK30KKwor
VEVTVChFdmVudEF0dHJpYnV0aW9uLCBEYWVtb25EZWJ1Z01vZGUpCit7CisgICAgYXV0byBzZXRJ
bmplY3RlZEJ1bmRsZUNsaWVudCA9IFtdIChXS1dlYlZpZXcgKndlYlZpZXcsIFZlY3RvcjxTdHJp
bmc+JiBjb25zb2xlTWVzc2FnZXMpIHsKKyAgICAgICAgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGll
bnRWMCBpbmplY3RlZEJ1bmRsZUNsaWVudCA9IHsKKyAgICAgICAgICAgIHsgMCwgJmNvbnNvbGVN
ZXNzYWdlcyB9LAorICAgICAgICAgICAgW10gKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgbWVzc2Fn
ZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKSB7CisgICAg
ICAgICAgICAgICAgYXV0byYgY29uc29sZU1lc3NhZ2VzID0gKnJlaW50ZXJwcmV0X2Nhc3Q8VmVj
dG9yPFN0cmluZz4qPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisgICAgICAgICAg
ICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDb25z
b2xlTWVzc2FnZSIpKQorICAgICAgICAgICAgICAgICAgICBjb25zb2xlTWVzc2FnZXMuYXBwZW5k
KFV0aWw6OnRvTlMoKFdLU3RyaW5nUmVmKW1lc3NhZ2UpKTsKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICBudWxscHRyLAorICAgICAgICB9OworICAgICAgICBXS1BhZ2VTZXRQYWdlSW5qZWN0
ZWRCdW5kbGVDbGllbnQod2ViVmlldy5fcGFnZVJlZkZvclRyYW5zaXRpb25Ub1dLV2ViVmlldywg
JmluamVjdGVkQnVuZGxlQ2xpZW50LmJhc2UpOworICAgIH07CisKKyAgICBhdXRvIFt0ZW1wRGly
LCBjb25maWd1cmF0aW9uXSA9IHNldFVwRGFlbW9uKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90
ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkJ1bmRsZVBhZ2VDb25z
b2xlTWVzc2FnZSJdKTsKKyAgICBjb25maWd1cmF0aW9uLnByZWZlcmVuY2VzLl9kZXZlbG9wZXJF
eHRyYXNFbmFibGVkID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3QgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7CisgICAgVmVjdG9yPFN0cmluZz4gY29uc29sZU1lc3NhZ2VzOworICAgIHNl
dEluamVjdGVkQnVuZGxlQ2xpZW50KHdlYlZpZXcuZ2V0KCksIGNvbnNvbGVNZXNzYWdlcyk7Cisg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAic3RhcnQgcHJvY2Vzc2Vz
Il07CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHNob3ddOworICAgIFt3ZWJWaWV3IF90ZXN0
X3dhaXRGb3JJbnNwZWN0b3JUb1Nob3ddOworICAgIFtjb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmUgX3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZEZvclRlc3Rp
bmc6WUVTXTsKKyAgICB3aGlsZSAoY29uc29sZU1lc3NhZ2VzLmlzRW1wdHkoKSkKKyAgICAgICAg
VXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoY29uc29sZU1lc3NhZ2Vz
WzBdLCAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFR1cm5lZCBEZWJ1ZyBNb2RlIG9uLiIp
OworICAgIFtjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3NldFByaXZhdGVDbGlja01l
YXN1cmVtZW50RGVidWdNb2RlRW5hYmxlZEZvclRlc3Rpbmc6Tk9dOworICAgIHdoaWxlIChjb25z
b2xlTWVzc2FnZXMuc2l6ZSgpIDwgMikKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoY29uc29sZU1lc3NhZ2VzWzFdLCAiW1ByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnRdIFR1cm5lZCBEZWJ1ZyBNb2RlIG9mZi4iKTsKK30KKwogI2VuZGlmIC8vIFBMQVRG
T1JNKE1BQykKIAogI2lmIEhBVkUoVUlfRVZFTlRfQVRUUklCVVRJT04pCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLmggYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLmgKaW5kZXggMjZjMTZiZGY2NmNjNTc5MzkxZmRh
MjYxOGEzOTFkOTZhM2VmODI5Yi4uMGU5ZGE3NmQyOWZhMTJhMzdiZWMxMmNkNjAwMDlmMjZhNWQ5
NzY5NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0
ZS5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUuaApAQCAt
NDAsNCArNDAsNSBAQAogCiBAaW50ZXJmYWNlIFdLV2ViVmlldyAoVGVzdFVJRGVsZWdhdGVFeHRy
YXMpCiAtIChOU1N0cmluZyAqKV90ZXN0X3dhaXRGb3JBbGVydDsKKy0gKHZvaWQpX3Rlc3Rfd2Fp
dEZvckluc3BlY3RvclRvU2hvdzsKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFVJRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RVSURlbGVnYXRlLm1tCmluZGV4IDk5MzhjMzZmMDE5ZTQ2NjFlZmJjODlhM2FkN2NjZDhhODIx
OWRiOWUuLjljNTJmZTZlYTQ2NzZmZjM5ZjFlOWIxZjgxYjU2MWQyNGY1ZWJkZTkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQpAQCAtMzAsNyArMzAsOSBA
QAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CiAjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAKLUBpbXBsZW1lbnRhdGlvbiBUZXN0VUlEZWxlZ2F0ZQorQGlt
cGxlbWVudGF0aW9uIFRlc3RVSURlbGVnYXRlIHsKKyAgICBCT09MIF9zaG93ZWRJbnNwZWN0b3I7
Cit9CiAKIC0gKFdLV2ViVmlldyAqKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY3JlYXRl
V2ViVmlld1dpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmln
dXJhdGlvbiBmb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0
aW9uQWN0aW9uIHdpbmRvd0ZlYXR1cmVzOihXS1dpbmRvd0ZlYXR1cmVzICopd2luZG93RmVhdHVy
ZXMKIHsKQEAgLTgxLDYgKzgzLDE3IEBACiAgICAgcmV0dXJuIHJlc3VsdC5hdXRvcmVsZWFzZSgp
OwogfQogCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEF0dGFjaExv
Y2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKK3sKKyAgICBfc2hvd2VkSW5z
cGVjdG9yID0gWUVTOworfQorCistICh2b2lkKXdhaXRGb3JJbnNwZWN0b3JUb1Nob3cKK3sKKyAg
ICB3aGlsZSAoIV9zaG93ZWRJbnNwZWN0b3IpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnNwaW5SdW5Mb29wKCk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAo
VGVzdFVJRGVsZWdhdGVFeHRyYXMpCkBAIC05NSw0ICsxMDgsMTMgQEAKICAgICByZXR1cm4gYWxl
cnQ7CiB9CiAKKy0gKHZvaWQpX3Rlc3Rfd2FpdEZvckluc3BlY3RvclRvU2hvdworeworICAgIEVY
UEVDVF9GQUxTRShzZWxmLlVJRGVsZWdhdGUpOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0
TlMoW1Rlc3RVSURlbGVnYXRlIG5ld10pOworICAgIHNlbGYuVUlEZWxlZ2F0ZSA9IHVpRGVsZWdh
dGUuZ2V0KCk7CisgICAgW3VpRGVsZWdhdGUgd2FpdEZvckluc3BlY3RvclRvU2hvd107CisgICAg
c2VsZi5VSURlbGVnYXRlID0gbmlsOworfQorCiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440126</attachid>
            <date>2021-10-04 17:25:01 -0700</date>
            <delta_ts>2021-10-04 17:41:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231060-20211004172500.patch</filename>
            <type>text/plain</type>
            <size>61764</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE2NTcyNDhjYjJjMGVhMjZl
NjIzYWRmZmE3Y2UwMTIzYTYxODg0YTIuLjVlNWQ0NGVlM2Q4MTZlMzBmZjMxMjBjOTEzNWU1OWI3
MzQxNTNmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMjEtMTAtMDQgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
bWlzc2luZyBmdW5jdGlvbnMgaW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA2MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBk
ZWJ1ZyBtb2RlIGluIHRoZSBkYWVtb24gaWYgYW55IGNvbm5lY3RlZCBjbGllbnRzIGhhdmUgZGVi
dWcgbW9kZSBlbmFibGVkLgorICAgICAgICBCcm9hZGNhc3QgZGVidWcgbWVzc2FnZXMgdG8gYWxs
IGNsaWVudHMsIHdoaWNoIHdpbGwgdGhlbiBicm9hZGNhc3QgdGhlbSB0byBhbGwgd2ViIHByb2Nl
c3Nlcy4KKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IHRoYXQgdHVybnMgaXQgb24gdGhlbiBvZmYg
YW5kIGNoZWNrcyB0aGF0IHRoZSBkZWJ1ZyBtZXNzYWdlcyBtYWtlIGl0IGFsbCB0aGUgd2F5IHRv
IHRoZSBpbnNwZWN0b3IuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1hbmFnZXJPclByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNv
bm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjpDb25uZWN0aW9uVG9NYWNoU2VydmljZSk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U6OnNlbmQgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjpzZW5kV2l0aFJlcGx5
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpzZW5kIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UENNOjpDb25uZWN0aW9uOjpnZXQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGllbnQ6OmJyb2FkY2FzdENvbnNv
bGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGllbnQ6OmRlYnVnTW9k
ZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2V0RGVidWdNb2RlSXNFbmFi
bGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJ
bnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006Om1lc3NhZ2VUeXBlU2VuZHNSZXBs
eSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6aGFuZGxlUENNTWVzc2FnZVNldERlYnVnTW9kZUlz
RW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6ZGVjb2RlTWVzc2FnZUFuZFNlbmRUb01h
bmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6
Ok1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzZXRE
ZWJ1Z01vZGVJc0VuYWJsZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5Lmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uQ29jb2EubW06IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tLgorICAgICAgICAoV2Vi
S2l0OjpQQ006OkNvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjppbml0aWFsaXplQ29ubmVjdGlvbklm
TmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uVG9NYWNoU2Vy
dmljZTo6c2VuZERlYnVnTW9kZUlzRW5hYmxlZE1lc3NhZ2VJZk5lY2Vzc2FyeSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U6OmNoZWNrRm9yRGVi
dWdNZXNzYWdlQnJvYWRjYXN0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0
aW9uOjpzZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpzZW5k
V2l0aFJlcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uVG9NYWNo
U2VydmljZTo6c2VuZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvblRv
TWFjaFNlcnZpY2U6OnNlbmRXaXRoUmVwbHkgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9FbnRy
eVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25Db25uZWN0aW9uU2V0Lmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmguCisgICAgICAgICogU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkNvbm5lY3Rpb25T
ZXQubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNvbm5lY3Rpb25TZXQ6
OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGFlbW9uQ29ubmVjdGlvblNldDo6
YWRkKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25Db25uZWN0aW9uU2V0OjpyZW1vdmUp
OgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNvbm5lY3Rpb25TZXQ6OnNldENvbm5lY3Rl
ZE5ldHdvcmtQcm9jZXNzSGFzRGVidWdNb2RlRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6RGFlbW9uQ29ubmVjdGlvblNldDo6ZGVidWdNb2RlRW5hYmxlZCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGFlbW9uQ29ubmVjdGlvblNldDo6YnJvYWRjYXN0Q29uc29sZU1lc3Nh
Z2UpOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9Q
Q01EYWVtb25FbnRyeVBvaW50Lm1tOgorICAgICAgICAoV2ViS2l0Ojpjb25uZWN0aW9uRXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6c3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2VydmljZUNv
bm5lY3Rpb25zKToKKyAgICAgICAgKFdlYktpdDo6cGVlcnMpOiBEZWxldGVkLgorICAgICAgICAq
IFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkRm9yVGVzdGluZzpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0xMC0wNCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEVuYWJs
ZSBQQ00gZGVidWcgbW9kZSBwZXIgV2Vic2l0ZURhdGFTdG9yZSBpbnN0ZWFkIG9mIHByb2Nlc3Mt
Z2xvYmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwCmluZGV4IGNkNWJhZTIyNWVkMTZjM2M4MmVkOWIwNWI5NThkOTUxMzFlMDJiZjYuLmY5NTdm
YmFmYjRjNjUyODBjY2Y2NTQ3NjI4ZjUyZDliODViNGVhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0
YXRpYyBTdHJpbmcgcGNtU3RvcmVEaXJlY3RvcnkoY29uc3QgTmV0d29ya1Nlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFN0cmluZyYgcmVzCiBzdGF0aWMgVW5pcXVlUmVmPFBDTTo6TWFuYWdlckludGVy
ZmFjZT4gbWFuYWdlck9yUHJveHkoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBOZXR3
b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGlmICghcGFyYW1ldGVycy5wY21NYWNoU2Vy
dmljZU5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxQQ006Ok1h
bmFnZXJQcm94eT4ocGFyYW1ldGVycy5wY21NYWNoU2VydmljZU5hbWUpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJQcm94eT4ocGFyYW1ldGVycy5wY21NYWNoU2Vy
dmljZU5hbWUsIG5ldHdvcmtTZXNzaW9uKTsKICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGllbnRJbXBs
PihuZXR3b3JrU2Vzc2lvbiwgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9yeShuZXR3
b3JrU2Vzc2lvbiwgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5k
aXJlY3RvcnksIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSk7CiB9CiAKQEAgLTQyNyw5ICs0
MjcsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERl
YnVnTW9kZShib29sIGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkID0gZW5hYmxlZDsKLQotICAgIGF1dG8gbWVz
c2FnZSA9IGVuYWJsZWQgPyAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFR1cm5lZCBEZWJ1
ZyBNb2RlIG9uLiJfcyA6ICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHVybmVkIERlYnVn
IE1vZGUgb2ZmLiJfczsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5icm9hZGNhc3RDb25zb2xlTWVz
c2FnZShzZXNzaW9uSUQoKSwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
IE1lc3NhZ2VMZXZlbDo6SW5mbywgbWVzc2FnZSk7CisgICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC0+c2V0RGVidWdNb2RlSXNFbmFibGVkKGVuYWJsZWQpOwogfQogCiB2b2lkIE5ldHdvcmtT
ZXNzaW9uOjpmaXJlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVz
dGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggNjUwMjlhNjgzMmJkZWRhMWZk
MGE0ZTFhM2ZhYTljNzFlY2UzNWNlNi4uOWU4ZjViYjE4M2MwMWQ2OTA0YWUwZWVlMWZjNjlhNDNh
ZWYxZWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmNwcApAQCAtMzIsMTkgKzMyLDE4IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgUENNIHsKIAotI2lmICFQTEFURk9STShD
T0NPQSkKK0Nvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjpDb25uZWN0aW9uVG9NYWNoU2VydmljZShD
U3RyaW5nJiYgbWFjaFNlcnZpY2VOYW1lLCBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24p
CisgICAgOiBtX21hY2hTZXJ2aWNlTmFtZShXVEZNb3ZlKG1hY2hTZXJ2aWNlTmFtZSkpCisgICAg
LCBtX25ldHdvcmtTZXNzaW9uKG1ha2VXZWFrUHRyKG5ldHdvcmtTZXNzaW9uKSkgeyB9CiAKLUNv
bm5lY3Rpb246OkNvbm5lY3Rpb24oQ1N0cmluZyYmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19CisjaWYgIVBMQVRGT1JNKENPQ09BKQogCi12b2lkIENvbm5lY3Rpb246OnNlbmQoTWVzc2Fn
ZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYpIGNvbnN0Cit2b2lkIENvbm5lY3Rpb25Ub01hY2hTZXJ2
aWNlOjpzZW5kKE1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmKSBjb25zdAogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseShNZXNz
YWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVk
TWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3ZvaWQgQ29ubmVjdGlvblRv
TWFjaFNlcnZpY2U6OnNlbmRXaXRoUmVwbHkoTWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgKaW5kZXggNDQyZjQ4NDI1ZDY0OWQ5ZGQ2
MzZmNzM3NmY2ZGM4MzgxMzgzZmIyOS4uN2U5ZWZiYWU5N2EzYzExNzgwODA1Y2QwM2M0MDY5M2Qw
NzAzY2ZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oCkBAIC0yOCwxNCArMjgsMTcgQEAKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJ
Lmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIE5ldHdvcmtTZXNzaW9u
OworCiBuYW1lc3BhY2UgUENNIHsKIAogZW51bSBjbGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3Q7
CkBAIC00MywxOCArNDYsMzQgQEAgdXNpbmcgRW5jb2RlZE1lc3NhZ2UgPSBWZWN0b3I8dWludDhf
dD47CiAKIGNsYXNzIENvbm5lY3Rpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q29ubmVjdGlv
bj4gewogcHVibGljOgotICAgIGV4cGxpY2l0IENvbm5lY3Rpb24oQ1N0cmluZyYmIG1hY2hTZXJ2
aWNlTmFtZSk7CisgICAgQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBleHBsaWNpdCBDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikK
KyAgICAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikgeyB9CisgICAgeHBjX2Nvbm5lY3Rp
b25fdCBnZXQoKSBjb25zdCB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KKyAgICB2b2lk
IHNlbmQoeHBjX29iamVjdF90KSBjb25zdDsKKyAgICB2b2lkIHNlbmRXaXRoUmVwbHkoeHBjX29i
amVjdF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHhwY19vYmplY3RfdCk+JiYpIGNvbnN0Owor
cHJvdGVjdGVkOgorICAgIG11dGFibGUgUmV0YWluUHRyPHhwY19jb25uZWN0aW9uX3Q+IG1fY29u
bmVjdGlvbjsKKyNlbmRpZgorfTsKKworY2xhc3MgQ29ubmVjdGlvblRvTWFjaFNlcnZpY2UgOiBw
dWJsaWMgQ29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgQ29ubmVjdGlvblRvTWFj
aFNlcnZpY2UoQ1N0cmluZyYmIG1hY2hTZXJ2aWNlTmFtZSwgTmV0d29ya1Nlc3Npb24mKTsKIAog
ICAgIHZvaWQgc2VuZChNZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJikgY29uc3Q7CiAgICAg
dm9pZCBzZW5kV2l0aFJlcGx5KE1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYpPiYmKSBjb25zdDsKIAogcHJpdmF0ZToK
LSNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVk
ZWQoKSBjb25zdDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIGNoZWNrRm9yRGVidWdN
ZXNzYWdlQnJvYWRjYXN0KHhwY19vYmplY3RfdCkgY29uc3Q7CisjZW5kaWYKKyAgICB2b2lkIHNl
bmREZWJ1Z01vZGVJc0VuYWJsZWRNZXNzYWdlSWZOZWNlc3NhcnkoKSBjb25zdDsKIAogICAgIGNv
bnN0IENTdHJpbmcgbV9tYWNoU2VydmljZU5hbWU7Ci0gICAgbXV0YWJsZSBPU09iamVjdFB0cjx4
cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5lY3Rpb247Ci0jZW5kaWYKKyAgICBXZWFrUHRyPE5ldHdv
cmtTZXNzaW9uPiBtX25ldHdvcmtTZXNzaW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgUENNCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwCmluZGV4IDM3M2U1MWJlNzBmMGM2ZTkyMzQ4NGNi
NmZkZGU1OTU4YmYyZWI1OGQuLmFkYTUyNTAyMGFiYTFmYWJlZjExMjU0NGM0ZWExMWEzZDZkZDJm
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuY3BwCkBAIC0yNiwxNSArMjYsMjIgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
ZW1vbkNsaWVudC5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2lm
IFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIlBDTURhZW1vbkNvbm5lY3Rpb25TZXQuaCIKKyNl
bmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFBDTSB7CiAKLXZvaWQgRGFl
bW9uQ2xpZW50Ojpicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJikKK3ZvaWQgRGFlbW9uQ2xpZW50Ojpicm9hZGNhc3RDb25zb2xlTWVzc2FnZShK
U0M6Ok1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgRGFlbW9uQ29ubmVjdGlv
blNldDo6c2luZ2xldG9uKCkuYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobGV2ZWwsIG1lc3NhZ2Up
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obGV2ZWwpOworICAgIFVOVVNFRF9QQVJBTShtZXNz
YWdlKTsKKyNlbmRpZgogfQogCiBib29sIERhZW1vbkNsaWVudDo6ZmVhdHVyZUVuYWJsZWQoKSBj
b25zdApAQCAtNDQsOCArNTEsMTEgQEAgYm9vbCBEYWVtb25DbGllbnQ6OmZlYXR1cmVFbmFibGVk
KCkgY29uc3QKIAogYm9vbCBEYWVtb25DbGllbnQ6OmRlYnVnTW9kZUVuYWJsZWQoKSBjb25zdAog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgcmV0dXJu
IERhZW1vbkNvbm5lY3Rpb25TZXQ6OnNpbmdsZXRvbigpLmRlYnVnTW9kZUVuYWJsZWQoKTsKKyNl
bHNlCiAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBDTQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXIuY3BwCmluZGV4IGY0NTEzYTE3ODQ4MWFmZDAxYzRkMjM4YTA0ZDJmZDdk
NGQ2NDk2NGUuLmI4MDdmYmZkMDgzZjZhZjM3ZGY3MzU4ODQxYTlmYTNjOGIwYTNhN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5jcHAKQEAgLTIyNyw2ICsyMjcsMTYgQEAgdm9pZCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI6Om1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdh
Y3lTdG8KICAgICBzdG9yZSgpLmluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUo
bWVhc3VyZW1lbnQpLCB0eXBlLCBbXSB7IH0pOwogfQogCit2b2lkIFByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlcjo6c2V0RGVidWdNb2RlSXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAg
ICAvLyBUaGlzIGRvZXNuJ3QgbWFpbnRhaW4gc3RhdGUsIGl0IGp1c3QgYnJvYWRjYXN0cyBhIG1l
c3NhZ2Ugd2hlbiBkZWJ1ZyBtb2RlIGVuYWJsZWQgY2hhbmdlcy4KKyAgICAvLyBUaGUgc3RhdGUg
aXMgZWl0aGVyIHN0b3JlZCBpbiBOZXR3b3JrU2Vzc2lvbiB3aGVuIG5vdCB1c2luZyB0aGUgZGFl
bW9uCisgICAgLy8gb3IgaW4gRGFlbW9uQ29ubmVjdGlvblNldCBwZXIgY29ubmVjdGlvbiB3aGVu
IHVzaW5nIHRoZSBkYWVtb24gdG8gbm90IGhhdmUgZ2xvYmFsIHN0YXRlLgorCisgICAgYXV0byBt
ZXNzYWdlID0gZW5hYmxlZCA/ICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHVybmVkIERl
YnVnIE1vZGUgb24uIl9zIDogIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUdXJuZWQgRGVi
dWcgTW9kZSBvZmYuIl9zOworICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShN
ZXNzYWdlTGV2ZWw6OkluZm8sIG1lc3NhZ2UpOworfQorCiB2b2lkIFByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlcjo6aGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYm
IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiByZWRpcmVjdERvbWFpbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
VVJMLCBjb25zdCBBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXImIGFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIu
aAppbmRleCBiZWQwYTM2Y2ZjODBjNDkxNWJmMjY5MWUxOWJiNmRmNWNiODNkZGE5Li4xOGUzNGNk
OTY2ZTU1Mjg0ZTQ3Y2I5OTZkNDY2NGY3MmMzY2Y3MzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKQEAg
LTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFs
OwogICAgIHZvaWQgbWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3Jh
Z2UoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblR5cGUpIGZpbmFsOworICAgIHZvaWQgc2V0RGVidWdNb2RlSXNFbmFibGVkKGJvb2wp
IGZpbmFsOwogCiAgICAgdm9pZCB0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcpPiYmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldE92ZXJyaWRlVGltZXJG
b3JUZXN0aW5nKGJvb2wgdmFsdWUpIGZpbmFsIHsgbV9pc1J1bm5pbmdUZXN0ID0gdmFsdWU7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNwcAppbmRleCBlNDIyOTJmZGNhNjVh
NDFlOTc5ZTJiZDE2ZTFhMTdjYTk2Y2UyMjkwLi42ODM0YmFjYTE3NmY0N2Q2ZGM0ZWVlMGY2ODgz
YTZhNWI2MzdmYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVy
ZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
SW50ZXJmYWNlLmgiCiAKICNpbmNsdWRlICJIYW5kbGVNZXNzYWdlLmgiCisjaW5jbHVkZSAiUENN
RGFlbW9uQ29ubmVjdGlvblNldC5oIgogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWNvZGVyLmgiCkBAIC02
OSw2ICs3MCwxMCBAQCBGVU5DVElPTihtaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9t
TGVnYWN5U3RvcmFnZSkKIEFSR1VNRU5UUyhXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpCiBFTkQKIAorRlVOQ1RJ
T04oc2V0RGVidWdNb2RlSXNFbmFibGVkKQorQVJHVU1FTlRTKGJvb2wpCitFTkQKKwogRlVOQ1RJ
T04odG9TdHJpbmdGb3JUZXN0aW5nKQogQVJHVU1FTlRTKCkKIFJFUExZKFN0cmluZykKQEAgLTE0
Nyw2ICsxNTIsNyBAQCBib29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSBtZXNz
YWdlVHlwZSkKICAgICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7CiAgICAgY2FzZSBNZXNzYWdlVHlw
ZTo6SGFuZGxlQXR0cmlidXRpb246CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6TWlncmF0ZVByaXZh
dGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2U6CisgICAgY2FzZSBNZXNzYWdlVHlw
ZTo6U2V0RGVidWdNb2RlSXNFbmFibGVkOgogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNldE92ZXJy
aWRlVGltZXJGb3JUZXN0aW5nOgogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNldFRva2VuUHVibGlj
S2V5VVJMRm9yVGVzdGluZzoKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRUb2tlblNpZ25hdHVy
ZVVSTEZvclRlc3Rpbmc6CkBAIC0yMDAsNiArMjA2LDIxIEBAIHZvaWQgaGFuZGxlUENNTWVzc2Fn
ZShQQ006OkVuY29kZWRNZXNzYWdlJiYgZW5jb2RlZE1lc3NhZ2UpCiAgICAgSVBDOjpjYWxsTWVt
YmVyRnVuY3Rpb24oV1RGTW92ZSgqYXJndW1lbnRzKSwgJmRhZW1vbk1hbmFnZXIoKSwgSW5mbzo6
TWVtYmVyRnVuY3Rpb24pOwogfQogCitzdGF0aWMgdm9pZCBoYW5kbGVQQ01NZXNzYWdlU2V0RGVi
dWdNb2RlSXNFbmFibGVkKGNvbnN0IENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBDTTo6RW5jb2Rl
ZE1lc3NhZ2UmJiBlbmNvZGVkTWVzc2FnZSkKK3sKKyAgICBQQ006OkRlY29kZXIgZGVjb2RlcihX
VEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBlbmFibGVk
OworICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKKyAgICBpZiAoVU5MSUtFTFkoIWVuYWJsZWQpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBjb25uZWN0aW9uU2V0ID0gRGFlbW9uQ29ubmVj
dGlvblNldDo6c2luZ2xldG9uKCk7CisgICAgYm9vbCBkZWJ1Z01vZGVXYXNFbmFibGVkID0gY29u
bmVjdGlvblNldC5kZWJ1Z01vZGVFbmFibGVkKCk7CisgICAgY29ubmVjdGlvblNldC5zZXRDb25u
ZWN0ZWROZXR3b3JrUHJvY2Vzc0hhc0RlYnVnTW9kZUVuYWJsZWQoY29ubmVjdGlvbiwgKmVuYWJs
ZWQpOworICAgIGlmIChkZWJ1Z01vZGVXYXNFbmFibGVkICE9IGNvbm5lY3Rpb25TZXQuZGVidWdN
b2RlRW5hYmxlZCgpKQorICAgICAgICBkYWVtb25NYW5hZ2VyKCkuc2V0RGVidWdNb2RlSXNFbmFi
bGVkKCplbmFibGVkKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgSW5mbz4KIHZvaWQgaGFuZGxl
UENNTWVzc2FnZVdpdGhSZXBseShQQ006OkVuY29kZWRNZXNzYWdlJiYgZW5jb2RlZE1lc3NhZ2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUENNOjpFbmNvZGVkTWVzc2FnZSYmKT4mJiByZXBseVNl
bmRlcikKIHsKQEAgLTIxNyw3ICsyMzgsNyBAQCB2b2lkIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVw
bHkoUENNOjpFbmNvZGVkTWVzc2FnZSYmIGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSAogICAg
IElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCAmZGFlbW9uTWFuYWdlcigpLCBJbmZvOjpNZW1iZXJGdW5jdGlvbik7
CiB9CiAKLXZvaWQgZGVjb2RlTWVzc2FnZUFuZFNlbmRUb01hbmFnZXIoTWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIFZlY3Rvcjx1aW50OF90PiYmIGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiByZXBseVNlbmRlcikKK3ZvaWQgZGVjb2Rl
TWVzc2FnZUFuZFNlbmRUb01hbmFnZXIoY29uc3QgQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgTWVz
c2FnZVR5cGUgbWVzc2FnZVR5cGUsIFZlY3Rvcjx1aW50OF90PiYmIGVuY29kZWRNZXNzYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiByZXBseVNlbmRlcikK
IHsKICAgICBBU1NFUlQobWVzc2FnZVR5cGVTZW5kc1JlcGx5KG1lc3NhZ2VUeXBlKSA9PSAhIXJl
cGx5U2VuZGVyKTsKICAgICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7CkBAIC0yMzMsNiArMjU0LDkg
QEAgdm9pZCBkZWNvZGVNZXNzYWdlQW5kU2VuZFRvTWFuYWdlcihNZXNzYWdlVHlwZSBtZXNzYWdl
VHlwZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZW4KICAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OkNs
ZWFyRm9yUmVnaXN0cmFibGVEb21haW46CiAgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVw
bHk8TWVzc2FnZUluZm86OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4+KFdURk1vdmUoZW5jb2Rl
ZE1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUENNOjpNZXNzYWdlVHlwZTo6U2V0RGVidWdNb2RlSXNFbmFibGVkOgorICAgICAgICBoYW5k
bGVQQ01NZXNzYWdlU2V0RGVidWdNb2RlSXNFbmFibGVkKGNvbm5lY3Rpb24sIFdURk1vdmUoZW5j
b2RlZE1lc3NhZ2UpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBl
OjpNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZToKICAgICAg
ICAgaGFuZGxlUENNTWVzc2FnZTxNZXNzYWdlSW5mbzo6bWlncmF0ZVByaXZhdGVDbGlja01lYXN1
cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2U+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFj
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRlcmZhY2UuaAppbmRleCBkZGZlZDNl
YjdjYzFlNDYwN2E0ODM1ZmU0N2ViYzVmYWMwZDlhYzJlLi5jZjgwYzQ0Mjk2OTJlOTA1MjU1NjNm
N2JiNTIwNDlhMjRiMGM0Yzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
ckludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgK
QEAgLTQxLDYgKzQxLDggQEAgY2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOwog
CiBuYW1lc3BhY2UgUENNIHsKIAorY2xhc3MgQ29ubmVjdGlvbjsKKwogY2xhc3MgTWFuYWdlcklu
dGVyZmFjZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWFuYWdlckludGVyZmFjZSgpIHsgfTsK
QEAgLTU3LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGb3JSZWdp
c3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBtaWdyYXRlUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXREZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHRv
U3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2
YWx1ZSkgPSAwOwpAQCAtNzUsNiArNzgsOSBAQCBwdWJsaWM6CiBjb25zdGV4cHIgY29uc3QgY2hh
ciogcHJvdG9jb2xWZXJzaW9uS2V5IHsgInZlcnNpb24iIH07CiBjb25zdGV4cHIgdWludDY0X3Qg
cHJvdG9jb2xWZXJzaW9uVmFsdWUgeyAxIH07CiAKK2NvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90
b2NvbERlYnVnTWVzc2FnZUxldmVsS2V5IHsgImRlYnVnIG1lc3NhZ2UgbGV2ZWwiIH07Citjb25z
dGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xEZWJ1Z01lc3NhZ2VLZXkgeyAiZGVidWcgbWVzc2Fn
ZSIgfTsKKwogY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sTWVzc2FnZVR5cGVLZXkgeyAi
bWVzc2FnZSB0eXBlIiB9OwogZW51bSBjbGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3QgewogICAg
IFN0b3JlVW5hdHRyaWJ1dGVkLApAQCAtODIsNiArODgsNyBAQCBlbnVtIGNsYXNzIE1lc3NhZ2VU
eXBlIDogdWludDhfdCB7CiAgICAgQ2xlYXIsCiAgICAgQ2xlYXJGb3JSZWdpc3RyYWJsZURvbWFp
biwKICAgICBNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSwK
KyAgICBTZXREZWJ1Z01vZGVJc0VuYWJsZWQsCiAgICAgVG9TdHJpbmdGb3JUZXN0aW5nLAogICAg
IFNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nLAogICAgIFNldFRva2VuUHVibGljS2V5VVJMRm9y
VGVzdGluZywKQEAgLTk5LDcgKzEwNiw3IEBAIGVudW0gY2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50
OF90IHsKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5IHsg
ImVuY29kZWQgbWVzc2FnZSIgfTsKIHVzaW5nIEVuY29kZWRNZXNzYWdlID0gVmVjdG9yPHVpbnQ4
X3Q+OwogCi12b2lkIGRlY29kZU1lc3NhZ2VBbmRTZW5kVG9NYW5hZ2VyKE1lc3NhZ2VUeXBlLCBW
ZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1
aW50OF90PiYmKT4mJik7Cit2b2lkIGRlY29kZU1lc3NhZ2VBbmRTZW5kVG9NYW5hZ2VyKGNvbnN0
IENvbm5lY3Rpb24mLCBNZXNzYWdlVHlwZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYpOwogYm9vbCBtZXNzYWdl
VHlwZVNlbmRzUmVwbHkoTWVzc2FnZVR5cGUpOwogCiB2b2lkIGluaXRpYWxpemVQQ01TdG9yYWdl
SW5EaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CkBAIC0xMTgsNiArMTI1LDcgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU+IHsKICAgICAgICAg
V2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpDbGVhciwKICAgICAgICAgV2ViS2l0OjpQQ006Ok1l
c3NhZ2VUeXBlOjpDbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluLAogICAgICAgICBXZWJLaXQ6OlBD
TTo6TWVzc2FnZVR5cGU6Ok1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lT
dG9yYWdlLAorICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlNldERlYnVnTW9kZUlz
RW5hYmxlZCwKICAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpUb1N0cmluZ0ZvclRl
c3RpbmcsCiAgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6U2V0T3ZlcnJpZGVUaW1l
ckZvclRlc3RpbmcsCiAgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6U2V0VG9rZW5Q
dWJsaWNLZXlVUkxGb3JUZXN0aW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcAppbmRl
eCA0MzJmMjVhNjg3MGE3NTIyYzAwMTRkNWU3ZTQwODA4N2ExOTRkNDFkLi5hMTg3Nzg0ZDg2ZmEx
MzkwMjA2MzkxYWZkZDA5N2QyMGI3YzFmZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5
LmNwcApAQCAtNzIsOCArNzIsOCBAQCB2b2lkIE1hbmFnZXJQcm94eTo6c2VuZE1lc3NhZ2VXaXRo
UmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXBseUFyZ3MuLi4pPiYmCiAgICAgfSk7CiB9
CiAKLU1hbmFnZXJQcm94eTo6TWFuYWdlclByb3h5KGNvbnN0IFN0cmluZyYgbWFjaFNlcnZpY2VO
YW1lKQotICAgIDogbV9jb25uZWN0aW9uKG1hY2hTZXJ2aWNlTmFtZS51dGY4KCkpIHsgfQorTWFu
YWdlclByb3h5OjpNYW5hZ2VyUHJveHkoY29uc3QgU3RyaW5nJiBtYWNoU2VydmljZU5hbWUsIE5l
dHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbikKKyAgICA6IG1fY29ubmVjdGlvbihtYWNoU2Vy
dmljZU5hbWUudXRmOCgpLCBuZXR3b3JrU2Vzc2lvbikgeyB9CiAKIHZvaWQgTWFuYWdlclByb3h5
OjpzdG9yZVVuYXR0cmlidXRlZChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIHBj
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpAQCAt
OTUsNiArOTUsMTEgQEAgdm9pZCBNYW5hZ2VyUHJveHk6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21h
aW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGQKICAgICBzZW5kTWVzc2FnZVdp
dGhSZXBseTxNZXNzYWdlVHlwZTo6Q2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbj4oV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGRvbWFpbik7CiB9CiAKK3ZvaWQgTWFuYWdlclByb3h5OjpzZXRE
ZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3Nh
Z2VUeXBlOjpTZXREZWJ1Z01vZGVJc0VuYWJsZWQ+KGVuYWJsZWQpOworfQorCiB2b2lkIE1hbmFn
ZXJQcm94eTo6bWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2Uo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBwY20sIFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlIHR5cGUpCiB7CiAgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5
cGU6Ok1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlPihwY20s
IHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oCmluZGV4IGY0ZGRjMWNjYjFkNGMxYmM3
YmEwNjQyNmM5NGY1YmJjYTYwNDRjMTYuLmY5MTE2MTViNTJjOWU4YTI4MGQyN2ExOWU2ZjczMmM4
N2Q0YzExMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmgKQEAgLTMyLDEyICszMiwxNCBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgTmV0d29ya1Nlc3Npb247CisKIG5hbWVz
cGFjZSBQQ00gewogCiBjbGFzcyBNYW5hZ2VyUHJveHkgOiBwdWJsaWMgTWFuYWdlckludGVyZmFj
ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTWFuYWdlclBy
b3h5KGNvbnN0IFN0cmluZyYgbWFjaFNlcnZpY2VOYW1lKTsKKyAgICBNYW5hZ2VyUHJveHkoY29u
c3QgU3RyaW5nJiBtYWNoU2VydmljZU5hbWUsIE5ldHdvcmtTZXNzaW9uJik7CiAKICAgICB1c2lu
ZyBBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIgPSBTdHJpbmc7CiAKQEAgLTQ2LDYgKzQ4LDcg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBm
aW5hbDsKICAgICB2b2lkIGNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwog
ICAgIHZvaWQgbWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2Uo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGUpIGZpbmFsOworICAgIHZvaWQgc2V0RGVidWdNb2RlSXNFbmFibGVk
KGJvb2wpIGZpbmFsOwogCiAgICAgdm9pZCB0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcpPiYmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldE92ZXJyaWRl
VGltZXJGb3JUZXN0aW5nKGJvb2wpIGZpbmFsOwpAQCAtNjYsNyArNjksNyBAQCBwcml2YXRlOgog
ICAgIHRlbXBsYXRlPE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzLCB0
eXBlbmFtZS4uLiBSZXBseUFyZ3M+CiAgICAgdm9pZCBzZW5kTWVzc2FnZVdpdGhSZXBseShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlcGx5QXJncy4uLik+JiYsIEFyZ3MmJi4uLikgY29uc3Q7CiAK
LSAgICBDb25uZWN0aW9uIG1fY29ubmVjdGlvbjsKKyAgICBDb25uZWN0aW9uVG9NYWNoU2Vydmlj
ZSBtX2Nvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBQQ00KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2Ev
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50Q29ubmVjdGlvbkNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjczNTViZjIwMzAxMDUz
YWYxM2FkOTIwYzg4N2U5ZjMwN2JiYTVkYjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50Q29ubmVjdGlvbkNvY29hLm1tCkBAIC0wLDAgKzEsMTQwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENvbm5lY3Rpb24uaCIKKworI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNv
ZGVyLmgiCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oIgor
I2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitu
YW1lc3BhY2UgUENNIHsKKwordm9pZCBDb25uZWN0aW9uVG9NYWNoU2VydmljZTo6aW5pdGlhbGl6
ZUNvbm5lY3Rpb25JZk5lZWRlZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fY29ubmVjdGlvbikKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fY29ubmVjdGlvbiA9IGFkb3B0TlMoeHBjX2Nvbm5lY3Rpb25f
Y3JlYXRlX21hY2hfc2VydmljZShtX21hY2hTZXJ2aWNlTmFtZS5kYXRhKCksIGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIDApKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxl
cihtX2Nvbm5lY3Rpb24uZ2V0KCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oeHBj
X29iamVjdF90IGV2ZW50KSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGlmIChldmVudCA9PSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElE
KQorICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gY29ubmVjdCB0byBtYWNoIHNl
cnZpY2UgJXMsIGxpa2VseSBiZWNhdXNlIGl0IGlzIG5vdCByZWdpc3RlcmVkIHdpdGggbGF1bmNo
ZCIsIHdlYWtUaGlzLT5tX21hY2hTZXJ2aWNlTmFtZS5kYXRhKCkpOworICAgICAgICBpZiAoZXZl
bnQgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5URVJSVVBURUQpIHsKKyAgICAgICAgICAgIC8v
IERhZW1vbiBjcmFzaGVkLCB3ZSB3aWxsIG5lZWQgdG8gbWFrZSBhIG5ldyBjb25uZWN0aW9uIHRv
IGEgbmV3IGluc3RhbmNlIG9mIHRoZSBkYWVtb24uCisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9j
b25uZWN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICB3ZWFrVGhpcy0+Y2hlY2tG
b3JEZWJ1Z01lc3NhZ2VCcm9hZGNhc3QoZXZlbnQpOworICAgIH0pOworICAgIHhwY19jb25uZWN0
aW9uX2FjdGl2YXRlKG1fY29ubmVjdGlvbi5nZXQoKSk7CisKKyAgICBzZW5kRGVidWdNb2RlSXNF
bmFibGVkTWVzc2FnZUlmTmVjZXNzYXJ5KCk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvblRvTWFjaFNl
cnZpY2U6OnNlbmREZWJ1Z01vZGVJc0VuYWJsZWRNZXNzYWdlSWZOZWNlc3NhcnkoKSBjb25zdAor
eworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb24pOworICAgIGlmICghbV9uZXR3b3JrU2Vzc2lvbgor
ICAgICAgICB8fCBtX25ldHdvcmtTZXNzaW9uLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpCisg
ICAgICAgIHx8ICFtX25ldHdvcmtTZXNzaW9uLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVn
TW9kZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRW5jb2RlciBlbmNvZGVyOwor
ICAgIGVuY29kZXIuZW5jb2RlKHRydWUpOworICAgIHNlbmQoTWVzc2FnZVR5cGU6OlNldERlYnVn
TW9kZUlzRW5hYmxlZCwgZW5jb2Rlci50YWtlQnVmZmVyKCkpOworfQorCit2b2lkIENvbm5lY3Rp
b25Ub01hY2hTZXJ2aWNlOjpjaGVja0ZvckRlYnVnTWVzc2FnZUJyb2FkY2FzdCh4cGNfb2JqZWN0
X3QgcmVxdWVzdCkgY29uc3QKK3sKKyAgICBpZiAoeHBjX2dldF90eXBlKHJlcXVlc3QpICE9IFhQ
Q19UWVBFX0RJQ1RJT05BUlkpCisgICAgICAgIHJldHVybjsKKyAgICBjb25zdCBjaGFyKiBkZWJ1
Z01lc3NhZ2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKHJlcXVlc3QsIHByb3RvY29sRGVi
dWdNZXNzYWdlS2V5KTsKKyAgICBpZiAoIWRlYnVnTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGF1dG8gbWVzc2FnZUxldmVsID0gc3RhdGljX2Nhc3Q8SlNDOjpNZXNzYWdlTGV2ZWw+KHhw
Y19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xEZWJ1Z01lc3NhZ2VMZXZl
bEtleSkpOworICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbi5nZXQo
KTsKKyAgICBpZiAoIW5ldHdvcmtTZXNzaW9uKQorICAgICAgICByZXR1cm47CisgICAgbV9uZXR3
b3JrU2Vzc2lvbi0+bmV0d29ya1Byb2Nlc3MoKS5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShtX25l
dHdvcmtTZXNzaW9uLT5zZXNzaW9uSUQoKSwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsIG1lc3NhZ2VMZXZlbCwgU3RyaW5nOjpmcm9tVVRGOChkZWJ1Z01lc3NhZ2UpKTsK
K30KKworc3RhdGljIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gZGljdGlvbmFyeUZyb21NZXNz
YWdlKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmIG1lc3NhZ2UpCit7
CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVh
dGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIGFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2Fn
ZVRvRGljdGlvbmFyeShXVEZNb3ZlKG1lc3NhZ2UpLCBkaWN0aW9uYXJ5LmdldCgpKTsKKyAgICB4
cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnkuZ2V0KCksIHByb3RvY29sTWVzc2Fn
ZVR5cGVLZXksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtZXNzYWdlVHlwZSkpOworICAgIHJldHVy
biBkaWN0aW9uYXJ5OworfQorCit2b2lkIENvbm5lY3Rpb246OnNlbmQoeHBjX29iamVjdF90IG1l
c3NhZ2UpIGNvbnN0Cit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NF
UlQobV9jb25uZWN0aW9uLmdldCgpKTsKKyAgICBBU1NFUlQoeHBjX2dldF90eXBlKG1lc3NhZ2Up
ID09IFhQQ19UWVBFX0RJQ1RJT05BUlkpOworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2Fn
ZShtX2Nvbm5lY3Rpb24uZ2V0KCksIG1lc3NhZ2UpOworfQorCit2b2lkIENvbm5lY3Rpb246OnNl
bmRXaXRoUmVwbHkoeHBjX29iamVjdF90IG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
eHBjX29iamVjdF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworICAgIEFTU0VSVChtX2Nvbm5lY3Rpb24uZ2V0KCkpOworICAg
IEFTU0VSVCh4cGNfZ2V0X3R5cGUobWVzc2FnZSkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSk7Cisg
ICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlX3dpdGhfcmVwbHkobV9jb25uZWN0aW9uLmdl
dCgpLCBtZXNzYWdlLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICh4cGNfb2JqZWN0
X3QgcmVwbHkpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXBseSk7CisgICAgfSkuZ2V0KCkpOworfQorCit2
b2lkIENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjpzZW5kKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBl
LCBFbmNvZGVkTWVzc2FnZSYmIG1lc3NhZ2UpIGNvbnN0Cit7CisgICAgaW5pdGlhbGl6ZUNvbm5l
Y3Rpb25JZk5lZWRlZCgpOworICAgIENvbm5lY3Rpb246OnNlbmQoZGljdGlvbmFyeUZyb21NZXNz
YWdlKG1lc3NhZ2VUeXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKS5nZXQoKSk7Cit9CisKK3ZvaWQgQ29u
bmVjdGlvblRvTWFjaFNlcnZpY2U6OnNlbmRXaXRoUmVwbHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5
cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNv
ZGVkTWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworICAgIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsK
KworICAgIENvbm5lY3Rpb246OnNlbmRXaXRoUmVwbHkoZGljdGlvbmFyeUZyb21NZXNzYWdlKG1l
c3NhZ2VUeXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKS5nZXQoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICh4cGNfb2JqZWN0X3QgcmVwbHkpIG11dGFibGUg
eworICAgICAgICBpZiAoeHBjX2dldF90eXBlKHJlcGx5KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZ
KSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICB9CisgICAgICAgIGlmICh4cGNfZGlj
dGlvbmFyeV9nZXRfdWludDY0KHJlcGx5LCBwcm90b2NvbFZlcnNpb25LZXkpICE9IHByb3RvY29s
VmVyc2lvblZhbHVlKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICB9CisgICAgICAg
IHNpemVfdCBkYXRhU2l6ZSB7IDAgfTsKKyAgICAgICAgY29uc3Qgdm9pZCogZGF0YSA9IHhwY19k
aWN0aW9uYXJ5X2dldF9kYXRhKHJlcGx5LCBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCAmZGF0
YVNpemUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhKSwgZGF0YVNpemUgfSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFBDTQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxYzZlNmJmZTczMTUzOWVhMTE4NDM3M2E4Y2U2YmE1NWUyYTljOWI5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0KKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKLQotI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRYUENVdGlsaXRpZXMuaCIKLSNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotbmFtZXNwYWNlIFBDTSB7Ci0KLUNvbm5lY3Rpb246OkNvbm5l
Y3Rpb24oQ1N0cmluZyYmIG1hY2hTZXJ2aWNlTmFtZSkKLSAgICA6IG1fbWFjaFNlcnZpY2VOYW1l
KFdURk1vdmUobWFjaFNlcnZpY2VOYW1lKSkgeyB9Ci0KLXZvaWQgQ29ubmVjdGlvbjo6aW5pdGlh
bGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fY29ubmVjdGlvbikK
LSAgICAgICAgcmV0dXJuOwotICAgIG1fY29ubmVjdGlvbiA9IGFkb3B0T1NPYmplY3QoeHBjX2Nv
bm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShtX21hY2hTZXJ2aWNlTmFtZS5kYXRhKCksIGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIDApKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZl
bnRfaGFuZGxlcihtX2Nvbm5lY3Rpb24uZ2V0KCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKV0oeHBjX29iamVjdF90IGV2ZW50KSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChldmVudCA9PSBYUENfRVJST1JfQ09OTkVDVElP
Tl9JTlZBTElEKQotICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gY29ubmVjdCB0
byBtYWNoIHNlcnZpY2UgJXMsIGxpa2VseSBiZWNhdXNlIGl0IGlzIG5vdCByZWdpc3RlcmVkIHdp
dGggbGF1bmNoZCIsIHdlYWtUaGlzLT5tX21hY2hTZXJ2aWNlTmFtZS5kYXRhKCkpOwotICAgICAg
ICBpZiAoZXZlbnQgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5URVJSVVBURUQpIHsKLSAgICAg
ICAgICAgIC8vIERhZW1vbiBjcmFzaGVkLCB3ZSB3aWxsIG5lZWQgdG8gbWFrZSBhIG5ldyBjb25u
ZWN0aW9uIHRvIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBkYWVtb24uCi0gICAgICAgICAgICB3ZWFr
VGhpcy0+bV9jb25uZWN0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgfQotICAgIH0pOwotICAgIHhw
Y19jb25uZWN0aW9uX2FjdGl2YXRlKG1fY29ubmVjdGlvbi5nZXQoKSk7Ci19Ci0KLXN0YXRpYyBP
U09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IGRpY3Rpb25hcnlGcm9tTWVzc2FnZShNZXNzYWdlVHlw
ZSBtZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlKQotewotICAgIGF1dG8gZGlj
dGlvbmFyeSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51
bGxwdHIsIDApKTsKLSAgICBhZGRWZXJzaW9uQW5kRW5jb2RlZE1lc3NhZ2VUb0RpY3Rpb25hcnko
V1RGTW92ZShtZXNzYWdlKSwgZGljdGlvbmFyeS5nZXQoKSk7Ci0gICAgeHBjX2RpY3Rpb25hcnlf
c2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCBwcm90b2NvbE1lc3NhZ2VUeXBlS2V5LCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4obWVzc2FnZVR5cGUpKTsKLSAgICByZXR1cm4gZGljdGlvbmFyeTsK
LX0KLQotdm9pZCBDb25uZWN0aW9uOjpzZW5kKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBFbmNv
ZGVkTWVzc2FnZSYmIG1lc3NhZ2UpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKLSAgICBpbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCk7Ci0KLSAgICB4cGNfY29u
bmVjdGlvbl9zZW5kX21lc3NhZ2UobV9jb25uZWN0aW9uLmdldCgpLCBkaWN0aW9uYXJ5RnJvbU1l
c3NhZ2UobWVzc2FnZVR5cGUsIFdURk1vdmUobWVzc2FnZSkpLmdldCgpKTsKLX0KLQotdm9pZCBD
b25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBFbmNvZGVk
TWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2Um
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBpbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCk7Ci0KLSAgICBhdXRv
IGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UobWVzc2FnZVR5cGUsIFdURk1vdmUo
bWVzc2FnZSkpOwotICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZV93aXRoX3JlcGx5KG1f
Y29ubmVjdGlvbi5nZXQoKSwgZGljdGlvbmFyeS5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgbWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoeHBjX29iamVjdF90IHJlcGx5KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICAgICAgaWYgKHhwY19nZXRfdHlwZShyZXBseSkgIT0g
WFBDX1RZUEVfRElDVElPTkFSWSkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXBseSwgcHJvdG9jb2xWZXJz
aW9uS2V5KSAhPSBwcm90b2NvbFZlcnNpb25WYWx1ZSkgewotICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
LSAgICAgICAgfQotICAgICAgICBzaXplX3QgZGF0YVNpemUgeyAwIH07Ci0gICAgICAgIGNvbnN0
IHZvaWQqIGRhdGEgPSB4cGNfZGljdGlvbmFyeV9nZXRfZGF0YShyZXBseSwgcHJvdG9jb2xFbmNv
ZGVkTWVzc2FnZUtleSwgJmRhdGFTaXplKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFTaXplIH0pOwotICAgIH0pLmdl
dCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgUENNCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2Nv
YS9EYWVtb24vUENNRGFlbW9uQ29ubmVjdGlvblNldC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
RW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uQ29ubmVjdGlvblNldC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhlMTM0MjcwOGNjYWJmNWJkOTlkOTQxNDUyNWZkMDg0MjdmOWU5ZWMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L0NvY29hL0RhZW1vbi9QQ01EYWVtb25Db25uZWN0aW9uU2V0LmgKQEAgLTAsMCArMSw1OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJ
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworZW51bSBjbGFzcyBNZXNzYWdlTGV2ZWwgOiB1aW50OF90
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBQQ00geworCitjbGFzcyBDb25u
ZWN0aW9uOworCitjbGFzcyBEYWVtb25Db25uZWN0aW9uU2V0IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgRGFlbW9uQ29ubmVjdGlvblNldCYgc2luZ2xldG9uKCk7CisgICAgCisgICAgdm9pZCBhZGQo
eHBjX2Nvbm5lY3Rpb25fdCk7CisgICAgdm9pZCByZW1vdmUoeHBjX2Nvbm5lY3Rpb25fdCk7CisK
KyAgICB2b2lkIHNldENvbm5lY3RlZE5ldHdvcmtQcm9jZXNzSGFzRGVidWdNb2RlRW5hYmxlZChj
b25zdCBDb25uZWN0aW9uJiwgYm9vbCk7CisgICAgYm9vbCBkZWJ1Z01vZGVFbmFibGVkKCkgY29u
c3Q7CisgICAgdm9pZCBicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VMZXZlbCwg
Y29uc3QgU3RyaW5nJik7CisgICAgCitwcml2YXRlOgorICAgIGVudW0gY2xhc3MgRGVidWdNb2Rl
RW5hYmxlZCA6IGJvb2wgeyBObywgWWVzIH07CisgICAgSGFzaE1hcDxSZXRhaW5QdHI8eHBjX2Nv
bm5lY3Rpb25fdD4sIERlYnVnTW9kZUVuYWJsZWQ+IG1fY29ubmVjdGlvbnM7CisgICAgc2l6ZV90
IG1fY29ubmVjdGlvbnNXaXRoRGVidWdNb2RlRW5hYmxlZCB7IDAgfTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFBDTQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25Db25u
ZWN0aW9uU2V0Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9D
b2NvYS9EYWVtb24vUENNRGFlbW9uQ29ubmVjdGlvblNldC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzk3ZDZh
NDcxZDJjZWYxZGI5NmRhYmMxOGY1MzA3NDE3NzYwN2QwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFl
bW9uQ29ubmVjdGlvblNldC5tbQpAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJQQ01EYWVtb25Db25uZWN0aW9uU2V0LmgiCisKKyNpbXBv
cnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oIgorI2ltcG9ydCAiUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgiCisjaW1wb3J0IDx3dGYvT1NPYmpl
Y3RQdHIuaD4KKyNpbXBvcnQgPHd0Zi9SdW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
bmFtZXNwYWNlIFBDTSB7CisKK0RhZW1vbkNvbm5lY3Rpb25TZXQmIERhZW1vbkNvbm5lY3Rpb25T
ZXQ6OnNpbmdsZXRvbigpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGFlbW9uQ29ubmVjdGlvblNldD4gc2V0OworICAgIHJldHVy
biBzZXQuZ2V0KCk7Cit9CisgICAgCit2b2lkIERhZW1vbkNvbm5lY3Rpb25TZXQ6OmFkZCh4cGNf
Y29ubmVjdGlvbl90IGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb25zLmNv
bnRhaW5zKGNvbm5lY3Rpb24pKTsKKyAgICBtX2Nvbm5lY3Rpb25zLnNldChjb25uZWN0aW9uLCBE
ZWJ1Z01vZGVFbmFibGVkOjpObyk7Cit9CisKK3ZvaWQgRGFlbW9uQ29ubmVjdGlvblNldDo6cmVt
b3ZlKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKK3sKKyAgICBBU1NFUlQobV9jb25uZWN0
aW9ucy5jb250YWlucyhjb25uZWN0aW9uKSk7CisgICAgYXV0byBoYWREZWJ1Z01vZGVFbmFibGVk
ID0gbV9jb25uZWN0aW9ucy50YWtlKGNvbm5lY3Rpb24pOworICAgIGlmIChoYWREZWJ1Z01vZGVF
bmFibGVkID09IERlYnVnTW9kZUVuYWJsZWQ6OlllcykgeworICAgICAgICBBU1NFUlQobV9jb25u
ZWN0aW9uc1dpdGhEZWJ1Z01vZGVFbmFibGVkKTsKKyAgICAgICAgbV9jb25uZWN0aW9uc1dpdGhE
ZWJ1Z01vZGVFbmFibGVkLS07CisgICAgfQorfQorCit2b2lkIERhZW1vbkNvbm5lY3Rpb25TZXQ6
OnNldENvbm5lY3RlZE5ldHdvcmtQcm9jZXNzSGFzRGVidWdNb2RlRW5hYmxlZChjb25zdCBDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBib29sIGVuYWJsZWQpCit7CisgICAgQVNTRVJUKG1fY29ubmVj
dGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5nZXQoKSkpOworICAgIGJvb2wgb2xkVmFsdWUgPSBt
X2Nvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uLmdldCgpKSA9PSBEZWJ1Z01vZGVFbmFibGVkOjpZ
ZXM7CisgICAgaWYgKG9sZFZhbHVlID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChlbmFibGVkKSB7CisgICAgICAgIG1fY29ubmVjdGlvbnMuc2V0KGNvbm5lY3Rpb24uZ2V0
KCksIERlYnVnTW9kZUVuYWJsZWQ6Olllcyk7CisgICAgICAgIG1fY29ubmVjdGlvbnNXaXRoRGVi
dWdNb2RlRW5hYmxlZCsrOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fY29ubmVjdGlvbnMuc2V0
KGNvbm5lY3Rpb24uZ2V0KCksIERlYnVnTW9kZUVuYWJsZWQ6Ok5vKTsKKyAgICAgICAgbV9jb25u
ZWN0aW9uc1dpdGhEZWJ1Z01vZGVFbmFibGVkLS07CisgICAgfQorfQorCitib29sIERhZW1vbkNv
bm5lY3Rpb25TZXQ6OmRlYnVnTW9kZUVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiAhIW1f
Y29ubmVjdGlvbnNXaXRoRGVidWdNb2RlRW5hYmxlZDsKK30KKwordm9pZCBEYWVtb25Db25uZWN0
aW9uU2V0Ojpicm9hZGNhc3RDb25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VMZXZlbCBtZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBh
ZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7
CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCBwcm90b2Nv
bERlYnVnTWVzc2FnZUxldmVsS2V5LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obWVzc2FnZUxldmVs
KSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhkaWN0aW9uYXJ5LmdldCgpLCBwcm90
b2NvbERlYnVnTWVzc2FnZUtleSwgbWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAgICBmb3IgKGF1
dG8mIGNvbm5lY3Rpb24gOiBtX2Nvbm5lY3Rpb25zLmtleXMoKSkKKyAgICAgICAgeHBjX2Nvbm5l
Y3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIGRpY3Rpb25hcnkuZ2V0KCkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBQQ00KK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24v
UENNRGFlbW9uRW50cnlQb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRV
dGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQubW0KaW5kZXggNTQ4ZmY1
MTY0YzZkNmYxOWJlNTFkNGY0NjhkZDdiZjVkNDNhNDg2ZC4uOTQ2MTYxZjU0NmNiMGJlODAxNDY5
ZjQ1MWJmMGZhZGUyMGVhMDA0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9Q
Q01EYWVtb25FbnRyeVBvaW50Lm1tCkBAIC0yNiw3ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIlBDTURhZW1vbkVudHJ5UG9pbnQuaCIKIAorI2ltcG9ydCAiUENNRGFlbW9u
Q29ubmVjdGlvblNldC5oIgogI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0
aW9uLmgiCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlY29kZXIuaCIKICNpbXBv
cnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIgogI2ltcG9ydCAi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCIKICNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgpAQCAtNDMsMTMgKzQ1LDYgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLXN0YXRpYyBIYXNoU2V0PFJldGFpblB0cjx4cGNfY29ubmVjdGlvbl90Pj4mIHBlZXJzKCkK
LXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoU2V0PFJldGFpblB0cjx4cGNfY29ubmVjdGlvbl90Pj4+IHNldDsKLSAgICByZXR1
cm4gc2V0LmdldCgpOwotfQotCiBzdGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQQ006OkVu
Y29kZWRNZXNzYWdlJiYpPiByZXBseVNlbmRlcihQQ006Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBl
LCBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+JiYgcmVxdWVzdCkKIHsKICAgICBpZiAoIVBDTTo6
bWVzc2FnZVR5cGVTZW5kc1JlcGx5KG1lc3NhZ2VUeXBlKSkKQEAgLTc0LDcgKzY5LDcgQEAgc3Rh
dGljIHZvaWQgY29ubmVjdGlvbkV2ZW50SGFuZGxlcih4cGNfb2JqZWN0X3QgcmVxdWVzdCkKICAg
ICBzaXplX3QgZGF0YVNpemUgeyAwIH07CiAgICAgY29uc3Qgdm9pZCogZGF0YSA9IHhwY19kaWN0
aW9uYXJ5X2dldF9kYXRhKHJlcXVlc3QsIFBDTTo6cHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSwg
JmRhdGFTaXplKTsKICAgICBQQ006OkVuY29kZWRNZXNzYWdlIGVuY29kZWRNZXNzYWdlIHsgc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBkYXRhU2l6ZSB9OwotICAgIGRlY29kZU1l
c3NhZ2VBbmRTZW5kVG9NYW5hZ2VyKG1lc3NhZ2VUeXBlLCBXVEZNb3ZlKGVuY29kZWRNZXNzYWdl
KSwgcmVwbHlTZW5kZXIobWVzc2FnZVR5cGUsIHJlcXVlc3QpKTsKKyAgICBkZWNvZGVNZXNzYWdl
QW5kU2VuZFRvTWFuYWdlcihQQ006OkNvbm5lY3Rpb24oeHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90
ZV9jb25uZWN0aW9uKHJlcXVlc3QpKSwgbWVzc2FnZVR5cGUsIFdURk1vdmUoZW5jb2RlZE1lc3Nh
Z2UpLCByZXBseVNlbmRlcihtZXNzYWdlVHlwZSwgcmVxdWVzdCkpOwogfQogCiBzdGF0aWMgdm9p
ZCBzdGFydExpc3RlbmluZ0Zvck1hY2hTZXJ2aWNlQ29ubmVjdGlvbnMoY29uc3QgY2hhciogc2Vy
dmljZU5hbWUpCkBAIC05MSw3ICs4Niw3IEBAIHN0YXRpYyB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9y
TWFjaFNlcnZpY2VDb25uZWN0aW9ucyhjb25zdCBjaGFyKiBzZXJ2aWNlTmFtZSkKICAgICAgICAg
ICAgICAgICBOU0xvZyhAIkZhaWxlZCB0byBzdGFydCBsaXN0ZW5pbmcgZm9yIGNvbm5lY3Rpb25z
IHRvIG1hY2ggc2VydmljZSAlcywgbGlrZWx5IGJlY2F1c2UgaXQgaXMgbm90IHJlZ2lzdGVyZWQg
d2l0aCBsYXVuY2hkIiwgc2VydmljZU5hbWUpOwogICAgICAgICAgICAgaWYgKGV2ZW50ID09IFhQ
Q19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQVEVEKSB7CiAgICAgICAgICAgICAgICAgTlNMb2co
QCJyZW1vdmluZyBwZWVyIGNvbm5lY3Rpb24gJXAiLCBwZWVyKTsKLSAgICAgICAgICAgICAgICBw
ZWVycygpLnJlbW92ZShwZWVyKTsKKyAgICAgICAgICAgICAgICBQQ006OkRhZW1vbkNvbm5lY3Rp
b25TZXQ6OnNpbmdsZXRvbigpLnJlbW92ZShwZWVyKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb25uZWN0aW9uRXZlbnRIYW5kbGVyKGV2ZW50
KTsKQEAgLTEwMCw3ICs5NSw3IEBAIHN0YXRpYyB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9yTWFjaFNl
cnZpY2VDb25uZWN0aW9ucyhjb25zdCBjaGFyKiBzZXJ2aWNlTmFtZSkKICAgICAgICAgeHBjX2Nv
bm5lY3Rpb25fYWN0aXZhdGUocGVlcik7CiAKICAgICAgICAgTlNMb2coQCJhZGRpbmcgcGVlciBj
b25uZWN0aW9uICVwIiwgcGVlcik7Ci0gICAgICAgIHBlZXJzKCkuYWRkKHBlZXIpOworICAgICAg
ICBQQ006OkRhZW1vbkNvbm5lY3Rpb25TZXQ6OnNpbmdsZXRvbigpLmFkZChwZWVyKTsKICAgICB9
KTsKICAgICB4cGNfY29ubmVjdGlvbl9hY3RpdmF0ZShsaXN0ZW5lci5nZXQoKS5nZXQoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNWU2YjUyYzEyMTE0NmM2ZDUzYWNlNjY1ZDY1YzI1
NmZkZTVlOTU5My4uNDNiNGMyZGIyODEzYTg3Y2UwZTA5MDllNWZhY2NlNDQyY2Q2ZTZiNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dApAQCAtNDEsNyArNDEsNyBAQCBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQogTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9D
b2NvYS9EYWVtb24vRGFlbW9uRW50cnlQb2ludC5tbQogTmV0d29ya1Byb2Nlc3MvRW50cnlQb2lu
dC9Db2NvYS9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbQogCi1OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQorTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uQ29jb2Eu
bW0KIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxp
dGllcy5tbQogCkBAIC0xOTMsNiArMTkzLDcgQEAgU2hhcmVkL0NvY29hL1dLTlNVUkxSZXF1ZXN0
Lm1tCiBTaGFyZWQvQ29jb2EvV0tPYmplY3QubW0KIFNoYXJlZC9Db2NvYS9XZWJQcmVmZXJlbmNl
c0RlZmF1bHRWYWx1ZXNDb2NvYS5tbQogCitTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2Nv
YS9EYWVtb24vUENNRGFlbW9uQ29ubmVjdGlvblNldC5tbQogU2hhcmVkL0VudHJ5UG9pbnRVdGls
aXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQubW0KIAogU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvQ29jb2EvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmUubW0KaW5kZXggN2IwOWU1YTU1MTczOTMzZGJjZTYyYzQ2ZTc5NTUxNmQxN2YxYjVk
Yy4uNDFhYjJkMDc1YmUzZmEzZDdkOWFjNGVlY2VjYjM3MGRlM2JmOWQyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tCkBAIC02NTgsNiArNjU4LDExIEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0
YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAgICAgX3dl
YnNpdGVEYXRhU3RvcmUtPmFsbG93VExTQ2VydGlmaWNhdGVDaGFpbkZvckxvY2FsUENNVGVzdGlu
ZyhXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8oc2VydmVyVHJ1c3QpKTsKIH0KIAorLSAodm9pZClf
c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkRm9yVGVzdGluZzooQk9P
TCllbmFibGVkCit7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldFByaXZhdGVDbGlja01lYXN1
cmVtZW50RGVidWdNb2RlKGVuYWJsZWQpOworfQorCiAtICh2b2lkKV9hcHBCb3VuZERvbWFpbnM6
KHZvaWQgKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICNp
ZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRl
eCBhOWRiZjE1MjFkNjdhMTQ0NTYwYWZhZDYyNDUzYzU2NWY1N2MyMzU0Li5lNzVmYzZhMjM4MWY2
MTliMGU3MDgwNDBmZjQ5YzNhNTQwYWNlODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgK
QEAgLTg1LDYgKzg1LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNp
dGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpIHsKIAogLSAodm9pZClfYWxsb3dUTFNDZXJ0aWZpY2F0
ZUNoYWluOihOU0FycmF5ICopY2VydGlmaWNhdGVDaGFpbiBmb3JIb3N0OihOU1N0cmluZyAqKWhv
c3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIC0gKHZvaWQpX3Ry
dXN0U2VydmVyRm9yTG9jYWxQQ01UZXN0aW5nOihTZWNUcnVzdFJlZilzZXJ2ZXJUcnVzdCBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9p
ZClfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkRm9yVGVzdGluZzoo
Qk9PTCllbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiAKIC0gKHZvaWQpX3JlbmFtZU9yaWdpbjooTlNVUkwgKilvbGROYW1lIHRvOihO
U1VSTCAqKW5ld05hbWUgZm9yRGF0YU9mVHlwZXM6KE5TU2V0PE5TU3RyaW5nICo+ICopZGF0YVR5
cGVzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZDFjNjk1MTViYjE4MmRmYTVhNTQwNzc0ODY0ZjczZWMyOThjNDFkOS4uYmEyMzc5ZWM0ZTA5
N2EyMzY0YWZkYTRmYjI3MzRmNmZkMTdkMWY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NTM3LDYgKzQ1MzcsOCBAQAogCQk1QzVE
MjM4ODIyN0ExODkyMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVEMjM4OTIyN0ExODkyMDAwQjlCREEg
LyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0N1c3RvbUhlYWRlckZpZWxkcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1QzVEMjM4QTIyN0ExRDlCMDAwQjlCREEgLyogQVBJQ3VzdG9tSGVhZGVyRmllbGRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUN1c3RvbUhlYWRlckZpZWxkcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzYyODlBODI3MDY4RUMwMDBDRjVFQzYgLyog
UENNRGFlbW9uQ29ubmVjdGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQQ01EYWVtb25Db25uZWN0
aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNjI4OUE5MjcwNjhFQzAw
MENGNUVDNiAvKiBQQ01EYWVtb25Db25uZWN0aW9uU2V0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUENNRGFlbW9uQ29ubmVjdGlvblNldC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUM2MkZERjgxRUZDMjYzQzAwQ0UwNzJFIC8qIFdLVVJMU2NoZW1lVGFza1ByaXZhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tVUkxTY2hlbWVUYXNrUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzY2QTRCMzIzMjA5NjEzMDBFQTRENDQgLyogV0tIVFRQQ29va2llU3Rv
cmVSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tIVFRQQ29v
a2llU3RvcmVSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzY2QTRCNDIz
MjA5NjE0MDBFQTRENDQgLyogV0tIVFRQQ29va2llU3RvcmVSZWYuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tIVFRQQ29va2llU3RvcmVSZWYuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTQ2MDAsNyArNDYwMiw3IEBACiAJCTVDQjkzMEMwMjZFMDU0MkYwMDMy
QjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJ
bXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCOTMwQzEyNkUwNTRCODAw
MzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCOTMwRjIyNkU3RUVFMDAwMzJCMUMw
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRO
ZXR3b3JrTG9hZGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDQjkz
MEY0MjZFODAxRTgwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5l
Y3Rpb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1Q0I5MzBGNDI2RTgwMUU4MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25u
ZWN0aW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENvbm5lY3Rpb25Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNC
OTMwRjUyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjkz
MEY2MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERhZW1vbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0I5MzBG
NzI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREYWVtb25DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
OTQ2OCw3ICs5NDcwLDcgQEAKIAkJNUNCOTMwRjEyNkU3RUU4OTAwMzJCMUMwIC8qIGNvY29hICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1Q0I5MzBGNDI2
RTgwMUU4MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9u
Q29jb2EubW0gKi8sCisJCQkJNUNCOTMwRjQyNkU4MDFFODAwMzJCMUMwIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50Q29ubmVjdGlvbkNvY29hLm1tICovLAogCQkJCTVDQjkzMEYyMjZFN0VFRTAw
MDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbSAq
LywKIAkJCQk1Q0I5MzEwNzI2RTg0MUNCMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRYUENVdGlsaXRpZXMuaCAqLywKIAkJCQk1Q0I5MzEwODI2RTg0MUNCMDAzMkIxQzAgLyogUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0gKi8sCkBAIC05NDgwLDYgKzk0ODIs
OCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1Q0FGN0FBNTI2
RjkzQTk1MDAwM0YxOUUgLyogQWRBdHRyaWJ1dGlvbkRhZW1vbi5jICovLAorCQkJCTVDNjI4OUE4
MjcwNjhFQzAwMENGNUVDNiAvKiBQQ01EYWVtb25Db25uZWN0aW9uU2V0LmggKi8sCisJCQkJNUM2
Mjg5QTkyNzA2OEVDMDAwQ0Y1RUM2IC8qIFBDTURhZW1vbkNvbm5lY3Rpb25TZXQubW0gKi8sCiAJ
CQkJNUNCOTMxMDQyNkU4MzdGQzAwMzJCMUMwIC8qIFBDTURhZW1vbkVudHJ5UG9pbnQuaCAqLywK
IAkJCQk1Q0I5MzEwNTI2RTgzN0ZEMDAzMkIxQzAgLyogUENNRGFlbW9uRW50cnlQb2ludC5tbSAq
LywKIAkJCSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggY2M1NDg1MzlhMWMwZDhmZjAyYTMwMGFjMDg5ZGJhMzU0OTVmZTk0Ni4uOGNkOTUxNWRi
MDJmZTgwMjY4MmVjOTVmM2JlZDJiNzhmMWZhZjVhYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTEwLTA0ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1w
bGVtZW50IG1pc3NpbmcgZnVuY3Rpb25zIGluIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9u
Q2xpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzEwNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3REYWVtb25QTGlzdCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpjbGVhblVwRGFlbW9uKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtUZXN0
VUlEZWxlZ2F0ZSBfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjpdKToKKyAgICAgICAg
KC1bVGVzdFVJRGVsZWdhdGUgd2FpdEZvckluc3BlY3RvclRvU2hvd10pOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX3Rlc3Rfd2FpdEZvckluc3BlY3RvclRvU2hvd10pOgorCiAyMDIxLTEwLTA0ICBB
YWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBTZW5kIEVXUyBl
eGNlcHRpb24gZW1haWxzIHRvIGJvdCB3YXRjaGVycyBpbnN0ZWFkIG9mIEFha2FzaApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJp
YnV0aW9uLm1tCmluZGV4IDk0MDE5NjdhZTEwMmUwNGI1NDJkNGU4NzdlZGM5NGYzMzQ1ZjczZTIu
LjQ2ZjU1OWQ4ZDNhNDBjY2M0ZGZjYzgzZTFhMjUxNjVkN2I2NWQ2OTkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRp
b24ubW0KQEAgLTI5LDEyICsyOSwxNiBAQAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
ICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNp
bXBvcnQgIlRlc3RVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1w
b3J0ICJVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMu
aCIKICNpbXBvcnQgPFdlYktpdC9XS01haW4uaD4KKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0
b3IuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5o
PgogI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KICNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgpA
QCAtNDAwLDYgKzQwNCw3IEBAIHN0YXRpYyBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IHRlc3RE
YWVtb25QTGlzdChOU1VSTCAqc3RvcmFnZUxvY2F0aW9uKQogICAgIHhwY19kaWN0aW9uYXJ5X3Nl
dF9zdHJpbmcocGxpc3QuZ2V0KCksICJfTWFuYWdlZEJ5IiwgIlRlc3RXZWJLaXRBUEkiKTsKICAg
ICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKHBsaXN0LmdldCgpLCAiTGFiZWwiLCAib3JnLndl
YmtpdC5wY210ZXN0ZGFlbW9uIik7CiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X2Jvb2wocGxpc3Qu
Z2V0KCksICJMYXVuY2hPbmx5T25jZSIsIHRydWUpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF9z
dHJpbmcocGxpc3QuZ2V0KCksICJTdGFuZGFyZEVycm9yUGF0aCIsIFtzdG9yYWdlTG9jYXRpb24g
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZGFlbW9uX3N0ZGVyciJdLnBhdGguZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKTsKIAogICAgIHsKICAgICAgICAgYXV0byBlbnZpcm9ubWVudFZh
cmlhYmxlcyA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51
bGxwdHIsIDApKTsKQEAgLTQzMSw2ICs0MzYsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRGljdGlv
bmFyeT4gdGVzdERhZW1vblBMaXN0KE5TVVJMICpzdG9yYWdlTG9jYXRpb24pCiAgICAgcmV0dXJu
IEB7CiAgICAgICAgIEAiTGFiZWwiIDogQCJvcmcud2Via2l0LnBjbXRlc3RkYWVtb24iLAogICAg
ICAgICBAIkxhdW5jaE9ubHlPbmNlIiA6IEBZRVMsCisgICAgICAgIEAiU3RhbmRhcmRFcnJvclBh
dGgiIDogW3N0b3JhZ2VMb2NhdGlvbiBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJkYWVt
b25fc3RkZXJyIl0ucGF0aCwKICAgICAgICAgQCJFbnZpcm9ubWVudFZhcmlhYmxlcyIgOiBAeyBA
IkRZTERfRlJBTUVXT1JLX1BBVEgiIDogY3VycmVudEV4ZWN1dGFibGVEaXJlY3RvcnkoKS5nZXQo
KS5wYXRoIH0sCiAgICAgICAgIEAiTWFjaFNlcnZpY2VzIiA6IEB7IEAib3JnLndlYmtpdC5wY210
ZXN0ZGFlbW9uLnNlcnZpY2UiIDogQFlFUyB9LAogICAgICAgICBAIlByb2dyYW1Bcmd1bWVudHMi
IDogQFsKQEAgLTQ0NSw3ICs0NTEsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4g
dGVzdERhZW1vblBMaXN0KE5TVVJMICpzdG9yYWdlTG9jYXRpb24pCiAKICNlbmRpZgogCi1URVNU
KEV2ZW50QXR0cmlidXRpb24sIERhZW1vbikKK3N0YXRpYyBzdGQ6OnBhaXI8TlNVUkwgKiwgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqPiBzZXRVcERhZW1vbihXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICp2aWV3Q29uZmlndXJhdGlvbikKIHsKICAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9
IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKICAgICBOU1VSTCAqdGVtcERpciA9IFtO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiRXZlbnRBdHRyaWJ1dGlvbkRhZW1vblRlc3QiXSBpc0RpcmVj
dG9yeTpZRVNdOwpAQCAtNDY3LDI1ICs0NzMsNjkgQEAgVEVTVChFdmVudEF0dHJpYnV0aW9uLCBE
YWVtb24pCiAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwogICAgIHN1Y2Nlc3MgPSBbcGxpc3Qgd3Jp
dGVUb1VSTDpwbGlzdExvY2F0aW9uIGVycm9yOiZlcnJvcl07CiAgICAgRVhQRUNUX1RSVUUoc3Vj
Y2Vzcyk7Ci0gICAgc3lzdGVtKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAibGF1bmNoY3Rs
IGxvYWQgJUAiLCBwbGlzdExvY2F0aW9uLnBhdGhdLlVURjhTdHJpbmcpOworICAgIHN5c3RlbShb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImxhdW5jaGN0bCBsb2FkICVAIiwgcGxpc3RMb2Nh
dGlvbi5wYXRoXS5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24pOwogI2VuZGlmCiAgICAgRVhQRUNU
X05VTEwoZXJyb3IpOwogCiAgICAgYXV0byBkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gbmV3XSk7CiAgICAgZGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5nZXQoKS5wY21NYWNoU2VydmljZU5hbWUgPSBAIm9yZy53ZWJraXQucGNt
dGVzdGRhZW1vbi5zZXJ2aWNlIjsKLSAgICBhdXRvIHZpZXdDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKLSAgICB2aWV3Q29uZmlndXJhdGlvbi5n
ZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSku
Z2V0KCk7Ci0gICAgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdCh2aWV3Q29uZmlndXJhdGlv
bi5nZXQoKSwgW10oV0tXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBIVFRQU2VydmVyJiBzZXJ2ZXIp
IHsKLSAgICAgICAgW3dlYlZpZXcgX2FkZEV2ZW50QXR0cmlidXRpb25XaXRoU291cmNlSUQ6NDIg
ZGVzdGluYXRpb25VUkw6ZXhhbXBsZVVSTCgpIHNvdXJjZURlc2NyaXB0aW9uOkAidGVzdCBzb3Vy
Y2UgZGVzY3JpcHRpb24iIHB1cmNoYXNlcjpAInRlc3QgcHVyY2hhc2VyIiByZXBvcnRFbmRwb2lu
dDpzZXJ2ZXIucmVxdWVzdCgpLlVSTCBvcHRpb25hbE5vbmNlOm5pbCBhcHBsaWNhdGlvbkJ1bmRs
ZUlEOkAidGVzdC5idW5kbGUuaWQiXTsKLSAgICB9KTsKKyAgICB2aWV3Q29uZmlndXJhdGlvbi53
ZWJzaXRlRGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2lu
aXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSkuZ2V0KCk7
CisKKyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIodGVtcERpciwgdmlld0NvbmZpZ3VyYXRpb24p
OworfQogCitzdGF0aWMgdm9pZCBjbGVhblVwRGFlbW9uKE5TVVJMICp0ZW1wRGlyKQorewogICAg
IHN5c3RlbSgia2lsbGFsbCBBZEF0dHJpYnV0aW9uRGFlbW9uIC05Iik7CiAKLSAgICBFWFBFQ1Rf
VFJVRShbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDp0ZW1wRGlyLnBhdGhdKTsKLSAgICBb
ZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOnRlbXBEaXIgZXJyb3I6JmVycm9yXTsKKyAgICBF
WFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6dGVtcERpci5wYXRoXSk7CisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6dGVtcERpciBlcnJvcjom
ZXJyb3JdOwogICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKIH0KIAorVEVTVChFdmVudEF0dHJpYnV0
aW9uLCBEYWVtb24pCit7CisgICAgYXV0byBbdGVtcERpciwgY29uZmlndXJhdGlvbl0gPSBzZXRV
cERhZW1vbihhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pLmF1dG9yZWxlYXNl
KCkpOworICAgIHJ1bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3QoY29uZmlndXJhdGlvbiwgW10o
V0tXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBIVFRQU2VydmVyJiBzZXJ2ZXIpIHsKKyAgICAgICAg
W3dlYlZpZXcgX2FkZEV2ZW50QXR0cmlidXRpb25XaXRoU291cmNlSUQ6NDIgZGVzdGluYXRpb25V
Ukw6ZXhhbXBsZVVSTCgpIHNvdXJjZURlc2NyaXB0aW9uOkAidGVzdCBzb3VyY2UgZGVzY3JpcHRp
b24iIHB1cmNoYXNlcjpAInRlc3QgcHVyY2hhc2VyIiByZXBvcnRFbmRwb2ludDpzZXJ2ZXIucmVx
dWVzdCgpLlVSTCBvcHRpb25hbE5vbmNlOm5pbCBhcHBsaWNhdGlvbkJ1bmRsZUlEOkAidGVzdC5i
dW5kbGUuaWQiXTsKKyAgICB9KTsKKyAgICBjbGVhblVwRGFlbW9uKHRlbXBEaXIpOworfQorCitU
RVNUKEV2ZW50QXR0cmlidXRpb24sIERhZW1vbkRlYnVnTW9kZSkKK3sKKyAgICBhdXRvIHNldElu
amVjdGVkQnVuZGxlQ2xpZW50ID0gW10gKFdLV2ViVmlldyAqd2ViVmlldywgVmVjdG9yPFN0cmlu
Zz4mIGNvbnNvbGVNZXNzYWdlcykgeworICAgICAgICBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVu
dFYwIGluamVjdGVkQnVuZGxlQ2xpZW50ID0geworICAgICAgICAgICAgeyAwLCAmY29uc29sZU1l
c3NhZ2VzIH0sCisgICAgICAgICAgICBbXSAoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdl
TmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKKyAgICAg
ICAgICAgICAgICBhdXRvJiBjb25zb2xlTWVzc2FnZXMgPSAqcmVpbnRlcnByZXRfY2FzdDxWZWN0
b3I8U3RyaW5nPio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKKyAgICAgICAgICAg
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNvbnNv
bGVNZXNzYWdlIikpCisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVNZXNzYWdlcy5hcHBlbmQo
VXRpbDo6dG9OUygoV0tTdHJpbmdSZWYpbWVzc2FnZSkpOworICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIG51bGxwdHIsCisgICAgICAgIH07CisgICAgICAgIFdLUGFnZVNldFBhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudCh3ZWJWaWV3Ll9wYWdlUmVmRm9yVHJhbnNpdGlvblRvV0tXZWJWaWV3LCAm
aW5qZWN0ZWRCdW5kbGVDbGllbnQuYmFzZSk7CisgICAgfTsKKworICAgIGF1dG8gW3RlbXBEaXIs
IGNvbmZpZ3VyYXRpb25dID0gc2V0VXBEYWVtb24oW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rl
c3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiQnVuZGxlUGFnZUNvbnNv
bGVNZXNzYWdlIl0pOworICAgIGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMuX2RldmVsb3BlckV4
dHJhc0VuYWJsZWQgPSBZRVM7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb25dKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBjb25zb2xlTWVzc2FnZXM7CisgICAgc2V0
SW5qZWN0ZWRCdW5kbGVDbGllbnQod2ViVmlldy5nZXQoKSwgY29uc29sZU1lc3NhZ2VzKTsKKyAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFydCBwcm9jZXNzZXMi
XTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gc2hvd107CisgICAgW3dlYlZpZXcgX3Rlc3Rf
d2FpdEZvckluc3BlY3RvclRvU2hvd107CisgICAgW2NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZSBfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkRm9yVGVzdGlu
ZzpZRVNdOworICAgIHdoaWxlIChjb25zb2xlTWVzc2FnZXMuaXNFbXB0eSgpKQorICAgICAgICBV
dGlsOjpzcGluUnVuTG9vcCgpOworICAgIEVYUEVDVF9XS19TVFJFUShjb25zb2xlTWVzc2FnZXNb
MF0sICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHVybmVkIERlYnVnIE1vZGUgb24uIik7
CisgICAgW2NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkRm9yVGVzdGluZzpOT107CisgICAgd2hpbGUgKGNvbnNv
bGVNZXNzYWdlcy5zaXplKCkgPCAyKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAg
IEVYUEVDVF9XS19TVFJFUShjb25zb2xlTWVzc2FnZXNbMV0sICJbUHJpdmF0ZSBDbGljayBNZWFz
dXJlbWVudF0gVHVybmVkIERlYnVnIE1vZGUgb2ZmLiIpOworfQorCiAjZW5kaWYgLy8gUExBVEZP
Uk0oTUFDKQogCiAjaWYgSEFWRShVSV9FVkVOVF9BVFRSSUJVVElPTikKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUuaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUuaAppbmRleCAyNmMxNmJkZjY2Y2M1NzkzOTFmZGEy
NjE4YTM5MWQ5NmEzZWY4MjliLi4wZTlkYTc2ZDI5ZmExMmEzN2JlYzEyY2Q2MDAwOWYyNmE1ZDk3
Njk3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRl
LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5oCkBAIC00
MCw0ICs0MCw1IEBACiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChUZXN0VUlEZWxlZ2F0ZUV4dHJh
cykKIC0gKE5TU3RyaW5nICopX3Rlc3Rfd2FpdEZvckFsZXJ0OworLSAodm9pZClfdGVzdF93YWl0
Rm9ySW5zcGVjdG9yVG9TaG93OwogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFVJRGVsZWdhdGUubW0KaW5kZXggOTkzOGMzNmYwMTllNDY2MWVmYmM4OWEzYWQ3Y2NkOGE4MjE5
ZGI5ZS4uOWM1MmZlNmVhNDY3NmZmMzlmMWU5YjFmODFiNTYxZDI0ZjVlYmRlOSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLm1tCkBAIC0zMCw3ICszMCw5IEBA
CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIAotQGltcGxlbWVudGF0aW9uIFRlc3RVSURlbGVnYXRlCitAaW1w
bGVtZW50YXRpb24gVGVzdFVJRGVsZWdhdGUgeworICAgIEJPT0wgX3Nob3dlZEluc3BlY3RvcjsK
K30KIAogLSAoV0tXZWJWaWV3ICopd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjcmVhdGVX
ZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1
cmF0aW9uIGZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRp
b25BY3Rpb24gd2luZG93RmVhdHVyZXM6KFdLV2luZG93RmVhdHVyZXMgKil3aW5kb3dGZWF0dXJl
cwogewpAQCAtODEsNiArODMsMTcgQEAKICAgICByZXR1cm4gcmVzdWx0LmF1dG9yZWxlYXNlKCk7
CiB9CiAKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0YWNoTG9j
YWxJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcgoreworICAgIF9zaG93ZWRJbnNw
ZWN0b3IgPSBZRVM7Cit9CisKKy0gKHZvaWQpd2FpdEZvckluc3BlY3RvclRvU2hvdworeworICAg
IHdoaWxlICghX3Nob3dlZEluc3BlY3RvcikKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
c3BpblJ1bkxvb3AoKTsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChU
ZXN0VUlEZWxlZ2F0ZUV4dHJhcykKQEAgLTk1LDQgKzEwOCwxMyBAQAogICAgIHJldHVybiBhbGVy
dDsKIH0KIAorLSAodm9pZClfdGVzdF93YWl0Rm9ySW5zcGVjdG9yVG9TaG93Cit7CisgICAgRVhQ
RUNUX0ZBTFNFKHNlbGYuVUlEZWxlZ2F0ZSk7CisgICAgYXV0byB1aURlbGVnYXRlID0gYWRvcHRO
UyhbVGVzdFVJRGVsZWdhdGUgbmV3XSk7CisgICAgc2VsZi5VSURlbGVnYXRlID0gdWlEZWxlZ2F0
ZS5nZXQoKTsKKyAgICBbdWlEZWxlZ2F0ZSB3YWl0Rm9ySW5zcGVjdG9yVG9TaG93XTsKKyAgICBz
ZWxmLlVJRGVsZWdhdGUgPSBuaWw7Cit9CisKIEBlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440127</attachid>
            <date>2021-10-04 17:41:57 -0700</date>
            <delta_ts>2021-10-04 22:54:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231060-20211004174156.patch</filename>
            <type>text/plain</type>
            <size>66980</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE2NTcyNDhjYjJjMGVhMjZl
NjIzYWRmZmE3Y2UwMTIzYTYxODg0YTIuLjVlNWQ0NGVlM2Q4MTZlMzBmZjMxMjBjOTEzNWU1OWI3
MzQxNTNmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMjEtMTAtMDQgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
bWlzc2luZyBmdW5jdGlvbnMgaW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA2MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBk
ZWJ1ZyBtb2RlIGluIHRoZSBkYWVtb24gaWYgYW55IGNvbm5lY3RlZCBjbGllbnRzIGhhdmUgZGVi
dWcgbW9kZSBlbmFibGVkLgorICAgICAgICBCcm9hZGNhc3QgZGVidWcgbWVzc2FnZXMgdG8gYWxs
IGNsaWVudHMsIHdoaWNoIHdpbGwgdGhlbiBicm9hZGNhc3QgdGhlbSB0byBhbGwgd2ViIHByb2Nl
c3Nlcy4KKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IHRoYXQgdHVybnMgaXQgb24gdGhlbiBvZmYg
YW5kIGNoZWNrcyB0aGF0IHRoZSBkZWJ1ZyBtZXNzYWdlcyBtYWtlIGl0IGFsbCB0aGUgd2F5IHRv
IHRoZSBpbnNwZWN0b3IuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1hbmFnZXJPclByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNv
bm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjpDb25uZWN0aW9uVG9NYWNoU2VydmljZSk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U6OnNlbmQgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjpzZW5kV2l0aFJlcGx5
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpzZW5kIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UENNOjpDb25uZWN0aW9uOjpnZXQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGllbnQ6OmJyb2FkY2FzdENvbnNv
bGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGllbnQ6OmRlYnVnTW9k
ZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2V0RGVidWdNb2RlSXNFbmFi
bGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJ
bnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006Om1lc3NhZ2VUeXBlU2VuZHNSZXBs
eSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6aGFuZGxlUENNTWVzc2FnZVNldERlYnVnTW9kZUlz
RW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6ZGVjb2RlTWVzc2FnZUFuZFNlbmRUb01h
bmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6
Ok1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzZXRE
ZWJ1Z01vZGVJc0VuYWJsZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5Lmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uQ29jb2EubW06IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tLgorICAgICAgICAoV2Vi
S2l0OjpQQ006OkNvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjppbml0aWFsaXplQ29ubmVjdGlvbklm
TmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uVG9NYWNoU2Vy
dmljZTo6c2VuZERlYnVnTW9kZUlzRW5hYmxlZE1lc3NhZ2VJZk5lY2Vzc2FyeSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U6OmNoZWNrRm9yRGVi
dWdNZXNzYWdlQnJvYWRjYXN0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0
aW9uOjpzZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpzZW5k
V2l0aFJlcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uVG9NYWNo
U2VydmljZTo6c2VuZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvblRv
TWFjaFNlcnZpY2U6OnNlbmRXaXRoUmVwbHkgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9FbnRy
eVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25Db25uZWN0aW9uU2V0Lmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmguCisgICAgICAgICogU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkNvbm5lY3Rpb25T
ZXQubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNvbm5lY3Rpb25TZXQ6
OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGFlbW9uQ29ubmVjdGlvblNldDo6
YWRkKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25Db25uZWN0aW9uU2V0OjpyZW1vdmUp
OgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNvbm5lY3Rpb25TZXQ6OnNldENvbm5lY3Rl
ZE5ldHdvcmtQcm9jZXNzSGFzRGVidWdNb2RlRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6RGFlbW9uQ29ubmVjdGlvblNldDo6ZGVidWdNb2RlRW5hYmxlZCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGFlbW9uQ29ubmVjdGlvblNldDo6YnJvYWRjYXN0Q29uc29sZU1lc3Nh
Z2UpOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9Q
Q01EYWVtb25FbnRyeVBvaW50Lm1tOgorICAgICAgICAoV2ViS2l0Ojpjb25uZWN0aW9uRXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6c3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2VydmljZUNv
bm5lY3Rpb25zKToKKyAgICAgICAgKFdlYktpdDo6cGVlcnMpOiBEZWxldGVkLgorICAgICAgICAq
IFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkRm9yVGVzdGluZzpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0xMC0wNCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEVuYWJs
ZSBQQ00gZGVidWcgbW9kZSBwZXIgV2Vic2l0ZURhdGFTdG9yZSBpbnN0ZWFkIG9mIHByb2Nlc3Mt
Z2xvYmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwCmluZGV4IGNkNWJhZTIyNWVkMTZjM2M4MmVkOWIwNWI5NThkOTUxMzFlMDJiZjYuLmY5NTdm
YmFmYjRjNjUyODBjY2Y2NTQ3NjI4ZjUyZDliODViNGVhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0
YXRpYyBTdHJpbmcgcGNtU3RvcmVEaXJlY3RvcnkoY29uc3QgTmV0d29ya1Nlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFN0cmluZyYgcmVzCiBzdGF0aWMgVW5pcXVlUmVmPFBDTTo6TWFuYWdlckludGVy
ZmFjZT4gbWFuYWdlck9yUHJveHkoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBOZXR3
b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGlmICghcGFyYW1ldGVycy5wY21NYWNoU2Vy
dmljZU5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxQQ006Ok1h
bmFnZXJQcm94eT4ocGFyYW1ldGVycy5wY21NYWNoU2VydmljZU5hbWUpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJQcm94eT4ocGFyYW1ldGVycy5wY21NYWNoU2Vy
dmljZU5hbWUsIG5ldHdvcmtTZXNzaW9uKTsKICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGllbnRJbXBs
PihuZXR3b3JrU2Vzc2lvbiwgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9yeShuZXR3
b3JrU2Vzc2lvbiwgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5k
aXJlY3RvcnksIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSk7CiB9CiAKQEAgLTQyNyw5ICs0
MjcsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERl
YnVnTW9kZShib29sIGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkID0gZW5hYmxlZDsKLQotICAgIGF1dG8gbWVz
c2FnZSA9IGVuYWJsZWQgPyAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFR1cm5lZCBEZWJ1
ZyBNb2RlIG9uLiJfcyA6ICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHVybmVkIERlYnVn
IE1vZGUgb2ZmLiJfczsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5icm9hZGNhc3RDb25zb2xlTWVz
c2FnZShzZXNzaW9uSUQoKSwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
IE1lc3NhZ2VMZXZlbDo6SW5mbywgbWVzc2FnZSk7CisgICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC0+c2V0RGVidWdNb2RlSXNFbmFibGVkKGVuYWJsZWQpOwogfQogCiB2b2lkIE5ldHdvcmtT
ZXNzaW9uOjpmaXJlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVz
dGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggNjUwMjlhNjgzMmJkZWRhMWZk
MGE0ZTFhM2ZhYTljNzFlY2UzNWNlNi4uOWU4ZjViYjE4M2MwMWQ2OTA0YWUwZWVlMWZjNjlhNDNh
ZWYxZWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmNwcApAQCAtMzIsMTkgKzMyLDE4IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgUENNIHsKIAotI2lmICFQTEFURk9STShD
T0NPQSkKK0Nvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjpDb25uZWN0aW9uVG9NYWNoU2VydmljZShD
U3RyaW5nJiYgbWFjaFNlcnZpY2VOYW1lLCBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24p
CisgICAgOiBtX21hY2hTZXJ2aWNlTmFtZShXVEZNb3ZlKG1hY2hTZXJ2aWNlTmFtZSkpCisgICAg
LCBtX25ldHdvcmtTZXNzaW9uKG1ha2VXZWFrUHRyKG5ldHdvcmtTZXNzaW9uKSkgeyB9CiAKLUNv
bm5lY3Rpb246OkNvbm5lY3Rpb24oQ1N0cmluZyYmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19CisjaWYgIVBMQVRGT1JNKENPQ09BKQogCi12b2lkIENvbm5lY3Rpb246OnNlbmQoTWVzc2Fn
ZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYpIGNvbnN0Cit2b2lkIENvbm5lY3Rpb25Ub01hY2hTZXJ2
aWNlOjpzZW5kKE1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmKSBjb25zdAogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseShNZXNz
YWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVk
TWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3ZvaWQgQ29ubmVjdGlvblRv
TWFjaFNlcnZpY2U6OnNlbmRXaXRoUmVwbHkoTWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgKaW5kZXggNDQyZjQ4NDI1ZDY0OWQ5ZGQ2
MzZmNzM3NmY2ZGM4MzgxMzgzZmIyOS4uN2FjMzhkMjllZjkxNDZiOGM5NzIwMjQwZmU4NTAxYjIz
OTJhM2NiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oCkBAIC0yOCwxNCArMjgsMTcgQEAKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJ
Lmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIE5ldHdvcmtTZXNzaW9u
OworCiBuYW1lc3BhY2UgUENNIHsKIAogZW51bSBjbGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3Q7
CkBAIC00MywxOCArNDYsMzQgQEAgdXNpbmcgRW5jb2RlZE1lc3NhZ2UgPSBWZWN0b3I8dWludDhf
dD47CiAKIGNsYXNzIENvbm5lY3Rpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q29ubmVjdGlv
bj4gewogcHVibGljOgotICAgIGV4cGxpY2l0IENvbm5lY3Rpb24oQ1N0cmluZyYmIG1hY2hTZXJ2
aWNlTmFtZSk7CisgICAgQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBleHBsaWNpdCBDb25uZWN0aW9uKFJldGFpblB0cjx4cGNfY29ubmVjdGlvbl90PiYm
IGNvbm5lY3Rpb24pCisgICAgICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikp
IHsgfQorICAgIHhwY19jb25uZWN0aW9uX3QgZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0
aW9uLmdldCgpOyB9CisgICAgdm9pZCBzZW5kKHhwY19vYmplY3RfdCkgY29uc3Q7CisgICAgdm9p
ZCBzZW5kV2l0aFJlcGx5KHhwY19vYmplY3RfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh4cGNf
b2JqZWN0X3QpPiYmKSBjb25zdDsKK3Byb3RlY3RlZDoKKyAgICBtdXRhYmxlIFJldGFpblB0cjx4
cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5lY3Rpb247CisjZW5kaWYKK307CisKK2NsYXNzIENvbm5l
Y3Rpb25Ub01hY2hTZXJ2aWNlIDogcHVibGljIENvbm5lY3Rpb24geworcHVibGljOgorICAgIGV4
cGxpY2l0IENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlKENTdHJpbmcmJiBtYWNoU2VydmljZU5hbWUs
IE5ldHdvcmtTZXNzaW9uJik7CiAKICAgICB2b2lkIHNlbmQoTWVzc2FnZVR5cGUsIEVuY29kZWRN
ZXNzYWdlJiYpIGNvbnN0OwogICAgIHZvaWQgc2VuZFdpdGhSZXBseShNZXNzYWdlVHlwZSwgRW5j
b2RlZE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4m
JikgY29uc3Q7CiAKIHByaXZhdGU6Ci0jaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBpbml0
aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCkgY29uc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgdm9pZCBjaGVja0ZvckRlYnVnTWVzc2FnZUJyb2FkY2FzdCh4cGNfb2JqZWN0X3QpIGNvbnN0
OworI2VuZGlmCisgICAgdm9pZCBzZW5kRGVidWdNb2RlSXNFbmFibGVkTWVzc2FnZUlmTmVjZXNz
YXJ5KCkgY29uc3Q7CiAKICAgICBjb25zdCBDU3RyaW5nIG1fbWFjaFNlcnZpY2VOYW1lOwotICAg
IG11dGFibGUgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gbV9jb25uZWN0aW9uOwotI2Vu
ZGlmCisgICAgV2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4gbV9uZXR3b3JrU2Vzc2lvbjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFBDTQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1v
bkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcAppbmRleCAz
NzNlNTFiZTcwZjBjNmU5MjM0ODRjYjZmZGRlNTk1OGJmMmViNThkLi5hZGE1MjUwMjBhYmExZmFi
ZWYxMTI1NDRjNGVhMTFhM2Q2ZGQyZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
RGFlbW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNw
cApAQCAtMjYsMTUgKzI2LDIyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJQQ01EYWVt
b25Db25uZWN0aW9uU2V0LmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVz
cGFjZSBQQ00gewogCi12b2lkIERhZW1vbkNsaWVudDo6YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
SlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYpCit2b2lkIERhZW1vbkNsaWVudDo6YnJv
YWRjYXN0Q29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIERhZW1vbkNvbm5lY3Rpb25TZXQ6OnNpbmdsZXRvbigpLmJyb2FkY2FzdENvbnNvbGVN
ZXNzYWdlKGxldmVsLCBtZXNzYWdlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGxldmVsKTsK
KyAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7CisjZW5kaWYKIH0KIAogYm9vbCBEYWVtb25DbGll
bnQ6OmZlYXR1cmVFbmFibGVkKCkgY29uc3QKQEAgLTQ0LDggKzUxLDExIEBAIGJvb2wgRGFlbW9u
Q2xpZW50OjpmZWF0dXJlRW5hYmxlZCgpIGNvbnN0CiAKIGJvb2wgRGFlbW9uQ2xpZW50OjpkZWJ1
Z01vZGVFbmFibGVkKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIHJldHVybiBEYWVtb25Db25uZWN0aW9uU2V0OjpzaW5nbGV0b24oKS5k
ZWJ1Z01vZGVFbmFibGVkKCk7CisjZWxzZQogICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQog
CiB9IC8vIG5hbWVzcGFjZSBQQ00KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCBmNDUxM2ExNzg0
ODFhZmQwMWM0ZDIzOGEwNGQyZmQ3ZDRkNjQ5NjRlLi5hZDllZGNmZTBiOTA1ODhjZTFmYzRmYjI3
ZjZjNTRkYjgyZjZlYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBAIC0yMjcsNiArMjI3LDE2
IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjptaWdyYXRlUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvCiAgICAgc3RvcmUoKS5pbnNlcnRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChXVEZNb3ZlKG1lYXN1cmVtZW50KSwgdHlwZSwgW10geyB9KTsKIH0KIAor
dm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnNldERlYnVnTW9kZUlzRW5hYmxl
ZChib29sIGVuYWJsZWQpCit7CisgICAgLy8gVGhpcyBkb2Vzbid0IG1haW50YWluIGdsb2JhbCBz
dGF0ZSwgaXQganVzdCBicm9hZGNhc3RzIGEgbWVzc2FnZSB3aGVuIGRlYnVnIG1vZGUgZW5hYmxl
ZCBjaGFuZ2VzLgorICAgIC8vIFRoZSBzdGF0ZSBpcyBlaXRoZXIgc3RvcmVkIGluIE5ldHdvcmtT
ZXNzaW9uIHdoZW4gbm90IHVzaW5nIHRoZSBkYWVtb24KKyAgICAvLyBvciBpbiBEYWVtb25Db25u
ZWN0aW9uU2V0IHBlci1jb25uZWN0aW9uIHdoZW4gdXNpbmcgdGhlIGRhZW1vbi4KKworICAgIGF1
dG8gbWVzc2FnZSA9IGVuYWJsZWQgPyAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFR1cm5l
ZCBEZWJ1ZyBNb2RlIG9uLiJfcyA6ICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHVybmVk
IERlYnVnIE1vZGUgb2ZmLiJfczsKKyAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3Nh
Z2UoTWVzc2FnZUxldmVsOjpJbmZvLCBtZXNzYWdlKTsKK30KKwogdm9pZCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI6OmhhbmRsZUF0dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVkaXJlY3REb21haW4sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eVVSTCwgY29uc3QgQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyJiBhcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmgKaW5kZXggYmVkMGEzNmNmYzgwYzQ5MTViZjI2OTFlMTliYjZkZjVjYjgzZGRhOS4uMThl
MzRjZDk2NmU1NTI4NGU0N2NiOTk2ZDQ2NjRmNzJjM2NmNzMwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5o
CkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWlu
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBm
aW5hbDsKICAgICB2b2lkIG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lT
dG9yYWdlKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25UeXBlKSBmaW5hbDsKKyAgICB2b2lkIHNldERlYnVnTW9kZUlzRW5hYmxlZChi
b29sKSBmaW5hbDsKIAogICAgIHZvaWQgdG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRPdmVycmlkZVRp
bWVyRm9yVGVzdGluZyhib29sIHZhbHVlKSBmaW5hbCB7IG1faXNSdW5uaW5nVGVzdCA9IHZhbHVl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5jcHAKaW5kZXggZTQyMjkyZmRj
YTY1YTQxZTk3OWUyYmQxNmUxYTE3Y2E5NmNlMjI5MC4uNjgzNGJhY2ExNzZmNDdkNmRjNGVlZTBm
Njg4M2E2YTViNjM3ZmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJ
bnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNw
cApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlckludGVyZmFjZS5oIgogCiAjaW5jbHVkZSAiSGFuZGxlTWVzc2FnZS5oIgorI2luY2x1ZGUg
IlBDTURhZW1vbkNvbm5lY3Rpb25TZXQuaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1v
bkNsaWVudC5oIgogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oIgpA
QCAtNjksNiArNzAsMTAgQEAgRlVOQ1RJT04obWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50
RnJvbUxlZ2FjeVN0b3JhZ2UpCiBBUkdVTUVOVFMoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKQogRU5ECiAKK0ZV
TkNUSU9OKHNldERlYnVnTW9kZUlzRW5hYmxlZCkKK0FSR1VNRU5UUyhib29sKQorRU5ECisKIEZV
TkNUSU9OKHRvU3RyaW5nRm9yVGVzdGluZykKIEFSR1VNRU5UUygpCiBSRVBMWShTdHJpbmcpCkBA
IC0xNDcsNiArMTUyLDcgQEAgYm9vbCBtZXNzYWdlVHlwZVNlbmRzUmVwbHkoTWVzc2FnZVR5cGUg
bWVzc2FnZVR5cGUpCiAgICAgc3dpdGNoIChtZXNzYWdlVHlwZSkgewogICAgIGNhc2UgTWVzc2Fn
ZVR5cGU6OkhhbmRsZUF0dHJpYnV0aW9uOgogICAgIGNhc2UgTWVzc2FnZVR5cGU6Ok1pZ3JhdGVQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlOgorICAgIGNhc2UgTWVzc2Fn
ZVR5cGU6OlNldERlYnVnTW9kZUlzRW5hYmxlZDoKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRP
dmVycmlkZVRpbWVyRm9yVGVzdGluZzoKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRUb2tlblB1
YmxpY0tleVVSTEZvclRlc3Rpbmc6CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0VG9rZW5TaWdu
YXR1cmVVUkxGb3JUZXN0aW5nOgpAQCAtMjAwLDYgKzIwNiwyMSBAQCB2b2lkIGhhbmRsZVBDTU1l
c3NhZ2UoUENNOjpFbmNvZGVkTWVzc2FnZSYmIGVuY29kZWRNZXNzYWdlKQogICAgIElQQzo6Y2Fs
bE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksICZkYWVtb25NYW5hZ2VyKCksIElu
Zm86Ok1lbWJlckZ1bmN0aW9uKTsKIH0KIAorc3RhdGljIHZvaWQgaGFuZGxlUENNTWVzc2FnZVNl
dERlYnVnTW9kZUlzRW5hYmxlZChjb25zdCBDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQ006OkVu
Y29kZWRNZXNzYWdlJiYgZW5jb2RlZE1lc3NhZ2UpCit7CisgICAgUENNOjpEZWNvZGVyIGRlY29k
ZXIoV1RGTW92ZShlbmNvZGVkTWVzc2FnZSkpOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gZW5h
YmxlZDsKKyAgICBkZWNvZGVyID4+IGVuYWJsZWQ7CisgICAgaWYgKFVOTElLRUxZKCFlbmFibGVk
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgY29ubmVjdGlvblNldCA9IERhZW1vbkNv
bm5lY3Rpb25TZXQ6OnNpbmdsZXRvbigpOworICAgIGJvb2wgZGVidWdNb2RlV2FzRW5hYmxlZCA9
IGNvbm5lY3Rpb25TZXQuZGVidWdNb2RlRW5hYmxlZCgpOworICAgIGNvbm5lY3Rpb25TZXQuc2V0
Q29ubmVjdGVkTmV0d29ya1Byb2Nlc3NIYXNEZWJ1Z01vZGVFbmFibGVkKGNvbm5lY3Rpb24sICpl
bmFibGVkKTsKKyAgICBpZiAoZGVidWdNb2RlV2FzRW5hYmxlZCAhPSBjb25uZWN0aW9uU2V0LmRl
YnVnTW9kZUVuYWJsZWQoKSkKKyAgICAgICAgZGFlbW9uTWFuYWdlcigpLnNldERlYnVnTW9kZUlz
RW5hYmxlZCgqZW5hYmxlZCk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIEluZm8+CiB2b2lkIGhh
bmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHkoUENNOjpFbmNvZGVkTWVzc2FnZSYmIGVuY29kZWRNZXNz
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBDTTo6RW5jb2RlZE1lc3NhZ2UmJik+JiYgcmVw
bHlTZW5kZXIpCiB7CkBAIC0yMTcsNyArMjM4LDcgQEAgdm9pZCBoYW5kbGVQQ01NZXNzYWdlV2l0
aFJlcGx5KFBDTTo6RW5jb2RlZE1lc3NhZ2UmJiBlbmNvZGVkTWVzc2FnZSwgQ29tcGxldGlvbkgK
ICAgICBJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgJmRhZW1vbk1hbmFnZXIoKSwgSW5mbzo6TWVtYmVyRnVuY3Rp
b24pOwogfQogCi12b2lkIGRlY29kZU1lc3NhZ2VBbmRTZW5kVG9NYW5hZ2VyKE1lc3NhZ2VUeXBl
IG1lc3NhZ2VUeXBlLCBWZWN0b3I8dWludDhfdD4mJiBlbmNvZGVkTWVzc2FnZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYgcmVwbHlTZW5kZXIpCit2b2lkIGRl
Y29kZU1lc3NhZ2VBbmRTZW5kVG9NYW5hZ2VyKGNvbnN0IENvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBWZWN0b3I8dWludDhfdD4mJiBlbmNvZGVkTWVzc2Fn
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYgcmVwbHlTZW5k
ZXIpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2VUeXBlU2VuZHNSZXBseShtZXNzYWdlVHlwZSkgPT0g
ISFyZXBseVNlbmRlcik7CiAgICAgc3dpdGNoIChtZXNzYWdlVHlwZSkgewpAQCAtMjMzLDYgKzI1
NCw5IEBAIHZvaWQgZGVjb2RlTWVzc2FnZUFuZFNlbmRUb01hbmFnZXIoTWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIFZlY3Rvcjx1aW50OF90PiYmIGVuCiAgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBl
OjpDbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluOgogICAgICAgICBoYW5kbGVQQ01NZXNzYWdlV2l0
aFJlcGx5PE1lc3NhZ2VJbmZvOjpjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluPihXVEZNb3ZlKGVu
Y29kZWRNZXNzYWdlKSwgV1RGTW92ZShyZXBseVNlbmRlcikpOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OlNldERlYnVnTW9kZUlzRW5hYmxlZDoKKyAgICAgICAg
aGFuZGxlUENNTWVzc2FnZVNldERlYnVnTW9kZUlzRW5hYmxlZChjb25uZWN0aW9uLCBXVEZNb3Zl
KGVuY29kZWRNZXNzYWdlKSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUENNOjpNZXNzYWdl
VHlwZTo6TWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2U6CiAg
ICAgICAgIGhhbmRsZVBDTU1lc3NhZ2U8TWVzc2FnZUluZm86Om1pZ3JhdGVQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlPihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CiAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJbnRl
cmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgKaW5kZXggZGRm
ZWQzZWI3Y2MxZTQ2MDdhNDgzNWZlNDdlYmM1ZmFjMGQ5YWMyZS4uY2Y4MGM0NDI5NjkyZTkwNTI1
NTYzZjdiYjUyMDQ5YTI0YjBjNGM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXJJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFj
ZS5oCkBAIC00MSw2ICs0MSw4IEBAIGNsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cjsKIAogbmFtZXNwYWNlIFBDTSB7CiAKK2NsYXNzIENvbm5lY3Rpb247CisKIGNsYXNzIE1hbmFn
ZXJJbnRlcmZhY2UgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1hbmFnZXJJbnRlcmZhY2UoKSB7
IH07CkBAIC01Nyw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyRm9y
UmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbWlncmF0ZVByaXZhdGVDbGlj
a01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0RGVidWdNb2RlSXNFbmFibGVkKGJvb2wpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCB0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJv
b2wgdmFsdWUpID0gMDsKQEAgLTc1LDYgKzc4LDkgQEAgcHVibGljOgogY29uc3RleHByIGNvbnN0
IGNoYXIqIHByb3RvY29sVmVyc2lvbktleSB7ICJ2ZXJzaW9uIiB9OwogY29uc3RleHByIHVpbnQ2
NF90IHByb3RvY29sVmVyc2lvblZhbHVlIHsgMSB9OwogCitjb25zdGV4cHIgY29uc3QgY2hhciog
cHJvdG9jb2xEZWJ1Z01lc3NhZ2VMZXZlbEtleSB7ICJkZWJ1ZyBtZXNzYWdlIGxldmVsIiB9Owor
Y29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRGVidWdNZXNzYWdlS2V5IHsgImRlYnVnIG1l
c3NhZ2UiIH07CisKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbE1lc3NhZ2VUeXBlS2V5
IHsgIm1lc3NhZ2UgdHlwZSIgfTsKIGVudW0gY2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50OF90IHsK
ICAgICBTdG9yZVVuYXR0cmlidXRlZCwKQEAgLTgyLDYgKzg4LDcgQEAgZW51bSBjbGFzcyBNZXNz
YWdlVHlwZSA6IHVpbnQ4X3QgewogICAgIENsZWFyLAogICAgIENsZWFyRm9yUmVnaXN0cmFibGVE
b21haW4sCiAgICAgTWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3Jh
Z2UsCisgICAgU2V0RGVidWdNb2RlSXNFbmFibGVkLAogICAgIFRvU3RyaW5nRm9yVGVzdGluZywK
ICAgICBTZXRPdmVycmlkZVRpbWVyRm9yVGVzdGluZywKICAgICBTZXRUb2tlblB1YmxpY0tleVVS
TEZvclRlc3RpbmcsCkBAIC05OSw3ICsxMDYsNyBAQCBlbnVtIGNsYXNzIE1lc3NhZ2VUeXBlIDog
dWludDhfdCB7CiBjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtl
eSB7ICJlbmNvZGVkIG1lc3NhZ2UiIH07CiB1c2luZyBFbmNvZGVkTWVzc2FnZSA9IFZlY3Rvcjx1
aW50OF90PjsKIAotdm9pZCBkZWNvZGVNZXNzYWdlQW5kU2VuZFRvTWFuYWdlcihNZXNzYWdlVHlw
ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8dWludDhfdD4mJik+JiYpOwordm9pZCBkZWNvZGVNZXNzYWdlQW5kU2VuZFRvTWFuYWdlcihj
b25zdCBDb25uZWN0aW9uJiwgTWVzc2FnZVR5cGUsIFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmKTsKIGJvb2wgbWVz
c2FnZVR5cGVTZW5kc1JlcGx5KE1lc3NhZ2VUeXBlKTsKIAogdm9pZCBpbml0aWFsaXplUENNU3Rv
cmFnZUluRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwpAQCAtMTE4LDYgKzEyNSw3IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlPiB7CiAgICAg
ICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6Q2xlYXIsCiAgICAgICAgIFdlYktpdDo6UENN
OjpNZXNzYWdlVHlwZTo6Q2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbiwKICAgICAgICAgV2ViS2l0
OjpQQ006Ok1lc3NhZ2VUeXBlOjpNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVn
YWN5U3RvcmFnZSwKKyAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpTZXREZWJ1Z01v
ZGVJc0VuYWJsZWQsCiAgICAgICAgIFdlYktpdDo6UENNOjpNZXNzYWdlVHlwZTo6VG9TdHJpbmdG
b3JUZXN0aW5nLAogICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlNldE92ZXJyaWRl
VGltZXJGb3JUZXN0aW5nLAogICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6OlNldFRv
a2VuUHVibGljS2V5VVJMRm9yVGVzdGluZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAK
aW5kZXggNDMyZjI1YTY4NzBhNzUyMmMwMDE0ZDVlN2U0MDgwODdhMTk0ZDQxZC4uYTE4Nzc4NGQ4
NmZhMTM5MDIwNjM5MWFmZGQwOTdkMjBiN2MxZmZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQ
cm94eS5jcHAKQEAgLTcyLDggKzcyLDggQEAgdm9pZCBNYW5hZ2VyUHJveHk6OnNlbmRNZXNzYWdl
V2l0aFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVwbHlBcmdzLi4uKT4mJgogICAgIH0p
OwogfQogCi1NYW5hZ2VyUHJveHk6Ok1hbmFnZXJQcm94eShjb25zdCBTdHJpbmcmIG1hY2hTZXJ2
aWNlTmFtZSkKLSAgICA6IG1fY29ubmVjdGlvbihtYWNoU2VydmljZU5hbWUudXRmOCgpKSB7IH0K
K01hbmFnZXJQcm94eTo6TWFuYWdlclByb3h5KGNvbnN0IFN0cmluZyYgbWFjaFNlcnZpY2VOYW1l
LCBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24pCisgICAgOiBtX2Nvbm5lY3Rpb24obWFj
aFNlcnZpY2VOYW1lLnV0ZjgoKSwgbmV0d29ya1Nlc3Npb24pIHsgfQogCiB2b2lkIE1hbmFnZXJQ
cm94eTo6c3RvcmVVbmF0dHJpYnV0ZWQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQm
JiBwY20sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
QEAgLTk1LDYgKzk1LDExIEBAIHZvaWQgTWFuYWdlclByb3h5OjpjbGVhckZvclJlZ2lzdHJhYmxl
RG9tYWluKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkCiAgICAgc2VuZE1lc3Nh
Z2VXaXRoUmVwbHk8TWVzc2FnZVR5cGU6OkNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4+KFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBkb21haW4pOwogfQogCit2b2lkIE1hbmFnZXJQcm94eTo6
c2V0RGVidWdNb2RlSXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBzZW5kTWVzc2FnZTxN
ZXNzYWdlVHlwZTo6U2V0RGVidWdNb2RlSXNFbmFibGVkPihlbmFibGVkKTsKK30KKwogdm9pZCBN
YW5hZ2VyUHJveHk6Om1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9y
YWdlKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgcGNtLCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSB0eXBlKQogewogICAgIHNlbmRNZXNzYWdlPE1lc3Nh
Z2VUeXBlOjpNaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZT4o
cGNtLCB0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaAppbmRleCBmNGRkYzFjY2IxZDRj
MWJjN2JhMDY0MjZjOTRmNWJiY2E2MDQ0YzE2Li5mOTExNjE1YjUyYzllOGEyODBkMjdhMTllNmY3
MzJjODdkNGMxMTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oCkBAIC0zMiwxMiArMzIs
MTQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworCiBu
YW1lc3BhY2UgUENNIHsKIAogY2xhc3MgTWFuYWdlclByb3h5IDogcHVibGljIE1hbmFnZXJJbnRl
cmZhY2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIE1hbmFn
ZXJQcm94eShjb25zdCBTdHJpbmcmIG1hY2hTZXJ2aWNlTmFtZSk7CisgICAgTWFuYWdlclByb3h5
KGNvbnN0IFN0cmluZyYgbWFjaFNlcnZpY2VOYW1lLCBOZXR3b3JrU2Vzc2lvbiYpOwogCiAgICAg
dXNpbmcgQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gU3RyaW5nOwogCkBAIC00Niw2ICs0
OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7CiAgICAgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWluKGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5h
bDsKICAgICB2b2lkIG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9y
YWdlKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UeXBlKSBmaW5hbDsKKyAgICB2b2lkIHNldERlYnVnTW9kZUlzRW5h
YmxlZChib29sKSBmaW5hbDsKIAogICAgIHZvaWQgdG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRPdmVy
cmlkZVRpbWVyRm9yVGVzdGluZyhib29sKSBmaW5hbDsKQEAgLTY2LDcgKzY5LDcgQEAgcHJpdmF0
ZToKICAgICB0ZW1wbGF0ZTxNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJn
cywgdHlwZW5hbWUuLi4gUmVwbHlBcmdzPgogICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHko
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXBseUFyZ3MuLi4pPiYmLCBBcmdzJiYuLi4pIGNvbnN0
OwogCi0gICAgQ29ubmVjdGlvbiBtX2Nvbm5lY3Rpb247CisgICAgQ29ubmVjdGlvblRvTWFjaFNl
cnZpY2UgbV9jb25uZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgUENNCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2Nv
Y29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb25Db2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MzU1YmYyMDMw
MTA1M2FmMTNhZDkyMGM4ODdlOWYzMDdiYmE1ZGI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb25Db2NvYS5tbQpAQCAtMCwwICsxLDE0MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRDb25uZWN0aW9uLmgiCisKKyNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50
RW5jb2Rlci5oIgorI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMu
aCIKKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworbmFtZXNwYWNlIFBDTSB7CisKK3ZvaWQgQ29ubmVjdGlvblRvTWFjaFNlcnZpY2U6OmluaXRp
YWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKSBjb25zdAoreworICAgIGlmIChtX2Nvbm5lY3Rpb24p
CisgICAgICAgIHJldHVybjsKKyAgICBtX2Nvbm5lY3Rpb24gPSBhZG9wdE5TKHhwY19jb25uZWN0
aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2UobV9tYWNoU2VydmljZU5hbWUuZGF0YSgpLCBkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCAwKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hh
bmRsZXIobV9jb25uZWN0aW9uLmdldCgpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyld
KHhwY19vYmplY3RfdCBldmVudCkgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBpZiAoZXZlbnQgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJT05fSU5W
QUxJRCkKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGNvbm5lY3QgdG8gbWFj
aCBzZXJ2aWNlICVzLCBsaWtlbHkgYmVjYXVzZSBpdCBpcyBub3QgcmVnaXN0ZXJlZCB3aXRoIGxh
dW5jaGQiLCB3ZWFrVGhpcy0+bV9tYWNoU2VydmljZU5hbWUuZGF0YSgpKTsKKyAgICAgICAgaWYg
KGV2ZW50ID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQVEVEKSB7CisgICAgICAgICAg
ICAvLyBEYWVtb24gY3Jhc2hlZCwgd2Ugd2lsbCBuZWVkIHRvIG1ha2UgYSBuZXcgY29ubmVjdGlv
biB0byBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgZGFlbW9uLgorICAgICAgICAgICAgd2Vha1RoaXMt
Pm1fY29ubmVjdGlvbiA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgd2Vha1RoaXMtPmNo
ZWNrRm9yRGVidWdNZXNzYWdlQnJvYWRjYXN0KGV2ZW50KTsKKyAgICB9KTsKKyAgICB4cGNfY29u
bmVjdGlvbl9hY3RpdmF0ZShtX2Nvbm5lY3Rpb24uZ2V0KCkpOworCisgICAgc2VuZERlYnVnTW9k
ZUlzRW5hYmxlZE1lc3NhZ2VJZk5lY2Vzc2FyeSgpOworfQorCit2b2lkIENvbm5lY3Rpb25Ub01h
Y2hTZXJ2aWNlOjpzZW5kRGVidWdNb2RlSXNFbmFibGVkTWVzc2FnZUlmTmVjZXNzYXJ5KCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV9jb25uZWN0aW9uKTsKKyAgICBpZiAoIW1fbmV0d29ya1Nlc3Np
b24KKyAgICAgICAgfHwgbV9uZXR3b3JrU2Vzc2lvbi0+c2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwo
KQorICAgICAgICB8fCAhbV9uZXR3b3JrU2Vzc2lvbi0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
ZWJ1Z01vZGVFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEVuY29kZXIgZW5jb2Rl
cjsKKyAgICBlbmNvZGVyLmVuY29kZSh0cnVlKTsKKyAgICBzZW5kKE1lc3NhZ2VUeXBlOjpTZXRE
ZWJ1Z01vZGVJc0VuYWJsZWQsIGVuY29kZXIudGFrZUJ1ZmZlcigpKTsKK30KKwordm9pZCBDb25u
ZWN0aW9uVG9NYWNoU2VydmljZTo6Y2hlY2tGb3JEZWJ1Z01lc3NhZ2VCcm9hZGNhc3QoeHBjX29i
amVjdF90IHJlcXVlc3QpIGNvbnN0Cit7CisgICAgaWYgKHhwY19nZXRfdHlwZShyZXF1ZXN0KSAh
PSBYUENfVFlQRV9ESUNUSU9OQVJZKQorICAgICAgICByZXR1cm47CisgICAgY29uc3QgY2hhciog
ZGVidWdNZXNzYWdlID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhyZXF1ZXN0LCBwcm90b2Nv
bERlYnVnTWVzc2FnZUtleSk7CisgICAgaWYgKCFkZWJ1Z01lc3NhZ2UpCisgICAgICAgIHJldHVy
bjsKKyAgICBhdXRvIG1lc3NhZ2VMZXZlbCA9IHN0YXRpY19jYXN0PEpTQzo6TWVzc2FnZUxldmVs
Pih4cGNfZGljdGlvbmFyeV9nZXRfdWludDY0KHJlcXVlc3QsIHByb3RvY29sRGVidWdNZXNzYWdl
TGV2ZWxLZXkpKTsKKyAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IG1fbmV0d29ya1Nlc3Npb24u
Z2V0KCk7CisgICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworICAgIG1f
bmV0d29ya1Nlc3Npb24tPm5ldHdvcmtQcm9jZXNzKCkuYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
bV9uZXR3b3JrU2Vzc2lvbi0+c2Vzc2lvbklEKCksIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50LCBtZXNzYWdlTGV2ZWwsIFN0cmluZzo6ZnJvbVVURjgoZGVidWdNZXNzYWdl
KSk7Cit9CisKK3N0YXRpYyBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+IGRpY3Rpb25hcnlGcm9t
TWVzc2FnZShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdl
KQoreworICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlf
Y3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICBhZGRWZXJzaW9uQW5kRW5jb2RlZE1l
c3NhZ2VUb0RpY3Rpb25hcnkoV1RGTW92ZShtZXNzYWdlKSwgZGljdGlvbmFyeS5nZXQoKSk7Cisg
ICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCBwcm90b2NvbE1l
c3NhZ2VUeXBlS2V5LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obWVzc2FnZVR5cGUpKTsKKyAgICBy
ZXR1cm4gZGljdGlvbmFyeTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpzZW5kKHhwY19vYmplY3Rf
dCBtZXNzYWdlKSBjb25zdAoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAg
QVNTRVJUKG1fY29ubmVjdGlvbi5nZXQoKSk7CisgICAgQVNTRVJUKHhwY19nZXRfdHlwZShtZXNz
YWdlKSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21l
c3NhZ2UobV9jb25uZWN0aW9uLmdldCgpLCBtZXNzYWdlKTsKK30KKwordm9pZCBDb25uZWN0aW9u
OjpzZW5kV2l0aFJlcGx5KHhwY19vYmplY3RfdCBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHhwY19vYmplY3RfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQobV9jb25uZWN0aW9uLmdldCgpKTsK
KyAgICBBU1NFUlQoeHBjX2dldF90eXBlKG1lc3NhZ2UpID09IFhQQ19UWVBFX0RJQ1RJT05BUlkp
OworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZV93aXRoX3JlcGx5KG1fY29ubmVjdGlv
bi5nZXQoKSwgbWVzc2FnZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRy
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoeHBjX29i
amVjdF90IHJlcGx5KSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVwbHkpOworICAgIH0pLmdldCgpKTsKK30K
Kwordm9pZCBDb25uZWN0aW9uVG9NYWNoU2VydmljZTo6c2VuZChNZXNzYWdlVHlwZSBtZXNzYWdl
VHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlKSBjb25zdAoreworICAgIGluaXRpYWxpemVD
b25uZWN0aW9uSWZOZWVkZWQoKTsKKyAgICBDb25uZWN0aW9uOjpzZW5kKGRpY3Rpb25hcnlGcm9t
TWVzc2FnZShtZXNzYWdlVHlwZSwgV1RGTW92ZShtZXNzYWdlKSkuZ2V0KCkpOworfQorCit2b2lk
IENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjpzZW5kV2l0aFJlcGx5KE1lc3NhZ2VUeXBlIG1lc3Nh
Z2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RW5jb2RlZE1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBpbml0aWFsaXplQ29ubmVjdGlvbklmTmVlZGVk
KCk7CisKKyAgICBDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5KGRpY3Rpb25hcnlGcm9tTWVzc2Fn
ZShtZXNzYWdlVHlwZSwgV1RGTW92ZShtZXNzYWdlKSkuZ2V0KCksIFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoeHBjX29iamVjdF90IHJlcGx5KSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKHhwY19nZXRfdHlwZShyZXBseSkgIT0gWFBDX1RZUEVfRElDVElP
TkFSWSkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoeHBj
X2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXBseSwgcHJvdG9jb2xWZXJzaW9uS2V5KSAhPSBwcm90
b2NvbFZlcnNpb25WYWx1ZSkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgfQorICAg
ICAgICBzaXplX3QgZGF0YVNpemUgeyAwIH07CisgICAgICAgIGNvbnN0IHZvaWQqIGRhdGEgPSB4
cGNfZGljdGlvbmFyeV9nZXRfZGF0YShyZXBseSwgcHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSwg
JmRhdGFTaXplKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBzdGF0aWNfY2FzdDxjb25z
dCB1aW50OF90Kj4oZGF0YSksIGRhdGFTaXplIH0pOworICAgIH0pOworfQorCit9IC8vIG5hbWVz
cGFjZSBQQ00KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMWM2ZTZiZmU3MzE1MzllYTExODQzNzNhOGNlNmJhNTVlMmE5YzliOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCisrKyAvZGV2L251bGwKQEAgLTEsOTcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCi0KLSNpbXBvcnQgIlByaXZhdGVDbGlja01l
YXN1cmVtZW50WFBDVXRpbGl0aWVzLmgiCi0jaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLW5hbWVzcGFjZSBQQ00gewotCi1Db25uZWN0aW9uOjpD
b25uZWN0aW9uKENTdHJpbmcmJiBtYWNoU2VydmljZU5hbWUpCi0gICAgOiBtX21hY2hTZXJ2aWNl
TmFtZShXVEZNb3ZlKG1hY2hTZXJ2aWNlTmFtZSkpIHsgfQotCi12b2lkIENvbm5lY3Rpb246Omlu
aXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKSBjb25zdAotewotICAgIGlmIChtX2Nvbm5lY3Rp
b24pCi0gICAgICAgIHJldHVybjsKLSAgICBtX2Nvbm5lY3Rpb24gPSBhZG9wdE9TT2JqZWN0KHhw
Y19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2UobV9tYWNoU2VydmljZU5hbWUuZGF0YSgp
LCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCAwKSk7Ci0gICAgeHBjX2Nvbm5lY3Rpb25fc2V0
X2V2ZW50X2hhbmRsZXIobV9jb25uZWN0aW9uLmdldCgpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyldKHhwY19vYmplY3RfdCBldmVudCkgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoZXZlbnQgPT0gWFBDX0VSUk9SX0NPTk5F
Q1RJT05fSU5WQUxJRCkKLSAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiRmFpbGVkIHRvIGNvbm5l
Y3QgdG8gbWFjaCBzZXJ2aWNlICVzLCBsaWtlbHkgYmVjYXVzZSBpdCBpcyBub3QgcmVnaXN0ZXJl
ZCB3aXRoIGxhdW5jaGQiLCB3ZWFrVGhpcy0+bV9tYWNoU2VydmljZU5hbWUuZGF0YSgpKTsKLSAg
ICAgICAgaWYgKGV2ZW50ID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVEVSUlVQVEVEKSB7Ci0g
ICAgICAgICAgICAvLyBEYWVtb24gY3Jhc2hlZCwgd2Ugd2lsbCBuZWVkIHRvIG1ha2UgYSBuZXcg
Y29ubmVjdGlvbiB0byBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgZGFlbW9uLgotICAgICAgICAgICAg
d2Vha1RoaXMtPm1fY29ubmVjdGlvbiA9IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9KTsKLSAg
ICB4cGNfY29ubmVjdGlvbl9hY3RpdmF0ZShtX2Nvbm5lY3Rpb24uZ2V0KCkpOwotfQotCi1zdGF0
aWMgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiBkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UoTWVzc2Fn
ZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSkKLXsKLSAgICBhdXRv
IGRpY3Rpb25hcnkgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRy
LCBudWxscHRyLCAwKSk7Ci0gICAgYWRkVmVyc2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9u
YXJ5KFdURk1vdmUobWVzc2FnZSksIGRpY3Rpb25hcnkuZ2V0KCkpOwotICAgIHhwY19kaWN0aW9u
YXJ5X3NldF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgcHJvdG9jb2xNZXNzYWdlVHlwZUtleSwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1lc3NhZ2VUeXBlKSk7Ci0gICAgcmV0dXJuIGRpY3Rpb25h
cnk7Ci19Ci0KLXZvaWQgQ29ubmVjdGlvbjo6c2VuZChNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwg
RW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlKSBjb25zdAotewotICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7Ci0gICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOwotCi0gICAgeHBj
X2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKG1fY29ubmVjdGlvbi5nZXQoKSwgZGljdGlvbmFyeUZy
b21NZXNzYWdlKG1lc3NhZ2VUeXBlLCBXVEZNb3ZlKG1lc3NhZ2UpKS5nZXQoKSk7Ci19Ci0KLXZv
aWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5j
b2RlZE1lc3NhZ2UmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNz
YWdlJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAotewotICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7Ci0gICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOwotCi0gICAg
YXV0byBkaWN0aW9uYXJ5ID0gZGljdGlvbmFyeUZyb21NZXNzYWdlKG1lc3NhZ2VUeXBlLCBXVEZN
b3ZlKG1lc3NhZ2UpKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2Vfd2l0aF9yZXBs
eShtX2Nvbm5lY3Rpb24uZ2V0KCksIGRpY3Rpb25hcnkuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIG1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKHhwY19vYmplY3RfdCByZXBseSkgbXV0YWJsZSB7Ci0gICAgICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICh4cGNfZ2V0X3R5cGUocmVwbHkp
ICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVwbHksIHByb3RvY29s
VmVyc2lvbktleSkgIT0gcHJvdG9jb2xWZXJzaW9uVmFsdWUpIHsKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7Ci0gICAgICAgIH0KLSAgICAgICAgc2l6ZV90IGRhdGFTaXplIHsgMCB9OwotICAgICAgICBj
b25zdCB2b2lkKiBkYXRhID0geHBjX2RpY3Rpb25hcnlfZ2V0X2RhdGEocmVwbHksIHByb3RvY29s
RW5jb2RlZE1lc3NhZ2VLZXksICZkYXRhU2l6ZSk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBkYXRhU2l6ZSB9KTsKLSAgICB9
KS5nZXQoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFBDTQotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMv
Q29jb2EvRGFlbW9uL1BDTURhZW1vbkNvbm5lY3Rpb25TZXQuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkNvbm5lY3Rpb25T
ZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ZTEzNDI3MDhjY2FiZjViZDk5ZDk0MTQ1MjVmZDA4NDI3ZjllOWVj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uQ29ubmVjdGlvblNldC5oCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQ
Q1NQSS5oPgorCituYW1lc3BhY2UgSlNDIHsKK2VudW0gY2xhc3MgTWVzc2FnZUxldmVsIDogdWlu
dDhfdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgUENNIHsKKworY2xhc3Mg
Q29ubmVjdGlvbjsKKworY2xhc3MgRGFlbW9uQ29ubmVjdGlvblNldCB7CitwdWJsaWM6CisgICAg
c3RhdGljIERhZW1vbkNvbm5lY3Rpb25TZXQmIHNpbmdsZXRvbigpOworICAgIAorICAgIHZvaWQg
YWRkKHhwY19jb25uZWN0aW9uX3QpOworICAgIHZvaWQgcmVtb3ZlKHhwY19jb25uZWN0aW9uX3Qp
OworCisgICAgdm9pZCBzZXRDb25uZWN0ZWROZXR3b3JrUHJvY2Vzc0hhc0RlYnVnTW9kZUVuYWJs
ZWQoY29uc3QgQ29ubmVjdGlvbiYsIGJvb2wpOworICAgIGJvb2wgZGVidWdNb2RlRW5hYmxlZCgp
IGNvbnN0OworICAgIHZvaWQgYnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlTGV2
ZWwsIGNvbnN0IFN0cmluZyYpOworICAgIAorcHJpdmF0ZToKKyAgICBlbnVtIGNsYXNzIERlYnVn
TW9kZUVuYWJsZWQgOiBib29sIHsgTm8sIFllcyB9OworICAgIEhhc2hNYXA8UmV0YWluUHRyPHhw
Y19jb25uZWN0aW9uX3Q+LCBEZWJ1Z01vZGVFbmFibGVkPiBtX2Nvbm5lY3Rpb25zOworICAgIHNp
emVfdCBtX2Nvbm5lY3Rpb25zV2l0aERlYnVnTW9kZUVuYWJsZWQgeyAwIH07Cit9OworCit9IC8v
IG5hbWVzcGFjZSBQQ00KK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9u
Q29ubmVjdGlvblNldC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRp
ZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkNvbm5lY3Rpb25TZXQubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjNj
MjExM2M3OWI3YmM1ZDE5MDAwZWZlN2UwMTRmNjEzOTdiNDM4MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BD
TURhZW1vbkNvbm5lY3Rpb25TZXQubW0KQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUENNRGFlbW9uQ29ubmVjdGlvblNldC5oIgorCisj
aW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKyNpbXBvcnQgIlBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIgorI2ltcG9ydCA8d3RmL09T
T2JqZWN0UHRyLmg+CisjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK25hbWVzcGFjZSBQQ00geworCitEYWVtb25Db25uZWN0aW9uU2V0JiBEYWVtb25Db25uZWN0
aW9uU2V0OjpzaW5nbGV0b24oKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPERhZW1vbkNvbm5lY3Rpb25TZXQ+IHNldDsKKyAgICBy
ZXR1cm4gc2V0LmdldCgpOworfQorICAgIAordm9pZCBEYWVtb25Db25uZWN0aW9uU2V0OjphZGQo
eHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQoreworICAgIEFTU0VSVCghbV9jb25uZWN0aW9u
cy5jb250YWlucyhjb25uZWN0aW9uKSk7CisgICAgbV9jb25uZWN0aW9ucy5zZXQoY29ubmVjdGlv
biwgRGVidWdNb2RlRW5hYmxlZDo6Tm8pOworfQorCit2b2lkIERhZW1vbkNvbm5lY3Rpb25TZXQ6
OnJlbW92ZSh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pCit7CisgICAgQVNTRVJUKG1fY29u
bmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbikpOworICAgIGF1dG8gaGFkRGVidWdNb2RlRW5h
YmxlZCA9IG1fY29ubmVjdGlvbnMudGFrZShjb25uZWN0aW9uKTsKKyAgICBpZiAoaGFkRGVidWdN
b2RlRW5hYmxlZCA9PSBEZWJ1Z01vZGVFbmFibGVkOjpZZXMpIHsKKyAgICAgICAgQVNTRVJUKG1f
Y29ubmVjdGlvbnNXaXRoRGVidWdNb2RlRW5hYmxlZCk7CisgICAgICAgIG1fY29ubmVjdGlvbnNX
aXRoRGVidWdNb2RlRW5hYmxlZC0tOworICAgIH0KK30KKwordm9pZCBEYWVtb25Db25uZWN0aW9u
U2V0OjpzZXRDb25uZWN0ZWROZXR3b3JrUHJvY2Vzc0hhc0RlYnVnTW9kZUVuYWJsZWQoY29uc3Qg
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgYm9vbCBlbmFibGVkKQoreworICAgIGF1dG8gaXRlcmF0
b3IgPSBtX2Nvbm5lY3Rpb25zLmZpbmQoY29ubmVjdGlvbi5nZXQoKSk7CisgICAgaWYgKGl0ZXJh
dG9yID09IG1fY29ubmVjdGlvbnMuZW5kKCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYm9vbCB3YXNFbmFibGVkID0gaXRlcmF0
b3ItPnZhbHVlID09IERlYnVnTW9kZUVuYWJsZWQ6OlllczsKKyAgICBpZiAod2FzRW5hYmxlZCA9
PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZW5hYmxlZCkgeworICAgICAg
ICBpdGVyYXRvci0+dmFsdWUgPSBEZWJ1Z01vZGVFbmFibGVkOjpZZXM7CisgICAgICAgIG1fY29u
bmVjdGlvbnNXaXRoRGVidWdNb2RlRW5hYmxlZCsrOworICAgIH0gZWxzZSB7CisgICAgICAgIGl0
ZXJhdG9yLT52YWx1ZSA9IERlYnVnTW9kZUVuYWJsZWQ6Ok5vOworICAgICAgICBtX2Nvbm5lY3Rp
b25zV2l0aERlYnVnTW9kZUVuYWJsZWQtLTsKKyAgICB9Cit9CisKK2Jvb2wgRGFlbW9uQ29ubmVj
dGlvblNldDo6ZGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICEhbV9jb25u
ZWN0aW9uc1dpdGhEZWJ1Z01vZGVFbmFibGVkOworfQorCit2b2lkIERhZW1vbkNvbm5lY3Rpb25T
ZXQ6OmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKEpTQzo6TWVzc2FnZUxldmVsIG1lc3NhZ2VMZXZl
bCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0
T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAg
ICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnkuZ2V0KCksIHByb3RvY29sRGVi
dWdNZXNzYWdlTGV2ZWxLZXksIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtZXNzYWdlTGV2ZWwpKTsK
KyAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKGRpY3Rpb25hcnkuZ2V0KCksIHByb3RvY29s
RGVidWdNZXNzYWdlS2V5LCBtZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgIGZvciAoYXV0byYg
Y29ubmVjdGlvbiA6IG1fY29ubmVjdGlvbnMua2V5cygpKQorICAgICAgICB4cGNfY29ubmVjdGlv
bl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbi5nZXQoKSwgZGljdGlvbmFyeS5nZXQoKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFBDTQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01E
YWVtb25FbnRyeVBvaW50Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbQppbmRleCA1NDhmZjUxNjRj
NmQ2ZjE5YmU1MWQ0ZjQ2OGRkN2JmNWQ0M2E0ODZkLi45NDYxNjFmNTQ2Y2IwYmU4MDE0NjlmNDUx
YmYwZmFkZTIwZWEwMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRyeVBvaW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURh
ZW1vbkVudHJ5UG9pbnQubW0KQEAgLTI2LDcgKzI2LDkgQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiUENNRGFlbW9uRW50cnlQb2ludC5oIgogCisjaW1wb3J0ICJQQ01EYWVtb25Db25u
ZWN0aW9uU2V0LmgiCiAjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24u
aCIKKyNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50RGVjb2Rlci5oIgogI2ltcG9ydCAi
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgiCiAjaW1wb3J0ICJQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+CkBAIC00MywxMyArNDUsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
c3RhdGljIEhhc2hTZXQ8UmV0YWluUHRyPHhwY19jb25uZWN0aW9uX3Q+PiYgcGVlcnMoKQotewot
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEhhc2hTZXQ8UmV0YWluUHRyPHhwY19jb25uZWN0aW9uX3Q+Pj4gc2V0OwotICAgIHJldHVybiBz
ZXQuZ2V0KCk7Ci19Ci0KIHN0YXRpYyBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFBDTTo6RW5jb2Rl
ZE1lc3NhZ2UmJik+IHJlcGx5U2VuZGVyKFBDTTo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIE9T
T2JqZWN0UHRyPHhwY19vYmplY3RfdD4mJiByZXF1ZXN0KQogewogICAgIGlmICghUENNOjptZXNz
YWdlVHlwZVNlbmRzUmVwbHkobWVzc2FnZVR5cGUpKQpAQCAtNzQsNyArNjksNyBAQCBzdGF0aWMg
dm9pZCBjb25uZWN0aW9uRXZlbnRIYW5kbGVyKHhwY19vYmplY3RfdCByZXF1ZXN0KQogICAgIHNp
emVfdCBkYXRhU2l6ZSB7IDAgfTsKICAgICBjb25zdCB2b2lkKiBkYXRhID0geHBjX2RpY3Rpb25h
cnlfZ2V0X2RhdGEocmVxdWVzdCwgUENNOjpwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCAmZGF0
YVNpemUpOwogICAgIFBDTTo6RW5jb2RlZE1lc3NhZ2UgZW5jb2RlZE1lc3NhZ2UgeyBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFTaXplIH07Ci0gICAgZGVjb2RlTWVzc2Fn
ZUFuZFNlbmRUb01hbmFnZXIobWVzc2FnZVR5cGUsIFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpLCBy
ZXBseVNlbmRlcihtZXNzYWdlVHlwZSwgcmVxdWVzdCkpOworICAgIGRlY29kZU1lc3NhZ2VBbmRT
ZW5kVG9NYW5hZ2VyKFBDTTo6Q29ubmVjdGlvbih4cGNfZGljdGlvbmFyeV9nZXRfcmVtb3RlX2Nv
bm5lY3Rpb24ocmVxdWVzdCkpLCBtZXNzYWdlVHlwZSwgV1RGTW92ZShlbmNvZGVkTWVzc2FnZSks
IHJlcGx5U2VuZGVyKG1lc3NhZ2VUeXBlLCByZXF1ZXN0KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHN0
YXJ0TGlzdGVuaW5nRm9yTWFjaFNlcnZpY2VDb25uZWN0aW9ucyhjb25zdCBjaGFyKiBzZXJ2aWNl
TmFtZSkKQEAgLTkxLDcgKzg2LDcgQEAgc3RhdGljIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JNYWNo
U2VydmljZUNvbm5lY3Rpb25zKGNvbnN0IGNoYXIqIHNlcnZpY2VOYW1lKQogICAgICAgICAgICAg
ICAgIE5TTG9nKEAiRmFpbGVkIHRvIHN0YXJ0IGxpc3RlbmluZyBmb3IgY29ubmVjdGlvbnMgdG8g
bWFjaCBzZXJ2aWNlICVzLCBsaWtlbHkgYmVjYXVzZSBpdCBpcyBub3QgcmVnaXN0ZXJlZCB3aXRo
IGxhdW5jaGQiLCBzZXJ2aWNlTmFtZSk7CiAgICAgICAgICAgICBpZiAoZXZlbnQgPT0gWFBDX0VS
Uk9SX0NPTk5FQ1RJT05fSU5URVJSVVBURUQpIHsKICAgICAgICAgICAgICAgICBOU0xvZyhAInJl
bW92aW5nIHBlZXIgY29ubmVjdGlvbiAlcCIsIHBlZXIpOwotICAgICAgICAgICAgICAgIHBlZXJz
KCkucmVtb3ZlKHBlZXIpOworICAgICAgICAgICAgICAgIFBDTTo6RGFlbW9uQ29ubmVjdGlvblNl
dDo6c2luZ2xldG9uKCkucmVtb3ZlKHBlZXIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbm5lY3Rpb25FdmVudEhhbmRsZXIoZXZlbnQpOwpA
QCAtMTAwLDcgKzk1LDcgQEAgc3RhdGljIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2Vydmlj
ZUNvbm5lY3Rpb25zKGNvbnN0IGNoYXIqIHNlcnZpY2VOYW1lKQogICAgICAgICB4cGNfY29ubmVj
dGlvbl9hY3RpdmF0ZShwZWVyKTsKIAogICAgICAgICBOU0xvZyhAImFkZGluZyBwZWVyIGNvbm5l
Y3Rpb24gJXAiLCBwZWVyKTsKLSAgICAgICAgcGVlcnMoKS5hZGQocGVlcik7CisgICAgICAgIFBD
TTo6RGFlbW9uQ29ubmVjdGlvblNldDo6c2luZ2xldG9uKCkuYWRkKHBlZXIpOwogICAgIH0pOwog
ICAgIHhwY19jb25uZWN0aW9uX2FjdGl2YXRlKGxpc3RlbmVyLmdldCgpLmdldCgpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAppbmRleCA1ZTZiNTJjMTIxMTQ2YzZkNTNhY2U2NjVkNjVjMjU2ZmRl
NWU5NTkzLi40M2I0YzJkYjI4MTNhODdjZTBlMDkwOWU1ZmFjY2U0NDJjZDZlNmI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CkBAIC00MSw3ICs0MSw3IEBAIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L0NvY29h
L0RhZW1vbi9EYWVtb25FbnRyeVBvaW50Lm1tCiBOZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L0Nv
Y29hL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tCiAKLU5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCitOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb25Db2NvYS5tbQog
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29jb2EubW0KIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVz
Lm1tCiAKQEAgLTE5Myw2ICsxOTMsNyBAQCBTaGFyZWQvQ29jb2EvV0tOU1VSTFJlcXVlc3QubW0K
IFNoYXJlZC9Db2NvYS9XS09iamVjdC5tbQogU2hhcmVkL0NvY29hL1dlYlByZWZlcmVuY2VzRGVm
YXVsdFZhbHVlc0NvY29hLm1tCiAKK1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0Rh
ZW1vbi9QQ01EYWVtb25Db25uZWN0aW9uU2V0Lm1tCiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGll
cy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbQogCiBTaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbQppbmRleCA3YjA5ZTVhNTUxNzM5MzNkYmNlNjJjNDZlNzk1NTE2ZDE3ZjFiNWRjLi40
MWFiMmQwNzViZTNmYTNkN2Q5YWM0ZWVjZWNiMzcwZGUzYmY5ZDI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0K
QEAgLTY1OCw2ICs2NTgsMTEgQEAgc3RhdGljIFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVj
b3JkPiB0b1dlYnNpdGVEYXRhUmVjb3JkcyhOU0FycmF5ICpkYXRhUmVjb3IKICAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+YWxsb3dUTFNDZXJ0aWZpY2F0ZUNoYWluRm9yTG9jYWxQQ01UZXN0aW5nKFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyhzZXJ2ZXJUcnVzdCkpOwogfQogCistICh2b2lkKV9zZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWRGb3JUZXN0aW5nOihCT09MKWVu
YWJsZWQKK3sKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREZWJ1Z01vZGUoZW5hYmxlZCk7Cit9CisKIC0gKHZvaWQpX2FwcEJvdW5kRG9tYWluczoodm9p
ZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVO
QUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IGE5
ZGJmMTUyMWQ2N2ExNDQ1NjBhZmFkNjI0NTNjNTY1ZjU3YzIzNTQuLmU3NWZjNmEyMzgxZjYxOWIw
ZTcwODA0MGZmNDljM2E1NDBhY2U4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAt
ODUsNiArODUsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURh
dGFTdG9yZUZldGNoT3B0aW9ucykgewogCiAtICh2b2lkKV9hbGxvd1RMU0NlcnRpZmljYXRlQ2hh
aW46KE5TQXJyYXkgKiljZXJ0aWZpY2F0ZUNoYWluIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogLSAodm9pZClfdHJ1c3RT
ZXJ2ZXJGb3JMb2NhbFBDTVRlc3Rpbmc6KFNlY1RydXN0UmVmKXNlcnZlclRydXN0IFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9z
ZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWRGb3JUZXN0aW5nOihCT09M
KWVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIAogLSAodm9pZClfcmVuYW1lT3JpZ2luOihOU1VSTCAqKW9sZE5hbWUgdG86KE5TVVJM
ICopbmV3TmFtZSBmb3JEYXRhT2ZUeXBlczooTlNTZXQ8TlNTdHJpbmcgKj4gKilkYXRhVHlwZXMg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBk
MWM2OTUxNWJiMTgyZGZhNWE1NDA3NzQ4NjRmNzNlYzI5OGM0MWQ5Li5iYTIzNzllYzRlMDk3YTIz
NjRhZmRhNGZiMjczNGY2ZmQxN2QxZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ1MzcsNiArNDUzNyw4IEBACiAJCTVDNUQyMzg4
MjI3QTE4OTIwMDBCOUJEQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNUQyMzg5MjI3QTE4OTIwMDBCOUJEQSAvKiBf
V0tDdXN0b21IZWFkZXJGaWVsZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
X1dLQ3VzdG9tSGVhZGVyRmllbGRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
NUQyMzhBMjI3QTFEOUIwMDBCOUJEQSAvKiBBUElDdXN0b21IZWFkZXJGaWVsZHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQ3VzdG9tSGVhZGVyRmllbGRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNjI4OUE4MjcwNjhFQzAwMENGNUVDNiAvKiBQQ01E
YWVtb25Db25uZWN0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBDTURhZW1vbkNvbm5lY3Rpb25T
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM2Mjg5QTkyNzA2OEVDMDAwQ0Y1
RUM2IC8qIFBDTURhZW1vbkNvbm5lY3Rpb25TZXQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
Q01EYWVtb25Db25uZWN0aW9uU2V0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
QzYyRkRGODFFRkMyNjNDMDBDRTA3MkUgLyogV0tVUkxTY2hlbWVUYXNrUHJpdmF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1VSTFNjaGVtZVRhc2tQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDNjZBNEIzMjMyMDk2MTMwMEVBNEQ0NCAvKiBXS0hUVFBDb29raWVTdG9yZVJl
Zi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0hUVFBDb29raWVT
dG9yZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjZBNEI0MjMyMDk2
MTQwMEVBNEQ0NCAvKiBXS0hUVFBDb29raWVTdG9yZVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yZVJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNDYwMCw3ICs0NjAyLDcgQEAKIAkJNUNCOTMwQzAyNkUwNTQyRjAwMzJCMUMw
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0I5MzBDMTI2RTA1NEI4MDAzMkIx
QzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0I5MzBGMjI2RTdFRUUwMDAzMkIxQzAgLyog
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9hZGVyQ29jb2EubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdv
cmtMb2FkZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCOTMwRjQy
NkU4MDFFODAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlv
bkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
YWVtb25Db25uZWN0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
QjkzMEY0MjZFODAxRTgwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rp
b25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50
Q29ubmVjdGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0I5MzBG
NTI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCOTMwRjYy
NkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50
RGFlbW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjkzMEY3MjZF
ODAyMTUwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudERhZW1vbkNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDY4
LDcgKzk0NzAsNyBAQAogCQk1Q0I5MzBGMTI2RTdFRTg5MDAzMkIxQzAgLyogY29jb2EgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTVDQjkzMEY0MjZFODAx
RTgwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2Nv
YS5tbSAqLywKKwkJCQk1Q0I5MzBGNDI2RTgwMUU4MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRDb25uZWN0aW9uQ29jb2EubW0gKi8sCiAJCQkJNUNCOTMwRjIyNkU3RUVFMDAwMzJC
MUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tICovLAog
CQkJCTVDQjkzMTA3MjZFODQxQ0IwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQ
Q1V0aWxpdGllcy5oICovLAogCQkJCTVDQjkzMTA4MjZFODQxQ0IwMDMyQjFDMCAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5tbSAqLywKQEAgLTk0ODAsNiArOTQ4Miw4IEBA
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTVDQUY3QUE1MjZGOTNB
OTUwMDAzRjE5RSAvKiBBZEF0dHJpYnV0aW9uRGFlbW9uLmMgKi8sCisJCQkJNUM2Mjg5QTgyNzA2
OEVDMDAwQ0Y1RUM2IC8qIFBDTURhZW1vbkNvbm5lY3Rpb25TZXQuaCAqLywKKwkJCQk1QzYyODlB
OTI3MDY4RUMwMDBDRjVFQzYgLyogUENNRGFlbW9uQ29ubmVjdGlvblNldC5tbSAqLywKIAkJCQk1
Q0I5MzEwNDI2RTgzN0ZDMDAzMkIxQzAgLyogUENNRGFlbW9uRW50cnlQb2ludC5oICovLAogCQkJ
CTVDQjkzMTA1MjZFODM3RkQwMDMyQjFDMCAvKiBQQ01EYWVtb25FbnRyeVBvaW50Lm1tICovLAog
CQkJKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBjYzU0ODUzOWExYzBkOGZmMDJhMzAwYWMwODlkYmEzNTQ5NWZlOTQ2Li44Y2Q5NTE1ZGIwMmZl
ODAyNjgyZWM5NWYzYmVkMmI3OGYxZmFmNWFjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMTAtMDQgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1l
bnQgbWlzc2luZyBmdW5jdGlvbnMgaW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGll
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA2
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6dGVzdERhZW1vblBMaXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OmNsZWFuVXBEYWVtb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUubW06CisgICAgICAgICgtW1Rlc3RVSURl
bGVnYXRlIF93ZWJWaWV3OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOl0pOgorICAgICAgICAoLVtU
ZXN0VUlEZWxlZ2F0ZSB3YWl0Rm9ySW5zcGVjdG9yVG9TaG93XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfdGVzdF93YWl0Rm9ySW5zcGVjdG9yVG9TaG93XSk6CisKIDIwMjEtMTAtMDQgIEFha2Fz
aCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFNlbmQgRVdTIGV4Y2Vw
dGlvbiBlbWFpbHMgdG8gYm90IHdhdGNoZXJzIGluc3RlYWQgb2YgQWFrYXNoCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRp
b24ubW0KaW5kZXggOTQwMTk2N2FlMTAyZTA0YjU0MmQ0ZTg3N2VkYzk0ZjMzNDVmNzNlMi4uZjY2
ODdjNTRhM2I4ODAxMjMxMmZmMmY0MzcxYzcyYmE1NjRlOGNiMCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5t
bQpAQCAtMjksMTIgKzI5LDE2IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2lt
cG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9y
dCAiVGVzdFVJRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQg
IlV0aWxpdGllcy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgog
I2ltcG9ydCA8V2ViS2l0L1dLTWFpbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3Rvci5o
PgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CiAj
aW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CkBAIC0x
MTAsNyArMTE0LDcgQEAgc3RhdGljIHZvaWQgY2xlYXJTdGF0ZSgpCiAgICAgW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6YWRvcHROUyhbW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSkuZ2V0KCkuX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkgZXJyb3I6bmlsXTsKIH0KIAotdm9pZCBydW5CYXNpY0V2ZW50QXR0
cmlidXRpb25UZXN0KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24sIEZ1bmN0
aW9uPHZvaWQoV0tXZWJWaWV3ICosIGNvbnN0IEhUVFBTZXJ2ZXImKT4mJiBhZGRBdHRyaWJ1dGlv
blRvV2ViVmlldykKK3ZvaWQgcnVuQmFzaWNQQ01UZXN0KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24g
KmNvbmZpZ3VyYXRpb24sIEZ1bmN0aW9uPHZvaWQoV0tXZWJWaWV3ICosIGNvbnN0IEhUVFBTZXJ2
ZXImKT4mJiBhZGRBdHRyaWJ1dGlvblRvV2ViVmlldykKIHsKICAgICBjbGVhclN0YXRlKCk7CiAg
ICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0TmV0d29ya1Byb2Nlc3NTdXNwZW5zaW9uQWxsb3dl
ZEZvclRlc3Rpbmc6Tk9dOwpAQCAtMTYzLDcgKzE2Nyw3IEBAIHZvaWQgcnVuQmFzaWNFdmVudEF0
dHJpYnV0aW9uVGVzdChXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uLCBGdW5j
dGlvCiB9CiAKICNpZiBIQVZFKFJTQV9CU1NBKQotVEVTVChFdmVudEF0dHJpYnV0aW9uLCBGcmF1
ZFByZXZlbnRpb24pCitURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBGcmF1ZFByZXZlbnRp
b24pCiB7CiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0TmV0d29ya1Byb2Nlc3NTdXNwZW5z
aW9uQWxsb3dlZEZvclRlc3Rpbmc6Tk9dOwogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwpAQCAtMzE3
LDE0ICszMjEsMTQgQEAgVEVTVChFdmVudEF0dHJpYnV0aW9uLCBGcmF1ZFByZXZlbnRpb24pCiB9
CiAjZW5kaWYKIAotVEVTVChFdmVudEF0dHJpYnV0aW9uLCBCYXNpYykKK1RFU1QoUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsIEJhc2ljKQogewotICAgIHJ1bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRl
c3QobmlsLCBbXShXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IEhUVFBTZXJ2ZXImIHNlcnZlcikg
eworICAgIHJ1bkJhc2ljUENNVGVzdChuaWwsIFtdKFdLV2ViVmlldyAqd2ViVmlldywgY29uc3Qg
SFRUUFNlcnZlciYgc2VydmVyKSB7CiAgICAgICAgIFt3ZWJWaWV3IF9hZGRFdmVudEF0dHJpYnV0
aW9uV2l0aFNvdXJjZUlEOjQyIGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVVUkwoKSBzb3VyY2VEZXNj
cmlwdGlvbjpAInRlc3Qgc291cmNlIGRlc2NyaXB0aW9uIiBwdXJjaGFzZXI6QCJ0ZXN0IHB1cmNo
YXNlciIgcmVwb3J0RW5kcG9pbnQ6c2VydmVyLnJlcXVlc3QoKS5VUkwgb3B0aW9uYWxOb25jZTpu
aWwgYXBwbGljYXRpb25CdW5kbGVJRDpAInRlc3QuYnVuZGxlLmlkIl07CiAgICAgfSk7CiB9CiAK
LVRFU1QoRXZlbnRBdHRyaWJ1dGlvbiwgRGF0YWJhc2VMb2NhdGlvbikKK1RFU1QoUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsIERhdGFiYXNlTG9jYXRpb24pCiB7CiAgICAgTlNGaWxlTWFuYWdlciAq
ZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CiAgICAgTlNVUkwg
KnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgp
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkV2ZW50QXR0cmlidXRpb25EYXRhYmFz
ZUxvY2F0aW9uVGVzdCJdIGlzRGlyZWN0b3J5OllFU107CkBAIC0zNDEsNyArMzQ1LDcgQEAgVEVT
VChFdmVudEF0dHJpYnV0aW9uLCBEYXRhYmFzZUxvY2F0aW9uKQogICAgICAgICBhdXRvIHZpZXdD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKICAg
ICAgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
ICAgICAgICAgdmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGRhdGFT
dG9yZS5nZXQoKTsKLSAgICAgICAgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdCh2aWV3Q29u
ZmlndXJhdGlvbi5nZXQoKSwgW10oV0tXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBIVFRQU2VydmVy
JiBzZXJ2ZXIpIHsKKyAgICAgICAgcnVuQmFzaWNQQ01UZXN0KHZpZXdDb25maWd1cmF0aW9uLmdl
dCgpLCBbXShXS1dlYlZpZXcgKndlYlZpZXcsIGNvbnN0IEhUVFBTZXJ2ZXImIHNlcnZlcikgewog
ICAgICAgICAgICAgW3dlYlZpZXcgX2FkZEV2ZW50QXR0cmlidXRpb25XaXRoU291cmNlSUQ6NDIg
ZGVzdGluYXRpb25VUkw6ZXhhbXBsZVVSTCgpIHNvdXJjZURlc2NyaXB0aW9uOkAidGVzdCBzb3Vy
Y2UgZGVzY3JpcHRpb24iIHB1cmNoYXNlcjpAInRlc3QgcHVyY2hhc2VyIiByZXBvcnRFbmRwb2lu
dDpzZXJ2ZXIucmVxdWVzdCgpLlVSTCBvcHRpb25hbE5vbmNlOm5pbCBhcHBsaWNhdGlvbkJ1bmRs
ZUlEOkAidGVzdC5idW5kbGUuaWQiXTsKICAgICAgICAgfSk7CiAgICAgICAgIG9yaWdpbmFsTmV0
d29ya1Byb2Nlc3NQaWQgPSBbZGF0YVN0b3JlIF9uZXR3b3JrUHJvY2Vzc0lkZW50aWZpZXJdOwpA
QCAtMzY3LDYgKzM3MSwzMCBAQCBURVNUKEV2ZW50QXR0cmlidXRpb24sIERhdGFiYXNlTG9jYXRp
b24pCiAgICAgRVhQRUNUX0VRKHdlYlZpZXdUb0tlZXBOZXR3b3JrUHJvY2Vzc0FsaXZlLmdldCgp
LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZS5fbmV0d29ya1Byb2Nlc3NJZGVudGlmaWVy
LCBvcmlnaW5hbE5ldHdvcmtQcm9jZXNzUGlkKTsKIH0KIAorc3RhdGljIHZvaWQgc2V0SW5qZWN0
ZWRCdW5kbGVDbGllbnQoV0tXZWJWaWV3ICp3ZWJWaWV3LCBWZWN0b3I8U3RyaW5nPiYgY29uc29s
ZU1lc3NhZ2VzKQoreworICAgIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjAgaW5qZWN0ZWRC
dW5kbGVDbGllbnQgPSB7CisgICAgICAgIHsgMCwgJmNvbnNvbGVNZXNzYWdlcyB9LAorICAgICAg
ICBbXSAoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3Nh
Z2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8mIGNvbnNvbGVN
ZXNzYWdlcyA9ICpyZWludGVycHJldF9jYXN0PFZlY3RvcjxTdHJpbmc+Kj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpOworICAgICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJDb25zb2xlTWVzc2FnZSIpKQorICAgICAgICAgICAgICAg
IGNvbnNvbGVNZXNzYWdlcy5hcHBlbmQoVXRpbDo6dG9OUygoV0tTdHJpbmdSZWYpbWVzc2FnZSkp
OworICAgICAgICB9LAorICAgICAgICBudWxscHRyLAorICAgIH07CisgICAgV0tQYWdlU2V0UGFn
ZUluamVjdGVkQnVuZGxlQ2xpZW50KHdlYlZpZXcuX3BhZ2VSZWZGb3JUcmFuc2l0aW9uVG9XS1dl
YlZpZXcsICZpbmplY3RlZEJ1bmRsZUNsaWVudC5iYXNlKTsKK307CisKK3N0YXRpYyBSZXRhaW5Q
dHI8VGVzdFdLV2ViVmlldz4gd2ViVmlld1dpdGhPcGVuSW5zcGVjdG9yKFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCit7CisgICAgY29uZmlndXJhdGlvbi5wcmVmZXJlbmNl
cy5fZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0IGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
SFRNTFN0cmluZzpAInN0YXJ0IHByb2Nlc3NlcyJdOworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9y
XSBzaG93XTsKKyAgICBbd2ViVmlldyBfdGVzdF93YWl0Rm9ySW5zcGVjdG9yVG9TaG93XTsKKyAg
ICByZXR1cm4gd2ViVmlldzsKK30KKwogLy8gRklYTUU6IEdldCB0aGlzIHdvcmtpbmcgaW4gdGhl
IGlPUyBzaW11bGF0b3IuCiAjaWYgUExBVEZPUk0oTUFDKQogCkBAIC00MDAsNiArNDI4LDcgQEAg
c3RhdGljIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4gdGVzdERhZW1vblBMaXN0KE5TVVJMICpz
dG9yYWdlTG9jYXRpb24pCiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhwbGlzdC5nZXQo
KSwgIl9NYW5hZ2VkQnkiLCAiVGVzdFdlYktpdEFQSSIpOwogICAgIHhwY19kaWN0aW9uYXJ5X3Nl
dF9zdHJpbmcocGxpc3QuZ2V0KCksICJMYWJlbCIsICJvcmcud2Via2l0LnBjbXRlc3RkYWVtb24i
KTsKICAgICB4cGNfZGljdGlvbmFyeV9zZXRfYm9vbChwbGlzdC5nZXQoKSwgIkxhdW5jaE9ubHlP
bmNlIiwgdHJ1ZSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhwbGlzdC5nZXQoKSwg
IlN0YW5kYXJkRXJyb3JQYXRoIiwgW3N0b3JhZ2VMb2NhdGlvbiBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJkYWVtb25fc3RkZXJyIl0ucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb24p
OwogCiAgICAgewogICAgICAgICBhdXRvIGVudmlyb25tZW50VmFyaWFibGVzID0gYWRvcHRPU09i
amVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwpAQCAtNDMx
LDYgKzQ2MCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB0ZXN0RGFlbW9uUExp
c3QoTlNVUkwgKnN0b3JhZ2VMb2NhdGlvbikKICAgICByZXR1cm4gQHsKICAgICAgICAgQCJMYWJl
bCIgOiBAIm9yZy53ZWJraXQucGNtdGVzdGRhZW1vbiIsCiAgICAgICAgIEAiTGF1bmNoT25seU9u
Y2UiIDogQFlFUywKKyAgICAgICAgQCJTdGFuZGFyZEVycm9yUGF0aCIgOiBbc3RvcmFnZUxvY2F0
aW9uIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImRhZW1vbl9zdGRlcnIiXS5wYXRoLAog
ICAgICAgICBAIkVudmlyb25tZW50VmFyaWFibGVzIiA6IEB7IEAiRFlMRF9GUkFNRVdPUktfUEFU
SCIgOiBjdXJyZW50RXhlY3V0YWJsZURpcmVjdG9yeSgpLmdldCgpLnBhdGggfSwKICAgICAgICAg
QCJNYWNoU2VydmljZXMiIDogQHsgQCJvcmcud2Via2l0LnBjbXRlc3RkYWVtb24uc2VydmljZSIg
OiBAWUVTIH0sCiAgICAgICAgIEAiUHJvZ3JhbUFyZ3VtZW50cyIgOiBAWwpAQCAtNDQ1LDcgKzQ3
NSw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiB0ZXN0RGFlbW9uUExpc3QoTlNV
UkwgKnN0b3JhZ2VMb2NhdGlvbikKIAogI2VuZGlmCiAKLVRFU1QoRXZlbnRBdHRyaWJ1dGlvbiwg
RGFlbW9uKQorc3RhdGljIHN0ZDo6cGFpcjxOU1VSTCAqLCBXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICo+IHNldFVwRGFlbW9uKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKnZpZXdDb25maWd1cmF0aW9u
KQogewogICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdOwogICAgIE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
QCJFdmVudEF0dHJpYnV0aW9uRGFlbW9uVGVzdCJdIGlzRGlyZWN0b3J5OllFU107CkBAIC00Njcs
MzIgKzQ5Nyw3NSBAQCBURVNUKEV2ZW50QXR0cmlidXRpb24sIERhZW1vbikKICAgICBFWFBFQ1Rf
TlVMTChlcnJvcik7CiAgICAgc3VjY2VzcyA9IFtwbGlzdCB3cml0ZVRvVVJMOnBsaXN0TG9jYXRp
b24gZXJyb3I6JmVycm9yXTsKICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKLSAgICBzeXN0ZW0o
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJsYXVuY2hjdGwgbG9hZCAlQCIsIHBsaXN0TG9j
YXRpb24ucGF0aF0uVVRGOFN0cmluZyk7CisgICAgc3lzdGVtKFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAibGF1bmNoY3RsIGxvYWQgJUAiLCBwbGlzdExvY2F0aW9uLnBhdGhdLmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbik7CiAjZW5kaWYKICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAKICAg
ICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtfV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbiBuZXddKTsKICAgICBkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgp
LnBjbU1hY2hTZXJ2aWNlTmFtZSA9IEAib3JnLndlYmtpdC5wY210ZXN0ZGFlbW9uLnNlcnZpY2Ui
OwotICAgIGF1dG8gdmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIG5ld10pOwotICAgIHZpZXdDb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3Rv
cmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1
cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5nZXQoKTsKLSAgICBydW5CYXNp
Y0V2ZW50QXR0cmlidXRpb25UZXN0KHZpZXdDb25maWd1cmF0aW9uLmdldCgpLCBbXShXS1dlYlZp
ZXcgKndlYlZpZXcsIGNvbnN0IEhUVFBTZXJ2ZXImIHNlcnZlcikgewotICAgICAgICBbd2ViVmll
dyBfYWRkRXZlbnRBdHRyaWJ1dGlvbldpdGhTb3VyY2VJRDo0MiBkZXN0aW5hdGlvblVSTDpleGFt
cGxlVVJMKCkgc291cmNlRGVzY3JpcHRpb246QCJ0ZXN0IHNvdXJjZSBkZXNjcmlwdGlvbiIgcHVy
Y2hhc2VyOkAidGVzdCBwdXJjaGFzZXIiIHJlcG9ydEVuZHBvaW50OnNlcnZlci5yZXF1ZXN0KCku
VVJMIG9wdGlvbmFsTm9uY2U6bmlsIGFwcGxpY2F0aW9uQnVuZGxlSUQ6QCJ0ZXN0LmJ1bmRsZS5p
ZCJdOwotICAgIH0pOworICAgIHZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSBh
ZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9u
OmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKS5nZXQoKTsKKworICAgIHJldHVybiBzdGQ6
Om1ha2VfcGFpcih0ZW1wRGlyLCB2aWV3Q29uZmlndXJhdGlvbik7Cit9CiAKK3N0YXRpYyB2b2lk
IGNsZWFuVXBEYWVtb24oTlNVUkwgKnRlbXBEaXIpCit7CiAgICAgc3lzdGVtKCJraWxsYWxsIEFk
QXR0cmlidXRpb25EYWVtb24gLTkiKTsKIAotICAgIEVYUEVDVF9UUlVFKFtmaWxlTWFuYWdlciBm
aWxlRXhpc3RzQXRQYXRoOnRlbXBEaXIucGF0aF0pOwotICAgIFtmaWxlTWFuYWdlciByZW1vdmVJ
dGVtQXRVUkw6dGVtcERpciBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDp0ZW1wRGlyLnBhdGhdKTsK
KyAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDp0ZW1wRGlyIGVycm9yOiZlcnJvcl07CiAgICAgRVhQRUNU
X05VTEwoZXJyb3IpOwogfQogCitURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBEYWVtb25C
YXNpY0Z1bmN0aW9uYWxpdHkpCit7CisgICAgYXV0byBbdGVtcERpciwgY29uZmlndXJhdGlvbl0g
PSBzZXRVcERhZW1vbihhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pLmF1dG9y
ZWxlYXNlKCkpOworICAgIHJ1bkJhc2ljUENNVGVzdChjb25maWd1cmF0aW9uLCBbXShXS1dlYlZp
ZXcgKndlYlZpZXcsIGNvbnN0IEhUVFBTZXJ2ZXImIHNlcnZlcikgeworICAgICAgICBbd2ViVmll
dyBfYWRkRXZlbnRBdHRyaWJ1dGlvbldpdGhTb3VyY2VJRDo0MiBkZXN0aW5hdGlvblVSTDpleGFt
cGxlVVJMKCkgc291cmNlRGVzY3JpcHRpb246QCJ0ZXN0IHNvdXJjZSBkZXNjcmlwdGlvbiIgcHVy
Y2hhc2VyOkAidGVzdCBwdXJjaGFzZXIiIHJlcG9ydEVuZHBvaW50OnNlcnZlci5yZXF1ZXN0KCku
VVJMIG9wdGlvbmFsTm9uY2U6bmlsIGFwcGxpY2F0aW9uQnVuZGxlSUQ6QCJ0ZXN0LmJ1bmRsZS5p
ZCJdOworICAgIH0pOworICAgIGNsZWFuVXBEYWVtb24odGVtcERpcik7Cit9CisKK1RFU1QoUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsIERhZW1vbkRlYnVnTW9kZSkKK3sKKyAgICBhdXRvIFt0ZW1w
RGlyLCBjb25maWd1cmF0aW9uXSA9IHNldFVwRGFlbW9uKFtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkJ1bmRsZVBhZ2VD
b25zb2xlTWVzc2FnZSJdKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBjb25zb2xlTWVzc2FnZXM7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld1dpdGhPcGVuSW5zcGVjdG9yKGNvbmZpZ3VyYXRpb24p
OworICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KHdlYlZpZXcuZ2V0KCksIGNvbnNvbGVNZXNz
YWdlcyk7CisgICAgW2NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkRm9yVGVzdGluZzpZRVNdOworICAgIHdoaWxl
IChjb25zb2xlTWVzc2FnZXMuaXNFbXB0eSgpKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgp
OworICAgIEVYUEVDVF9XS19TVFJFUShjb25zb2xlTWVzc2FnZXNbMF0sICJbUHJpdmF0ZSBDbGlj
ayBNZWFzdXJlbWVudF0gVHVybmVkIERlYnVnIE1vZGUgb24uIik7CisgICAgW2NvbmZpZ3VyYXRp
b24ud2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVF
bmFibGVkRm9yVGVzdGluZzpOT107CisgICAgd2hpbGUgKGNvbnNvbGVNZXNzYWdlcy5zaXplKCkg
PCAyKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIEVYUEVDVF9XS19TVFJFUShj
b25zb2xlTWVzc2FnZXNbMV0sICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHVybmVkIERl
YnVnIE1vZGUgb2ZmLiIpOworfQorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCitURVNUKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCBOZXR3b3JrUHJvY2Vzc0RlYnVnTW9kZSkKK3sKKyAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1
cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2Ui
XTsKKyAgICBWZWN0b3I8U3RyaW5nPiBjb25zb2xlTWVzc2FnZXM7CisgICAgYXV0byB3ZWJWaWV3
ID0gd2ViVmlld1dpdGhPcGVuSW5zcGVjdG9yKGNvbmZpZ3VyYXRpb24pOworICAgIHNldEluamVj
dGVkQnVuZGxlQ2xpZW50KHdlYlZpZXcuZ2V0KCksIGNvbnNvbGVNZXNzYWdlcyk7CisgICAgW2Nv
bmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRE
ZWJ1Z01vZGVFbmFibGVkRm9yVGVzdGluZzpZRVNdOworICAgIHdoaWxlIChjb25zb2xlTWVzc2Fn
ZXMuaXNFbXB0eSgpKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIEVYUEVDVF9X
S19TVFJFUShjb25zb2xlTWVzc2FnZXNbMF0sICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0g
VHVybmVkIERlYnVnIE1vZGUgb24uIik7CisgICAgW2NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZSBfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkRm9yVGVzdGlu
ZzpOT107CisgICAgd2hpbGUgKGNvbnNvbGVNZXNzYWdlcy5zaXplKCkgPCAyKQorICAgICAgICBV
dGlsOjpzcGluUnVuTG9vcCgpOworICAgIEVYUEVDVF9XS19TVFJFUShjb25zb2xlTWVzc2FnZXNb
MV0sICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHVybmVkIERlYnVnIE1vZGUgb2ZmLiIp
OworfQorCiAjaWYgSEFWRShVSV9FVkVOVF9BVFRSSUJVVElPTikKIAotVEVTVChFdmVudEF0dHJp
YnV0aW9uLCBCYXNpY1dpdGhJT1NTUEkpCitURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBC
YXNpY1dpdGhJT1NTUEkpCiB7Ci0gICAgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChuaWws
IFtdKFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgSFRUUFNlcnZlciYgc2VydmVyKSB7CisgICAg
cnVuQmFzaWNQQ01UZXN0KG5pbCwgW10oV0tXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBIVFRQU2Vy
dmVyJiBzZXJ2ZXIpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGlvbiA9IGFkb3B0TlMoW1tNb2Nr
RXZlbnRBdHRyaWJ1dGlvbiBhbGxvY10gaW5pdFdpdGhSZXBvcnRFbmRwb2ludDpzZXJ2ZXIucmVx
dWVzdCgpLlVSTCBkZXN0aW5hdGlvblVSTDpleGFtcGxlVVJMKCldKTsKICAgICAgICAgd2ViVmll
dy5fdWlFdmVudEF0dHJpYnV0aW9uID0gKFVJRXZlbnRBdHRyaWJ1dGlvbiAqKWF0dHJpYnV0aW9u
LmdldCgpOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEod2ViVmlldy5fdWlFdmVudEF0dHJpYnV0
aW9uLnNvdXJjZURlc2NyaXB0aW9uLCAidGVzdCBzb3VyY2UgZGVzY3JpcHRpb24iKTsKQEAgLTUw
MCw5ICs1NzMsOSBAQCBURVNUKEV2ZW50QXR0cmlidXRpb24sIEJhc2ljV2l0aElPU1NQSSkKICAg
ICB9KTsKIH0KIAotVEVTVChFdmVudEF0dHJpYnV0aW9uLCBCYXNpY1dpdGhFcGhlbWVyYWxJT1NT
UEkpCitURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBCYXNpY1dpdGhFcGhlbWVyYWxJT1NT
UEkpCiB7Ci0gICAgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChuaWwsIFtdKFdLV2ViVmll
dyAqd2ViVmlldywgY29uc3QgSFRUUFNlcnZlciYgc2VydmVyKSB7CisgICAgcnVuQmFzaWNQQ01U
ZXN0KG5pbCwgW10oV0tXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBIVFRQU2VydmVyJiBzZXJ2ZXIp
IHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGlvbiA9IGFkb3B0TlMoW1tNb2NrRXZlbnRBdHRyaWJ1
dGlvbiBhbGxvY10gaW5pdFdpdGhSZXBvcnRFbmRwb2ludDpzZXJ2ZXIucmVxdWVzdCgpLlVSTCBk
ZXN0aW5hdGlvblVSTDpleGFtcGxlVVJMKCldKTsKICAgICAgICAgd2ViVmlldy5fZXBoZW1lcmFs
VUlFdmVudEF0dHJpYnV0aW9uID0gKFVJRXZlbnRBdHRyaWJ1dGlvbiAqKWF0dHJpYnV0aW9uLmdl
dCgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
VUlEZWxlZ2F0ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5o
CmluZGV4IDI2YzE2YmRmNjZjYzU3OTM5MWZkYTI2MThhMzkxZDk2YTNlZjgyOWIuLjBlOWRhNzZk
MjlmYTEyYTM3YmVjMTJjZDYwMDA5ZjI2YTVkOTc2OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RVSURlbGVnYXRlLmgKQEAgLTQwLDQgKzQwLDUgQEAKIAogQGludGVyZmFjZSBX
S1dlYlZpZXcgKFRlc3RVSURlbGVnYXRlRXh0cmFzKQogLSAoTlNTdHJpbmcgKilfdGVzdF93YWl0
Rm9yQWxlcnQ7CistICh2b2lkKV90ZXN0X3dhaXRGb3JJbnNwZWN0b3JUb1Nob3c7CiBAZW5kCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQppbmRleCA5OTM4YzM2
ZjAxOWU0NjYxZWZiYzg5YTNhZDdjY2Q4YTgyMTlkYjllLi45YzUyZmU2ZWE0Njc2ZmYzOWYxZTli
MWY4MWI1NjFkMjRmNWViZGU5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RVSURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJ
RGVsZWdhdGUubW0KQEAgLTMwLDcgKzMwLDkgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1AaW1wbGVt
ZW50YXRpb24gVGVzdFVJRGVsZWdhdGUKK0BpbXBsZW1lbnRhdGlvbiBUZXN0VUlEZWxlZ2F0ZSB7
CisgICAgQk9PTCBfc2hvd2VkSW5zcGVjdG9yOworfQogCiAtIChXS1dlYlZpZXcgKil3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjooV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gZm9yTmF2aWdhdGlvbkFjdGlvbjoo
V0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB3aW5kb3dGZWF0dXJlczooV0tX
aW5kb3dGZWF0dXJlcyAqKXdpbmRvd0ZlYXR1cmVzCiB7CkBAIC04MSw2ICs4MywxNyBAQAogICAg
IHJldHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAorLSAodm9pZClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjooX1dLSW5zcGVjdG9yICop
aW5zcGVjdG9yCit7CisgICAgX3Nob3dlZEluc3BlY3RvciA9IFlFUzsKK30KKworLSAodm9pZCl3
YWl0Rm9ySW5zcGVjdG9yVG9TaG93Cit7CisgICAgd2hpbGUgKCFfc2hvd2VkSW5zcGVjdG9yKQor
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOworfQorCiBAZW5kCiAK
IEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFRlc3RVSURlbGVnYXRlRXh0cmFzKQpAQCAtOTUs
NCArMTA4LDEzIEBACiAgICAgcmV0dXJuIGFsZXJ0OwogfQogCistICh2b2lkKV90ZXN0X3dhaXRG
b3JJbnNwZWN0b3JUb1Nob3cKK3sKKyAgICBFWFBFQ1RfRkFMU0Uoc2VsZi5VSURlbGVnYXRlKTsK
KyAgICBhdXRvIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0VUlEZWxlZ2F0ZSBuZXddKTsKKyAg
ICBzZWxmLlVJRGVsZWdhdGUgPSB1aURlbGVnYXRlLmdldCgpOworICAgIFt1aURlbGVnYXRlIHdh
aXRGb3JJbnNwZWN0b3JUb1Nob3ddOworICAgIHNlbGYuVUlEZWxlZ2F0ZSA9IG5pbDsKK30KKwog
QGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440159</attachid>
            <date>2021-10-04 22:54:41 -0700</date>
            <delta_ts>2021-10-05 11:02:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-231060-20211004225440.patch</filename>
            <type>text/plain</type>
            <size>67043</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzNTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE2NTcyNDhjYjJjMGVhMjZl
NjIzYWRmZmE3Y2UwMTIzYTYxODg0YTIuLjVlNWQ0NGVlM2Q4MTZlMzBmZjMxMjBjOTEzNWU1OWI3
MzQxNTNmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjggQEAKKzIwMjEtMTAtMDQgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
bWlzc2luZyBmdW5jdGlvbnMgaW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTA2MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBk
ZWJ1ZyBtb2RlIGluIHRoZSBkYWVtb24gaWYgYW55IGNvbm5lY3RlZCBjbGllbnRzIGhhdmUgZGVi
dWcgbW9kZSBlbmFibGVkLgorICAgICAgICBCcm9hZGNhc3QgZGVidWcgbWVzc2FnZXMgdG8gYWxs
IGNsaWVudHMsIHdoaWNoIHdpbGwgdGhlbiBicm9hZGNhc3QgdGhlbSB0byBhbGwgd2ViIHByb2Nl
c3Nlcy4KKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IHRoYXQgdHVybnMgaXQgb24gdGhlbiBvZmYg
YW5kIGNoZWNrcyB0aGF0IHRoZSBkZWJ1ZyBtZXNzYWdlcyBtYWtlIGl0IGFsbCB0aGUgd2F5IHRv
IHRoZSBpbnNwZWN0b3IuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1hbmFnZXJPclByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb246OnNldFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdNb2RlKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006OkNv
bm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjpDb25uZWN0aW9uVG9NYWNoU2VydmljZSk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U6OnNlbmQgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpQQ006OkNvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjpzZW5kV2l0aFJlcGx5
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpzZW5kIGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAg
KFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UENNOjpDb25uZWN0aW9uOjpnZXQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGllbnQ6OmJyb2FkY2FzdENvbnNv
bGVNZXNzYWdlKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25DbGllbnQ6OmRlYnVnTW9k
ZUVuYWJsZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2V0RGVidWdNb2RlSXNFbmFi
bGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJ
bnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006Om1lc3NhZ2VUeXBlU2VuZHNSZXBs
eSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6aGFuZGxlUENNTWVzc2FnZVNldERlYnVnTW9kZUlz
RW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6ZGVjb2RlTWVzc2FnZUFuZFNlbmRUb01h
bmFnZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UENNOjpNYW5hZ2VyUHJveHk6
Ok1hbmFnZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6TWFuYWdlclByb3h5OjpzZXRE
ZWJ1Z01vZGVJc0VuYWJsZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5Lmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uQ29jb2EubW06IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tLgorICAgICAgICAoV2Vi
S2l0OjpQQ006OkNvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjppbml0aWFsaXplQ29ubmVjdGlvbklm
TmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uVG9NYWNoU2Vy
dmljZTo6c2VuZERlYnVnTW9kZUlzRW5hYmxlZE1lc3NhZ2VJZk5lY2Vzc2FyeSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U6OmNoZWNrRm9yRGVi
dWdNZXNzYWdlQnJvYWRjYXN0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0
aW9uOjpzZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uOjpzZW5k
V2l0aFJlcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpDb25uZWN0aW9uVG9NYWNo
U2VydmljZTo6c2VuZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6Q29ubmVjdGlvblRv
TWFjaFNlcnZpY2U6OnNlbmRXaXRoUmVwbHkgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9FbnRy
eVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25Db25uZWN0aW9uU2V0Lmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmguCisgICAgICAgICogU2hh
cmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkNvbm5lY3Rpb25T
ZXQubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNvbm5lY3Rpb25TZXQ6
OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGFlbW9uQ29ubmVjdGlvblNldDo6
YWRkKToKKyAgICAgICAgKFdlYktpdDo6UENNOjpEYWVtb25Db25uZWN0aW9uU2V0OjpyZW1vdmUp
OgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhZW1vbkNvbm5lY3Rpb25TZXQ6OnNldENvbm5lY3Rl
ZE5ldHdvcmtQcm9jZXNzSGFzRGVidWdNb2RlRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6RGFlbW9uQ29ubmVjdGlvblNldDo6ZGVidWdNb2RlRW5hYmxlZCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlBDTTo6RGFlbW9uQ29ubmVjdGlvblNldDo6YnJvYWRjYXN0Q29uc29sZU1lc3Nh
Z2UpOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9Q
Q01EYWVtb25FbnRyeVBvaW50Lm1tOgorICAgICAgICAoV2ViS2l0Ojpjb25uZWN0aW9uRXZlbnRI
YW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6c3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2VydmljZUNv
bm5lY3Rpb25zKToKKyAgICAgICAgKFdlYktpdDo6cGVlcnMpOiBEZWxldGVkLgorICAgICAgICAq
IFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkRm9yVGVzdGluZzpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0xMC0wNCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEVuYWJs
ZSBQQ00gZGVidWcgbW9kZSBwZXIgV2Vic2l0ZURhdGFTdG9yZSBpbnN0ZWFkIG9mIHByb2Nlc3Mt
Z2xvYmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwCmluZGV4IGNkNWJhZTIyNWVkMTZjM2M4MmVkOWIwNWI5NThkOTUxMzFlMDJiZjYuLmY5NTdm
YmFmYjRjNjUyODBjY2Y2NTQ3NjI4ZjUyZDliODViNGVhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0
YXRpYyBTdHJpbmcgcGNtU3RvcmVEaXJlY3RvcnkoY29uc3QgTmV0d29ya1Nlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFN0cmluZyYgcmVzCiBzdGF0aWMgVW5pcXVlUmVmPFBDTTo6TWFuYWdlckludGVy
ZmFjZT4gbWFuYWdlck9yUHJveHkoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBOZXR3
b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGlmICghcGFyYW1ldGVycy5wY21NYWNoU2Vy
dmljZU5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxQQ006Ok1h
bmFnZXJQcm94eT4ocGFyYW1ldGVycy5wY21NYWNoU2VydmljZU5hbWUpOworICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZVJlZjxQQ006Ok1hbmFnZXJQcm94eT4ocGFyYW1ldGVycy5wY21NYWNoU2Vy
dmljZU5hbWUsIG5ldHdvcmtTZXNzaW9uKTsKICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KG1ha2VVbmlxdWVSZWY8UENNOjpDbGllbnRJbXBs
PihuZXR3b3JrU2Vzc2lvbiwgbmV0d29ya1Byb2Nlc3MpLCBwY21TdG9yZURpcmVjdG9yeShuZXR3
b3JrU2Vzc2lvbiwgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5k
aXJlY3RvcnksIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSk7CiB9CiAKQEAgLTQyNyw5ICs0
MjcsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERl
YnVnTW9kZShib29sIGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkID0gZW5hYmxlZDsKLQotICAgIGF1dG8gbWVz
c2FnZSA9IGVuYWJsZWQgPyAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFR1cm5lZCBEZWJ1
ZyBNb2RlIG9uLiJfcyA6ICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHVybmVkIERlYnVn
IE1vZGUgb2ZmLiJfczsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5icm9hZGNhc3RDb25zb2xlTWVz
c2FnZShzZXNzaW9uSUQoKSwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
IE1lc3NhZ2VMZXZlbDo6SW5mbywgbWVzc2FnZSk7CisgICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC0+c2V0RGVidWdNb2RlSXNFbmFibGVkKGVuYWJsZWQpOwogfQogCiB2b2lkIE5ldHdvcmtT
ZXNzaW9uOjpmaXJlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0ZWx5Rm9yVGVz
dGluZygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggNjUwMjlhNjgzMmJkZWRhMWZk
MGE0ZTFhM2ZhYTljNzFlY2UzNWNlNi4uOWU4ZjViYjE4M2MwMWQ2OTA0YWUwZWVlMWZjNjlhNDNh
ZWYxZWJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmNwcApAQCAtMzIsMTkgKzMyLDE4IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgUENNIHsKIAotI2lmICFQTEFURk9STShD
T0NPQSkKK0Nvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjpDb25uZWN0aW9uVG9NYWNoU2VydmljZShD
U3RyaW5nJiYgbWFjaFNlcnZpY2VOYW1lLCBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24p
CisgICAgOiBtX21hY2hTZXJ2aWNlTmFtZShXVEZNb3ZlKG1hY2hTZXJ2aWNlTmFtZSkpCisgICAg
LCBtX25ldHdvcmtTZXNzaW9uKG1ha2VXZWFrUHRyKG5ldHdvcmtTZXNzaW9uKSkgeyB9CiAKLUNv
bm5lY3Rpb246OkNvbm5lY3Rpb24oQ1N0cmluZyYmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci19CisjaWYgIVBMQVRGT1JNKENPQ09BKQogCi12b2lkIENvbm5lY3Rpb246OnNlbmQoTWVzc2Fn
ZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYpIGNvbnN0Cit2b2lkIENvbm5lY3Rpb25Ub01hY2hTZXJ2
aWNlOjpzZW5kKE1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmKSBjb25zdAogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgQ29ubmVjdGlvbjo6c2VuZFdpdGhSZXBseShNZXNz
YWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVk
TWVzc2FnZSYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3ZvaWQgQ29ubmVjdGlvblRv
TWFjaFNlcnZpY2U6OnNlbmRXaXRoUmVwbHkoTWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgKaW5kZXggNDQyZjQ4NDI1ZDY0OWQ5ZGQ2
MzZmNzM3NmY2ZGM4MzgxMzgzZmIyOS4uN2FjMzhkMjllZjkxNDZiOGM5NzIwMjQwZmU4NTAxYjIz
OTJhM2NiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oCkBAIC0yOCwxNCArMjgsMTcgQEAKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJ
Lmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIE5ldHdvcmtTZXNzaW9u
OworCiBuYW1lc3BhY2UgUENNIHsKIAogZW51bSBjbGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3Q7
CkBAIC00MywxOCArNDYsMzQgQEAgdXNpbmcgRW5jb2RlZE1lc3NhZ2UgPSBWZWN0b3I8dWludDhf
dD47CiAKIGNsYXNzIENvbm5lY3Rpb24gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q29ubmVjdGlv
bj4gewogcHVibGljOgotICAgIGV4cGxpY2l0IENvbm5lY3Rpb24oQ1N0cmluZyYmIG1hY2hTZXJ2
aWNlTmFtZSk7CisgICAgQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBleHBsaWNpdCBDb25uZWN0aW9uKFJldGFpblB0cjx4cGNfY29ubmVjdGlvbl90PiYm
IGNvbm5lY3Rpb24pCisgICAgICAgIDogbV9jb25uZWN0aW9uKFdURk1vdmUoY29ubmVjdGlvbikp
IHsgfQorICAgIHhwY19jb25uZWN0aW9uX3QgZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jb25uZWN0
aW9uLmdldCgpOyB9CisgICAgdm9pZCBzZW5kKHhwY19vYmplY3RfdCkgY29uc3Q7CisgICAgdm9p
ZCBzZW5kV2l0aFJlcGx5KHhwY19vYmplY3RfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh4cGNf
b2JqZWN0X3QpPiYmKSBjb25zdDsKK3Byb3RlY3RlZDoKKyAgICBtdXRhYmxlIFJldGFpblB0cjx4
cGNfY29ubmVjdGlvbl90PiBtX2Nvbm5lY3Rpb247CisjZW5kaWYKK307CisKK2NsYXNzIENvbm5l
Y3Rpb25Ub01hY2hTZXJ2aWNlIDogcHVibGljIENvbm5lY3Rpb24geworcHVibGljOgorICAgIGV4
cGxpY2l0IENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlKENTdHJpbmcmJiBtYWNoU2VydmljZU5hbWUs
IE5ldHdvcmtTZXNzaW9uJik7CiAKICAgICB2b2lkIHNlbmQoTWVzc2FnZVR5cGUsIEVuY29kZWRN
ZXNzYWdlJiYpIGNvbnN0OwogICAgIHZvaWQgc2VuZFdpdGhSZXBseShNZXNzYWdlVHlwZSwgRW5j
b2RlZE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4m
JikgY29uc3Q7CiAKIHByaXZhdGU6Ci0jaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBpbml0
aWFsaXplQ29ubmVjdGlvbklmTmVlZGVkKCkgY29uc3Q7CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgdm9pZCBjaGVja0ZvckRlYnVnTWVzc2FnZUJyb2FkY2FzdCh4cGNfb2JqZWN0X3QpIGNvbnN0
OworI2VuZGlmCisgICAgdm9pZCBzZW5kRGVidWdNb2RlSXNFbmFibGVkTWVzc2FnZUlmTmVjZXNz
YXJ5KCkgY29uc3Q7CiAKICAgICBjb25zdCBDU3RyaW5nIG1fbWFjaFNlcnZpY2VOYW1lOwotICAg
IG11dGFibGUgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gbV9jb25uZWN0aW9uOwotI2Vu
ZGlmCisgICAgV2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4gbV9uZXR3b3JrU2Vzc2lvbjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFBDTQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1v
bkNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcAppbmRleCAz
NzNlNTFiZTcwZjBjNmU5MjM0ODRjYjZmZGRlNTk1OGJmMmViNThkLi5hZGE1MjUwMjBhYmExZmFi
ZWYxMTI1NDRjNGVhMTFhM2Q2ZGQyZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
RGFlbW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNw
cApAQCAtMjYsMTUgKzI2LDIyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaCIKIAotI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KKyNpZiBQTEFURk9STShDT0NPQSkKKyNpbmNsdWRlICJQQ01EYWVt
b25Db25uZWN0aW9uU2V0LmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVz
cGFjZSBQQ00gewogCi12b2lkIERhZW1vbkNsaWVudDo6YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
SlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYpCit2b2lkIERhZW1vbkNsaWVudDo6YnJv
YWRjYXN0Q29uc29sZU1lc3NhZ2UoSlNDOjpNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIERhZW1vbkNvbm5lY3Rpb25TZXQ6OnNpbmdsZXRvbigpLmJyb2FkY2FzdENvbnNvbGVN
ZXNzYWdlKGxldmVsLCBtZXNzYWdlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGxldmVsKTsK
KyAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7CisjZW5kaWYKIH0KIAogYm9vbCBEYWVtb25DbGll
bnQ6OmZlYXR1cmVFbmFibGVkKCkgY29uc3QKQEAgLTQ0LDggKzUxLDExIEBAIGJvb2wgRGFlbW9u
Q2xpZW50OjpmZWF0dXJlRW5hYmxlZCgpIGNvbnN0CiAKIGJvb2wgRGFlbW9uQ2xpZW50OjpkZWJ1
Z01vZGVFbmFibGVkKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIHJldHVybiBEYWVtb25Db25uZWN0aW9uU2V0OjpzaW5nbGV0b24oKS5k
ZWJ1Z01vZGVFbmFibGVkKCk7CisjZWxzZQogICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQog
CiB9IC8vIG5hbWVzcGFjZSBQQ00KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCBmNDUxM2ExNzg0
ODFhZmQwMWM0ZDIzOGEwNGQyZmQ3ZDRkNjQ5NjRlLi5hZDllZGNmZTBiOTA1ODhjZTFmYzRmYjI3
ZjZjNTRkYjgyZjZlYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBAIC0yMjcsNiArMjI3LDE2
IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjptaWdyYXRlUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvCiAgICAgc3RvcmUoKS5pbnNlcnRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChXVEZNb3ZlKG1lYXN1cmVtZW50KSwgdHlwZSwgW10geyB9KTsKIH0KIAor
dm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnNldERlYnVnTW9kZUlzRW5hYmxl
ZChib29sIGVuYWJsZWQpCit7CisgICAgLy8gVGhpcyBkb2Vzbid0IG1haW50YWluIGdsb2JhbCBz
dGF0ZSwgaXQganVzdCBicm9hZGNhc3RzIGEgbWVzc2FnZSB3aGVuIGRlYnVnIG1vZGUgZW5hYmxl
ZCBjaGFuZ2VzLgorICAgIC8vIFRoZSBzdGF0ZSBpcyBlaXRoZXIgc3RvcmVkIGluIE5ldHdvcmtT
ZXNzaW9uIHdoZW4gbm90IHVzaW5nIHRoZSBkYWVtb24KKyAgICAvLyBvciBpbiBEYWVtb25Db25u
ZWN0aW9uU2V0IHBlci1jb25uZWN0aW9uIHdoZW4gdXNpbmcgdGhlIGRhZW1vbi4KKworICAgIGF1
dG8gbWVzc2FnZSA9IGVuYWJsZWQgPyAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFR1cm5l
ZCBEZWJ1ZyBNb2RlIG9uLiJfcyA6ICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHVybmVk
IERlYnVnIE1vZGUgb2ZmLiJfczsKKyAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3Nh
Z2UoTWVzc2FnZUxldmVsOjpJbmZvLCBtZXNzYWdlKTsKK30KKwogdm9pZCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI6OmhhbmRsZUF0dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgcmVkaXJlY3REb21haW4sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eVVSTCwgY29uc3QgQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyJiBhcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmgKaW5kZXggYmVkMGEzNmNmYzgwYzQ5MTViZjI2OTFlMTliYjZkZjVjYjgzZGRhOS4uMThl
MzRjZDk2NmU1NTI4NGU0N2NiOTk2ZDQ2NjRmNzJjM2NmNzMwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5o
CkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBjbGVhckZvclJlZ2lzdHJhYmxlRG9tYWlu
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBm
aW5hbDsKICAgICB2b2lkIG1pZ3JhdGVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lT
dG9yYWdlKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50
QXR0cmlidXRpb25UeXBlKSBmaW5hbDsKKyAgICB2b2lkIHNldERlYnVnTW9kZUlzRW5hYmxlZChi
b29sKSBmaW5hbDsKIAogICAgIHZvaWQgdG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nKT4mJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRPdmVycmlkZVRp
bWVyRm9yVGVzdGluZyhib29sIHZhbHVlKSBmaW5hbCB7IG1faXNSdW5uaW5nVGVzdCA9IHZhbHVl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5jcHAKaW5kZXggZTQyMjkyZmRj
YTY1YTQxZTk3OWUyYmQxNmUxYTE3Y2E5NmNlMjI5MC4uZmM1N2MxZTQzYjM3ZjYzZGI0NTM2MTkx
OGE4ZTA2M2NkN2I5NmQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJJ
bnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmNw
cApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAorI2lmIFBMQVRG
T1JNKENPQ09BKQorI2luY2x1ZGUgIlBDTURhZW1vbkNvbm5lY3Rpb25TZXQuaCIKKyNlbmRpZgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogbmFtZXNwYWNlIFBDTSB7CkBAIC02OSw2ICs3MywxMCBA
QCBGVU5DVElPTihtaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFn
ZSkKIEFSR1VNRU5UUyhXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpCiBFTkQKIAorRlVOQ1RJT04oc2V0RGVidWdN
b2RlSXNFbmFibGVkKQorQVJHVU1FTlRTKGJvb2wpCitFTkQKKwogRlVOQ1RJT04odG9TdHJpbmdG
b3JUZXN0aW5nKQogQVJHVU1FTlRTKCkKIFJFUExZKFN0cmluZykKQEAgLTE0Nyw2ICsxNTUsNyBA
QCBib29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSkKICAg
ICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6SGFuZGxlQXR0
cmlidXRpb246CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6TWlncmF0ZVByaXZhdGVDbGlja01lYXN1
cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2U6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0RGVidWdN
b2RlSXNFbmFibGVkOgogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNldE92ZXJyaWRlVGltZXJGb3JU
ZXN0aW5nOgogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNldFRva2VuUHVibGljS2V5VVJMRm9yVGVz
dGluZzoKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRUb2tlblNpZ25hdHVyZVVSTEZvclRlc3Rp
bmc6CkBAIC0yMDAsNiArMjA5LDI2IEBAIHZvaWQgaGFuZGxlUENNTWVzc2FnZShQQ006OkVuY29k
ZWRNZXNzYWdlJiYgZW5jb2RlZE1lc3NhZ2UpCiAgICAgSVBDOjpjYWxsTWVtYmVyRnVuY3Rpb24o
V1RGTW92ZSgqYXJndW1lbnRzKSwgJmRhZW1vbk1hbmFnZXIoKSwgSW5mbzo6TWVtYmVyRnVuY3Rp
b24pOwogfQogCitzdGF0aWMgdm9pZCBoYW5kbGVQQ01NZXNzYWdlU2V0RGVidWdNb2RlSXNFbmFi
bGVkKGNvbnN0IENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBDTTo6RW5jb2RlZE1lc3NhZ2UmJiBl
bmNvZGVkTWVzc2FnZSkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBQQ006OkRlY29kZXIg
ZGVjb2RlcihXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSk7CisgICAgc3RkOjpvcHRpb25hbDxib29s
PiBlbmFibGVkOworICAgIGRlY29kZXIgPj4gZW5hYmxlZDsKKyAgICBpZiAoVU5MSUtFTFkoIWVu
YWJsZWQpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBjb25uZWN0aW9uU2V0ID0gRGFl
bW9uQ29ubmVjdGlvblNldDo6c2luZ2xldG9uKCk7CisgICAgYm9vbCBkZWJ1Z01vZGVXYXNFbmFi
bGVkID0gY29ubmVjdGlvblNldC5kZWJ1Z01vZGVFbmFibGVkKCk7CisgICAgY29ubmVjdGlvblNl
dC5zZXRDb25uZWN0ZWROZXR3b3JrUHJvY2Vzc0hhc0RlYnVnTW9kZUVuYWJsZWQoY29ubmVjdGlv
biwgKmVuYWJsZWQpOworICAgIGlmIChkZWJ1Z01vZGVXYXNFbmFibGVkICE9IGNvbm5lY3Rpb25T
ZXQuZGVidWdNb2RlRW5hYmxlZCgpKQorICAgICAgICBkYWVtb25NYW5hZ2VyKCkuc2V0RGVidWdN
b2RlSXNFbmFibGVkKCplbmFibGVkKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvbm5lY3Rp
b24pOworICAgIFVOVVNFRF9QQVJBTShlbmNvZGVkTWVzc2FnZSk7CisjZW5kaWYKK30KKwogdGVt
cGxhdGU8dHlwZW5hbWUgSW5mbz4KIHZvaWQgaGFuZGxlUENNTWVzc2FnZVdpdGhSZXBseShQQ006
OkVuY29kZWRNZXNzYWdlJiYgZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
UENNOjpFbmNvZGVkTWVzc2FnZSYmKT4mJiByZXBseVNlbmRlcikKIHsKQEAgLTIxNyw3ICsyNDYs
NyBAQCB2b2lkIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHkoUENNOjpFbmNvZGVkTWVzc2FnZSYm
IGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSAogICAgIElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9u
KFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAmZGFlbW9u
TWFuYWdlcigpLCBJbmZvOjpNZW1iZXJGdW5jdGlvbik7CiB9CiAKLXZvaWQgZGVjb2RlTWVzc2Fn
ZUFuZFNlbmRUb01hbmFnZXIoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFZlY3Rvcjx1aW50OF90
PiYmIGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90
PiYmKT4mJiByZXBseVNlbmRlcikKK3ZvaWQgZGVjb2RlTWVzc2FnZUFuZFNlbmRUb01hbmFnZXIo
Y29uc3QgQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFZl
Y3Rvcjx1aW50OF90PiYmIGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3Rvcjx1aW50OF90PiYmKT4mJiByZXBseVNlbmRlcikKIHsKICAgICBBU1NFUlQobWVzc2FnZVR5
cGVTZW5kc1JlcGx5KG1lc3NhZ2VUeXBlKSA9PSAhIXJlcGx5U2VuZGVyKTsKICAgICBzd2l0Y2gg
KG1lc3NhZ2VUeXBlKSB7CkBAIC0yMzMsNiArMjYyLDkgQEAgdm9pZCBkZWNvZGVNZXNzYWdlQW5k
U2VuZFRvTWFuYWdlcihNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgVmVjdG9yPHVpbnQ4X3Q+JiYg
ZW4KICAgICBjYXNlIFBDTTo6TWVzc2FnZVR5cGU6OkNsZWFyRm9yUmVnaXN0cmFibGVEb21haW46
CiAgICAgICAgIGhhbmRsZVBDTU1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OmNsZWFyRm9y
UmVnaXN0cmFibGVEb21haW4+KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5
U2VuZGVyKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUENNOjpNZXNzYWdlVHlwZTo6U2V0
RGVidWdNb2RlSXNFbmFibGVkOgorICAgICAgICBoYW5kbGVQQ01NZXNzYWdlU2V0RGVidWdNb2Rl
SXNFbmFibGVkKGNvbm5lY3Rpb24sIFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBQQ006Ok1lc3NhZ2VUeXBlOjpNaWdyYXRlUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZToKICAgICAgICAgaGFuZGxlUENNTWVzc2FnZTxNZXNz
YWdlSW5mbzo6bWlncmF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2U+
KFdURk1vdmUoZW5jb2RlZE1lc3NhZ2UpKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXJJbnRlcmZhY2UuaAppbmRleCBkZGZlZDNlYjdjYzFlNDYwN2E0ODM1ZmU0N2ViYzVm
YWMwZDlhYzJlLi5jZjgwYzQ0Mjk2OTJlOTA1MjU1NjNmN2JiNTIwNDlhMjRiMGM0Yzk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlckludGVyZmFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VySW50ZXJmYWNlLmgKQEAgLTQxLDYgKzQxLDggQEAgY2xhc3Mg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOwogCiBuYW1lc3BhY2UgUENNIHsKIAorY2xh
c3MgQ29ubmVjdGlvbjsKKwogY2xhc3MgTWFuYWdlckludGVyZmFjZSB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+TWFuYWdlckludGVyZmFjZSgpIHsgfTsKQEAgLTU3LDYgKzU5LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBtaWdyYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFn
ZShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJp
YnV0aW9uVHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z01vZGVJc0VuYWJsZWQo
Ym9vbCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSkgPSAwOwpAQCAtNzUsNiArNzgs
OSBAQCBwdWJsaWM6CiBjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xWZXJzaW9uS2V5IHsg
InZlcnNpb24iIH07CiBjb25zdGV4cHIgdWludDY0X3QgcHJvdG9jb2xWZXJzaW9uVmFsdWUgeyAx
IH07CiAKK2NvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbERlYnVnTWVzc2FnZUxldmVsS2V5
IHsgImRlYnVnIG1lc3NhZ2UgbGV2ZWwiIH07Citjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9j
b2xEZWJ1Z01lc3NhZ2VLZXkgeyAiZGVidWcgbWVzc2FnZSIgfTsKKwogY29uc3RleHByIGNvbnN0
IGNoYXIqIHByb3RvY29sTWVzc2FnZVR5cGVLZXkgeyAibWVzc2FnZSB0eXBlIiB9OwogZW51bSBj
bGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3QgewogICAgIFN0b3JlVW5hdHRyaWJ1dGVkLApAQCAt
ODIsNiArODgsNyBAQCBlbnVtIGNsYXNzIE1lc3NhZ2VUeXBlIDogdWludDhfdCB7CiAgICAgQ2xl
YXIsCiAgICAgQ2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbiwKICAgICBNaWdyYXRlUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRGcm9tTGVnYWN5U3RvcmFnZSwKKyAgICBTZXREZWJ1Z01vZGVJc0VuYWJs
ZWQsCiAgICAgVG9TdHJpbmdGb3JUZXN0aW5nLAogICAgIFNldE92ZXJyaWRlVGltZXJGb3JUZXN0
aW5nLAogICAgIFNldFRva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZywKQEAgLTk5LDcgKzEwNiw3
IEBAIGVudW0gY2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKIGNvbnN0ZXhwciBjb25zdCBj
aGFyKiBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5IHsgImVuY29kZWQgbWVzc2FnZSIgfTsKIHVz
aW5nIEVuY29kZWRNZXNzYWdlID0gVmVjdG9yPHVpbnQ4X3Q+OwogCi12b2lkIGRlY29kZU1lc3Nh
Z2VBbmRTZW5kVG9NYW5hZ2VyKE1lc3NhZ2VUeXBlLCBWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJik7Cit2b2lkIGRl
Y29kZU1lc3NhZ2VBbmRTZW5kVG9NYW5hZ2VyKGNvbnN0IENvbm5lY3Rpb24mLCBNZXNzYWdlVHlw
ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8dWludDhfdD4mJik+JiYpOwogYm9vbCBtZXNzYWdlVHlwZVNlbmRzUmVwbHkoTWVzc2FnZVR5
cGUpOwogCiB2b2lkIGluaXRpYWxpemVQQ01TdG9yYWdlSW5EaXJlY3RvcnkoY29uc3QgU3RyaW5n
Jik7CkBAIC0xMTgsNiArMTI1LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJL
aXQ6OlBDTTo6TWVzc2FnZVR5cGU+IHsKICAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBl
OjpDbGVhciwKICAgICAgICAgV2ViS2l0OjpQQ006Ok1lc3NhZ2VUeXBlOjpDbGVhckZvclJlZ2lz
dHJhYmxlRG9tYWluLAogICAgICAgICBXZWJLaXQ6OlBDTTo6TWVzc2FnZVR5cGU6Ok1pZ3JhdGVQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlLAorICAgICAgICBXZWJLaXQ6
OlBDTTo6TWVzc2FnZVR5cGU6OlNldERlYnVnTW9kZUlzRW5hYmxlZCwKICAgICAgICAgV2ViS2l0
OjpQQ006Ok1lc3NhZ2VUeXBlOjpUb1N0cmluZ0ZvclRlc3RpbmcsCiAgICAgICAgIFdlYktpdDo6
UENNOjpNZXNzYWdlVHlwZTo6U2V0T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcsCiAgICAgICAgIFdl
YktpdDo6UENNOjpNZXNzYWdlVHlwZTo6U2V0VG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcAppbmRleCA0MzJmMjVhNjg3MGE3NTIyYzAwMTRk
NWU3ZTQwODA4N2ExOTRkNDFkLi5hMTg3Nzg0ZDg2ZmExMzkwMjA2MzkxYWZkZDA5N2QyMGI3YzFm
ZmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlclByb3h5LmNwcApAQCAtNzIsOCArNzIsOCBAQCB2
b2lkIE1hbmFnZXJQcm94eTo6c2VuZE1lc3NhZ2VXaXRoUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZXBseUFyZ3MuLi4pPiYmCiAgICAgfSk7CiB9CiAKLU1hbmFnZXJQcm94eTo6TWFuYWdl
clByb3h5KGNvbnN0IFN0cmluZyYgbWFjaFNlcnZpY2VOYW1lKQotICAgIDogbV9jb25uZWN0aW9u
KG1hY2hTZXJ2aWNlTmFtZS51dGY4KCkpIHsgfQorTWFuYWdlclByb3h5OjpNYW5hZ2VyUHJveHko
Y29uc3QgU3RyaW5nJiBtYWNoU2VydmljZU5hbWUsIE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vz
c2lvbikKKyAgICA6IG1fY29ubmVjdGlvbihtYWNoU2VydmljZU5hbWUudXRmOCgpLCBuZXR3b3Jr
U2Vzc2lvbikgeyB9CiAKIHZvaWQgTWFuYWdlclByb3h5OjpzdG9yZVVuYXR0cmlidXRlZChXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIHBjbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewpAQCAtOTUsNiArOTUsMTEgQEAgdm9pZCBNYW5h
Z2VyUHJveHk6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mIGQKICAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlVHlwZTo6Q2xl
YXJGb3JSZWdpc3RyYWJsZURvbWFpbj4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGRvbWFp
bik7CiB9CiAKK3ZvaWQgTWFuYWdlclByb3h5OjpzZXREZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCBl
bmFibGVkKQoreworICAgIHNlbmRNZXNzYWdlPE1lc3NhZ2VUeXBlOjpTZXREZWJ1Z01vZGVJc0Vu
YWJsZWQ+KGVuYWJsZWQpOworfQorCiB2b2lkIE1hbmFnZXJQcm94eTo6bWlncmF0ZVByaXZhdGVD
bGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQmJiBwY20sIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlIHR5
cGUpCiB7CiAgICAgc2VuZE1lc3NhZ2U8TWVzc2FnZVR5cGU6Ok1pZ3JhdGVQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEZyb21MZWdhY3lTdG9yYWdlPihwY20sIHR5cGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXJQcm94eS5oCmluZGV4IGY0ZGRjMWNjYjFkNGMxYmM3YmEwNjQyNmM5NGY1YmJjYTYwNDRjMTYu
LmY5MTE2MTViNTJjOWU4YTI4MGQyN2ExOWU2ZjczMmM4N2Q0YzExMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlclByb3h5LmgKQEAgLTMyLDEyICszMiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorY2xhc3MgTmV0d29ya1Nlc3Npb247CisKIG5hbWVzcGFjZSBQQ00gewogCiBjbGFzcyBNYW5h
Z2VyUHJveHkgOiBwdWJsaWMgTWFuYWdlckludGVyZmFjZSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgTWFuYWdlclByb3h5KGNvbnN0IFN0cmluZyYgbWFjaFNl
cnZpY2VOYW1lKTsKKyAgICBNYW5hZ2VyUHJveHkoY29uc3QgU3RyaW5nJiBtYWNoU2VydmljZU5h
bWUsIE5ldHdvcmtTZXNzaW9uJik7CiAKICAgICB1c2luZyBBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIgPSBTdHJpbmc7CiAKQEAgLTQ2LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xl
YXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyRm9y
UmVnaXN0cmFibGVEb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgbWlncmF0ZVByaXZhdGVD
bGlja01lYXN1cmVtZW50RnJvbUxlZ2FjeVN0b3JhZ2UoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIGZpbmFs
OworICAgIHZvaWQgc2V0RGVidWdNb2RlSXNFbmFibGVkKGJvb2wpIGZpbmFsOwogCiAgICAgdm9p
ZCB0b1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wpIGZp
bmFsOwpAQCAtNjYsNyArNjksNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPE1lc3NhZ2VUeXBl
IG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzLCB0eXBlbmFtZS4uLiBSZXBseUFyZ3M+CiAg
ICAgdm9pZCBzZW5kTWVzc2FnZVdpdGhSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcGx5
QXJncy4uLik+JiYsIEFyZ3MmJi4uLikgY29uc3Q7CiAKLSAgICBDb25uZWN0aW9uIG1fY29ubmVj
dGlvbjsKKyAgICBDb25uZWN0aW9uVG9NYWNoU2VydmljZSBtX2Nvbm5lY3Rpb247CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBQQ00KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRD
b25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbkNv
Y29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjczNTViZjIwMzAxMDUzYWYxM2FkOTIwYzg4N2U5ZjMwN2JiYTVk
YjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlv
bkNvY29hLm1tCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKworI2lt
cG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRFbmNvZGVyLmgiCisjaW1wb3J0ICJQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5oIgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCituYW1lc3BhY2UgUENNIHsKKwordm9pZCBD
b25uZWN0aW9uVG9NYWNoU2VydmljZTo6aW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpIGNv
bnN0Cit7CisgICAgaWYgKG1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIG1fY29u
bmVjdGlvbiA9IGFkb3B0TlMoeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2VydmljZShtX21h
Y2hTZXJ2aWNlTmFtZS5kYXRhKCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIDApKTsKKyAg
ICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX2Nvbm5lY3Rpb24uZ2V0KCksIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oeHBjX29iamVjdF90IGV2ZW50KSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChldmVu
dCA9PSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEKQorICAgICAgICAgICAgV1RGTG9nQWx3
YXlzKCJGYWlsZWQgdG8gY29ubmVjdCB0byBtYWNoIHNlcnZpY2UgJXMsIGxpa2VseSBiZWNhdXNl
IGl0IGlzIG5vdCByZWdpc3RlcmVkIHdpdGggbGF1bmNoZCIsIHdlYWtUaGlzLT5tX21hY2hTZXJ2
aWNlTmFtZS5kYXRhKCkpOworICAgICAgICBpZiAoZXZlbnQgPT0gWFBDX0VSUk9SX0NPTk5FQ1RJ
T05fSU5URVJSVVBURUQpIHsKKyAgICAgICAgICAgIC8vIERhZW1vbiBjcmFzaGVkLCB3ZSB3aWxs
IG5lZWQgdG8gbWFrZSBhIG5ldyBjb25uZWN0aW9uIHRvIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBk
YWVtb24uCisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jb25uZWN0aW9uID0gbnVsbHB0cjsKKyAg
ICAgICAgfQorICAgICAgICB3ZWFrVGhpcy0+Y2hlY2tGb3JEZWJ1Z01lc3NhZ2VCcm9hZGNhc3Qo
ZXZlbnQpOworICAgIH0pOworICAgIHhwY19jb25uZWN0aW9uX2FjdGl2YXRlKG1fY29ubmVjdGlv
bi5nZXQoKSk7CisKKyAgICBzZW5kRGVidWdNb2RlSXNFbmFibGVkTWVzc2FnZUlmTmVjZXNzYXJ5
KCk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvblRvTWFjaFNlcnZpY2U6OnNlbmREZWJ1Z01vZGVJc0Vu
YWJsZWRNZXNzYWdlSWZOZWNlc3NhcnkoKSBjb25zdAoreworICAgIEFTU0VSVChtX2Nvbm5lY3Rp
b24pOworICAgIGlmICghbV9uZXR3b3JrU2Vzc2lvbgorICAgICAgICB8fCBtX25ldHdvcmtTZXNz
aW9uLT5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpCisgICAgICAgIHx8ICFtX25ldHdvcmtTZXNz
aW9uLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZUVuYWJsZWQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgRW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIuZW5jb2RlKHRydWUp
OworICAgIHNlbmQoTWVzc2FnZVR5cGU6OlNldERlYnVnTW9kZUlzRW5hYmxlZCwgZW5jb2Rlci50
YWtlQnVmZmVyKCkpOworfQorCit2b2lkIENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlOjpjaGVja0Zv
ckRlYnVnTWVzc2FnZUJyb2FkY2FzdCh4cGNfb2JqZWN0X3QgcmVxdWVzdCkgY29uc3QKK3sKKyAg
ICBpZiAoeHBjX2dldF90eXBlKHJlcXVlc3QpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpCisgICAg
ICAgIHJldHVybjsKKyAgICBjb25zdCBjaGFyKiBkZWJ1Z01lc3NhZ2UgPSB4cGNfZGljdGlvbmFy
eV9nZXRfc3RyaW5nKHJlcXVlc3QsIHByb3RvY29sRGVidWdNZXNzYWdlS2V5KTsKKyAgICBpZiAo
IWRlYnVnTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8gbWVzc2FnZUxldmVsID0g
c3RhdGljX2Nhc3Q8SlNDOjpNZXNzYWdlTGV2ZWw+KHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQo
cmVxdWVzdCwgcHJvdG9jb2xEZWJ1Z01lc3NhZ2VMZXZlbEtleSkpOworICAgIGF1dG8qIG5ldHdv
cmtTZXNzaW9uID0gbV9uZXR3b3JrU2Vzc2lvbi5nZXQoKTsKKyAgICBpZiAoIW5ldHdvcmtTZXNz
aW9uKQorICAgICAgICByZXR1cm47CisgICAgbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1Byb2Nl
c3MoKS5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShtX25ldHdvcmtTZXNzaW9uLT5zZXNzaW9uSUQo
KSwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIG1lc3NhZ2VMZXZlbCwg
U3RyaW5nOjpmcm9tVVRGOChkZWJ1Z01lc3NhZ2UpKTsKK30KKworc3RhdGljIE9TT2JqZWN0UHRy
PHhwY19vYmplY3RfdD4gZGljdGlvbmFyeUZyb21NZXNzYWdlKE1lc3NhZ2VUeXBlIG1lc3NhZ2VU
eXBlLCBFbmNvZGVkTWVzc2FnZSYmIG1lc3NhZ2UpCit7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0g
YWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkp
OworICAgIGFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGljdGlvbmFyeShXVEZNb3ZlKG1l
c3NhZ2UpLCBkaWN0aW9uYXJ5LmdldCgpKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0
KGRpY3Rpb25hcnkuZ2V0KCksIHByb3RvY29sTWVzc2FnZVR5cGVLZXksIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihtZXNzYWdlVHlwZSkpOworICAgIHJldHVybiBkaWN0aW9uYXJ5OworfQorCit2b2lk
IENvbm5lY3Rpb246OnNlbmQoeHBjX29iamVjdF90IG1lc3NhZ2UpIGNvbnN0Cit7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBBU1NFUlQobV9jb25uZWN0aW9uLmdldCgpKTsK
KyAgICBBU1NFUlQoeHBjX2dldF90eXBlKG1lc3NhZ2UpID09IFhQQ19UWVBFX0RJQ1RJT05BUlkp
OworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShtX2Nvbm5lY3Rpb24uZ2V0KCksIG1l
c3NhZ2UpOworfQorCit2b2lkIENvbm5lY3Rpb246OnNlbmRXaXRoUmVwbHkoeHBjX29iamVjdF90
IG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoeHBjX29iamVjdF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAg
IEFTU0VSVChtX2Nvbm5lY3Rpb24uZ2V0KCkpOworICAgIEFTU0VSVCh4cGNfZ2V0X3R5cGUobWVz
c2FnZSkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9t
ZXNzYWdlX3dpdGhfcmVwbHkobV9jb25uZWN0aW9uLmdldCgpLCBtZXNzYWdlLCBkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBtYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildICh4cGNfb2JqZWN0X3QgcmVwbHkpIG11dGFibGUgeworICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXBseSk7CisgICAgfSkuZ2V0KCkpOworfQorCit2b2lkIENvbm5lY3Rpb25Ub01hY2hTZXJ2
aWNlOjpzZW5kKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmIG1lc3Nh
Z2UpIGNvbnN0Cit7CisgICAgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpOworICAgIENv
bm5lY3Rpb246OnNlbmQoZGljdGlvbmFyeUZyb21NZXNzYWdlKG1lc3NhZ2VUeXBlLCBXVEZNb3Zl
KG1lc3NhZ2UpKS5nZXQoKSk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvblRvTWFjaFNlcnZpY2U6OnNl
bmRXaXRoUmVwbHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVz
c2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAg
IGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKKworICAgIENvbm5lY3Rpb246OnNlbmRX
aXRoUmVwbHkoZGljdGlvbmFyeUZyb21NZXNzYWdlKG1lc3NhZ2VUeXBlLCBXVEZNb3ZlKG1lc3Nh
Z2UpKS5nZXQoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildICh4cGNfb2JqZWN0X3QgcmVwbHkpIG11dGFibGUgeworICAgICAgICBpZiAoeHBjX2dldF90
eXBlKHJlcGx5KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKSB7CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0p
OworICAgICAgICB9CisgICAgICAgIGlmICh4cGNfZGljdGlvbmFyeV9nZXRfdWludDY0KHJlcGx5
LCBwcm90b2NvbFZlcnNpb25LZXkpICE9IHByb3RvY29sVmVyc2lvblZhbHVlKSB7CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOworICAgICAgICB9CisgICAgICAgIHNpemVfdCBkYXRhU2l6ZSB7IDAgfTsK
KyAgICAgICAgY29uc3Qgdm9pZCogZGF0YSA9IHhwY19kaWN0aW9uYXJ5X2dldF9kYXRhKHJlcGx5
LCBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCAmZGF0YVNpemUpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgZGF0YVNpemUg
fSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBDTQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNv
Y29hLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzZlNmJmZTczMTUzOWVhMTE4
NDM3M2E4Y2U2YmE1NWUyYTljOWI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29j
b2EubW0KKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24u
aCIKLQotI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMuaCIKLSNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotbmFt
ZXNwYWNlIFBDTSB7Ci0KLUNvbm5lY3Rpb246OkNvbm5lY3Rpb24oQ1N0cmluZyYmIG1hY2hTZXJ2
aWNlTmFtZSkKLSAgICA6IG1fbWFjaFNlcnZpY2VOYW1lKFdURk1vdmUobWFjaFNlcnZpY2VOYW1l
KSkgeyB9Ci0KLXZvaWQgQ29ubmVjdGlvbjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgp
IGNvbnN0Ci17Ci0gICAgaWYgKG1fY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotICAgIG1f
Y29ubmVjdGlvbiA9IGFkb3B0T1NPYmplY3QoeHBjX2Nvbm5lY3Rpb25fY3JlYXRlX21hY2hfc2Vy
dmljZShtX21hY2hTZXJ2aWNlTmFtZS5kYXRhKCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IDApKTsKLSAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihtX2Nvbm5lY3Rpb24u
Z2V0KCksIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oeHBjX29iamVjdF90IGV2ZW50
KSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IGlmIChldmVudCA9PSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlZBTElEKQotICAgICAgICAgICAg
V1RGTG9nQWx3YXlzKCJGYWlsZWQgdG8gY29ubmVjdCB0byBtYWNoIHNlcnZpY2UgJXMsIGxpa2Vs
eSBiZWNhdXNlIGl0IGlzIG5vdCByZWdpc3RlcmVkIHdpdGggbGF1bmNoZCIsIHdlYWtUaGlzLT5t
X21hY2hTZXJ2aWNlTmFtZS5kYXRhKCkpOwotICAgICAgICBpZiAoZXZlbnQgPT0gWFBDX0VSUk9S
X0NPTk5FQ1RJT05fSU5URVJSVVBURUQpIHsKLSAgICAgICAgICAgIC8vIERhZW1vbiBjcmFzaGVk
LCB3ZSB3aWxsIG5lZWQgdG8gbWFrZSBhIG5ldyBjb25uZWN0aW9uIHRvIGEgbmV3IGluc3RhbmNl
IG9mIHRoZSBkYWVtb24uCi0gICAgICAgICAgICB3ZWFrVGhpcy0+bV9jb25uZWN0aW9uID0gbnVs
bHB0cjsKLSAgICAgICAgfQotICAgIH0pOwotICAgIHhwY19jb25uZWN0aW9uX2FjdGl2YXRlKG1f
Y29ubmVjdGlvbi5nZXQoKSk7Ci19Ci0KLXN0YXRpYyBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+
IGRpY3Rpb25hcnlGcm9tTWVzc2FnZShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5jb2RlZE1l
c3NhZ2UmJiBtZXNzYWdlKQotewotICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0T1NPYmplY3Qo
eHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBhZGRWZXJz
aW9uQW5kRW5jb2RlZE1lc3NhZ2VUb0RpY3Rpb25hcnkoV1RGTW92ZShtZXNzYWdlKSwgZGljdGlv
bmFyeS5nZXQoKSk7Ci0gICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5Lmdl
dCgpLCBwcm90b2NvbE1lc3NhZ2VUeXBlS2V5LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obWVzc2Fn
ZVR5cGUpKTsKLSAgICByZXR1cm4gZGljdGlvbmFyeTsKLX0KLQotdm9pZCBDb25uZWN0aW9uOjpz
ZW5kKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmIG1lc3NhZ2UpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpbml0aWFsaXplQ29u
bmVjdGlvbklmTmVlZGVkKCk7Ci0KLSAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UobV9j
b25uZWN0aW9uLmdldCgpLCBkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UobWVzc2FnZVR5cGUsIFdURk1v
dmUobWVzc2FnZSkpLmdldCgpKTsKLX0KLQotdm9pZCBDb25uZWN0aW9uOjpzZW5kV2l0aFJlcGx5
KE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBFbmNvZGVkTWVzc2FnZSYmIG1lc3NhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBpbml0aWFsaXpl
Q29ubmVjdGlvbklmTmVlZGVkKCk7Ci0KLSAgICBhdXRvIGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5
RnJvbU1lc3NhZ2UobWVzc2FnZVR5cGUsIFdURk1vdmUobWVzc2FnZSkpOwotICAgIHhwY19jb25u
ZWN0aW9uX3NlbmRfbWVzc2FnZV93aXRoX3JlcGx5KG1fY29ubmVjdGlvbi5nZXQoKSwgZGljdGlv
bmFyeS5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgbWFrZUJsb2NrUHRyKFtjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoeHBjX29iamVjdF90
IHJlcGx5KSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKLSAg
ICAgICAgaWYgKHhwY19nZXRfdHlwZShyZXBseSkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkgewot
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoeHBjX2RpY3Rpb25h
cnlfZ2V0X3VpbnQ2NChyZXBseSwgcHJvdG9jb2xWZXJzaW9uS2V5KSAhPSBwcm90b2NvbFZlcnNp
b25WYWx1ZSkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLSAgICAgICAgfQotICAgICAgICBzaXpl
X3QgZGF0YVNpemUgeyAwIH07Ci0gICAgICAgIGNvbnN0IHZvaWQqIGRhdGEgPSB4cGNfZGljdGlv
bmFyeV9nZXRfZGF0YShyZXBseSwgcHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSwgJmRhdGFTaXpl
KTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YSksIGRhdGFTaXplIH0pOwotICAgIH0pLmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgUENNCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uQ29ubmVj
dGlvblNldC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2Nv
YS9EYWVtb24vUENNRGFlbW9uQ29ubmVjdGlvblNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhlMTM0MjcwOGNj
YWJmNWJkOTlkOTQxNDUyNWZkMDg0MjdmOWU5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25D
b25uZWN0aW9uU2V0LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisKK25hbWVzcGFjZSBKU0Mgewor
ZW51bSBjbGFzcyBNZXNzYWdlTGV2ZWwgOiB1aW50OF90OworfQorCituYW1lc3BhY2UgV2ViS2l0
IHsKK25hbWVzcGFjZSBQQ00geworCitjbGFzcyBDb25uZWN0aW9uOworCitjbGFzcyBEYWVtb25D
b25uZWN0aW9uU2V0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRGFlbW9uQ29ubmVjdGlvblNldCYg
c2luZ2xldG9uKCk7CisgICAgCisgICAgdm9pZCBhZGQoeHBjX2Nvbm5lY3Rpb25fdCk7CisgICAg
dm9pZCByZW1vdmUoeHBjX2Nvbm5lY3Rpb25fdCk7CisKKyAgICB2b2lkIHNldENvbm5lY3RlZE5l
dHdvcmtQcm9jZXNzSGFzRGVidWdNb2RlRW5hYmxlZChjb25zdCBDb25uZWN0aW9uJiwgYm9vbCk7
CisgICAgYm9vbCBkZWJ1Z01vZGVFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBicm9hZGNhc3RD
b25zb2xlTWVzc2FnZShKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJik7CisgICAgCitw
cml2YXRlOgorICAgIGVudW0gY2xhc3MgRGVidWdNb2RlRW5hYmxlZCA6IGJvb2wgeyBObywgWWVz
IH07CisgICAgSGFzaE1hcDxSZXRhaW5QdHI8eHBjX2Nvbm5lY3Rpb25fdD4sIERlYnVnTW9kZUVu
YWJsZWQ+IG1fY29ubmVjdGlvbnM7CisgICAgc2l6ZV90IG1fY29ubmVjdGlvbnNXaXRoRGVidWdN
b2RlRW5hYmxlZCB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFBDTQorfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRp
bGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25Db25uZWN0aW9uU2V0Lm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uQ29u
bmVjdGlvblNldC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2MyMTEzYzc5YjdiYzVkMTkwMDBlZmU3ZTAxNGY2
MTM5N2I0MzgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQ
b2ludFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uQ29ubmVjdGlvblNldC5tbQpAQCAt
MCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQ
Q01EYWVtb25Db25uZWN0aW9uU2V0LmgiCisKKyNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVt
ZW50Q29ubmVjdGlvbi5oIgorI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
SW50ZXJmYWNlLmgiCisjaW1wb3J0IDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbXBvcnQgPHd0Zi9S
dW5Mb29wLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworbmFtZXNwYWNlIFBDTSB7CisKK0RhZW1v
bkNvbm5lY3Rpb25TZXQmIERhZW1vbkNvbm5lY3Rpb25TZXQ6OnNpbmdsZXRvbigpCit7CisgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGFl
bW9uQ29ubmVjdGlvblNldD4gc2V0OworICAgIHJldHVybiBzZXQuZ2V0KCk7Cit9CisgICAgCit2
b2lkIERhZW1vbkNvbm5lY3Rpb25TZXQ6OmFkZCh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24p
Cit7CisgICAgQVNTRVJUKCFtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24pKTsKKyAg
ICBtX2Nvbm5lY3Rpb25zLnNldChjb25uZWN0aW9uLCBEZWJ1Z01vZGVFbmFibGVkOjpObyk7Cit9
CisKK3ZvaWQgRGFlbW9uQ29ubmVjdGlvblNldDo6cmVtb3ZlKHhwY19jb25uZWN0aW9uX3QgY29u
bmVjdGlvbikKK3sKKyAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9u
KSk7CisgICAgYXV0byBoYWREZWJ1Z01vZGVFbmFibGVkID0gbV9jb25uZWN0aW9ucy50YWtlKGNv
bm5lY3Rpb24pOworICAgIGlmIChoYWREZWJ1Z01vZGVFbmFibGVkID09IERlYnVnTW9kZUVuYWJs
ZWQ6OlllcykgeworICAgICAgICBBU1NFUlQobV9jb25uZWN0aW9uc1dpdGhEZWJ1Z01vZGVFbmFi
bGVkKTsKKyAgICAgICAgbV9jb25uZWN0aW9uc1dpdGhEZWJ1Z01vZGVFbmFibGVkLS07CisgICAg
fQorfQorCit2b2lkIERhZW1vbkNvbm5lY3Rpb25TZXQ6OnNldENvbm5lY3RlZE5ldHdvcmtQcm9j
ZXNzSGFzRGVidWdNb2RlRW5hYmxlZChjb25zdCBDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBib29s
IGVuYWJsZWQpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fY29ubmVjdGlvbnMuZmluZChjb25u
ZWN0aW9uLmdldCgpKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9jb25uZWN0aW9ucy5lbmQoKSkg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBib29sIHdhc0VuYWJsZWQgPSBpdGVyYXRvci0+dmFsdWUgPT0gRGVidWdNb2RlRW5hYmxl
ZDo6WWVzOworICAgIGlmICh3YXNFbmFibGVkID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChlbmFibGVkKSB7CisgICAgICAgIGl0ZXJhdG9yLT52YWx1ZSA9IERlYnVnTW9k
ZUVuYWJsZWQ6OlllczsKKyAgICAgICAgbV9jb25uZWN0aW9uc1dpdGhEZWJ1Z01vZGVFbmFibGVk
Kys7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaXRlcmF0b3ItPnZhbHVlID0gRGVidWdNb2RlRW5h
YmxlZDo6Tm87CisgICAgICAgIG1fY29ubmVjdGlvbnNXaXRoRGVidWdNb2RlRW5hYmxlZC0tOwor
ICAgIH0KK30KKworYm9vbCBEYWVtb25Db25uZWN0aW9uU2V0OjpkZWJ1Z01vZGVFbmFibGVkKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gISFtX2Nvbm5lY3Rpb25zV2l0aERlYnVnTW9kZUVuYWJsZWQ7
Cit9CisKK3ZvaWQgRGFlbW9uQ29ubmVjdGlvblNldDo6YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
SlNDOjpNZXNzYWdlTGV2ZWwgbWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7
CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRPU09iamVjdCh4cGNfZGljdGlvbmFyeV9jcmVh
dGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQo
ZGljdGlvbmFyeS5nZXQoKSwgcHJvdG9jb2xEZWJ1Z01lc3NhZ2VMZXZlbEtleSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG1lc3NhZ2VMZXZlbCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJp
bmcoZGljdGlvbmFyeS5nZXQoKSwgcHJvdG9jb2xEZWJ1Z01lc3NhZ2VLZXksIG1lc3NhZ2UudXRm
OCgpLmRhdGEoKSk7CisgICAgZm9yIChhdXRvJiBjb25uZWN0aW9uIDogbV9jb25uZWN0aW9ucy5r
ZXlzKCkpCisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLmdl
dCgpLCBkaWN0aW9uYXJ5LmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgUENNCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9p
bnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkVudHJ5UG9pbnQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25F
bnRyeVBvaW50Lm1tCmluZGV4IDU0OGZmNTE2NGM2ZDZmMTliZTUxZDRmNDY4ZGQ3YmY1ZDQzYTQ4
NmQuLjk0NjE2MWY1NDZjYjBiZTgwMTQ2OWY0NTFiZjBmYWRlMjBlYTAwNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BD
TURhZW1vbkVudHJ5UG9pbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9Db2NvYS9EYWVtb24vUENNRGFlbW9uRW50cnlQb2ludC5tbQpAQCAtMjYsNyAr
MjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJQQ01EYWVtb25FbnRyeVBvaW50
LmgiCiAKKyNpbXBvcnQgIlBDTURhZW1vbkNvbm5lY3Rpb25TZXQuaCIKICNpbXBvcnQgIlByaXZh
dGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oIgorI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREZWNvZGVyLmgiCiAjaW1wb3J0ICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXJJbnRlcmZhY2UuaCIKICNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0
aWVzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KQEAgLTQzLDEzICs0NSw2
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgSGFzaFNldDxSZXRhaW5QdHI8eHBj
X2Nvbm5lY3Rpb25fdD4+JiBwZWVycygpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxSZXRhaW5QdHI8eHBjX2Nvbm5l
Y3Rpb25fdD4+PiBzZXQ7Ci0gICAgcmV0dXJuIHNldC5nZXQoKTsKLX0KLQogc3RhdGljIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUENNOjpFbmNvZGVkTWVzc2FnZSYmKT4gcmVwbHlTZW5kZXIoUENN
OjpNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiYmIHJl
cXVlc3QpCiB7CiAgICAgaWYgKCFQQ006Om1lc3NhZ2VUeXBlU2VuZHNSZXBseShtZXNzYWdlVHlw
ZSkpCkBAIC03NCw3ICs2OSw3IEBAIHN0YXRpYyB2b2lkIGNvbm5lY3Rpb25FdmVudEhhbmRsZXIo
eHBjX29iamVjdF90IHJlcXVlc3QpCiAgICAgc2l6ZV90IGRhdGFTaXplIHsgMCB9OwogICAgIGNv
bnN0IHZvaWQqIGRhdGEgPSB4cGNfZGljdGlvbmFyeV9nZXRfZGF0YShyZXF1ZXN0LCBQQ006OnBy
b3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksICZkYXRhU2l6ZSk7CiAgICAgUENNOjpFbmNvZGVkTWVz
c2FnZSBlbmNvZGVkTWVzc2FnZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwg
ZGF0YVNpemUgfTsKLSAgICBkZWNvZGVNZXNzYWdlQW5kU2VuZFRvTWFuYWdlcihtZXNzYWdlVHlw
ZSwgV1RGTW92ZShlbmNvZGVkTWVzc2FnZSksIHJlcGx5U2VuZGVyKG1lc3NhZ2VUeXBlLCByZXF1
ZXN0KSk7CisgICAgZGVjb2RlTWVzc2FnZUFuZFNlbmRUb01hbmFnZXIoUENNOjpDb25uZWN0aW9u
KHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlvbihyZXF1ZXN0KSksIG1lc3NhZ2VU
eXBlLCBXVEZNb3ZlKGVuY29kZWRNZXNzYWdlKSwgcmVwbHlTZW5kZXIobWVzc2FnZVR5cGUsIHJl
cXVlc3QpKTsKIH0KIAogc3RhdGljIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JNYWNoU2VydmljZUNv
bm5lY3Rpb25zKGNvbnN0IGNoYXIqIHNlcnZpY2VOYW1lKQpAQCAtOTEsNyArODYsNyBAQCBzdGF0
aWMgdm9pZCBzdGFydExpc3RlbmluZ0Zvck1hY2hTZXJ2aWNlQ29ubmVjdGlvbnMoY29uc3QgY2hh
ciogc2VydmljZU5hbWUpCiAgICAgICAgICAgICAgICAgTlNMb2coQCJGYWlsZWQgdG8gc3RhcnQg
bGlzdGVuaW5nIGZvciBjb25uZWN0aW9ucyB0byBtYWNoIHNlcnZpY2UgJXMsIGxpa2VseSBiZWNh
dXNlIGl0IGlzIG5vdCByZWdpc3RlcmVkIHdpdGggbGF1bmNoZCIsIHNlcnZpY2VOYW1lKTsKICAg
ICAgICAgICAgIGlmIChldmVudCA9PSBYUENfRVJST1JfQ09OTkVDVElPTl9JTlRFUlJVUFRFRCkg
ewogICAgICAgICAgICAgICAgIE5TTG9nKEAicmVtb3ZpbmcgcGVlciBjb25uZWN0aW9uICVwIiwg
cGVlcik7Ci0gICAgICAgICAgICAgICAgcGVlcnMoKS5yZW1vdmUocGVlcik7CisgICAgICAgICAg
ICAgICAgUENNOjpEYWVtb25Db25uZWN0aW9uU2V0OjpzaW5nbGV0b24oKS5yZW1vdmUocGVlcik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29u
bmVjdGlvbkV2ZW50SGFuZGxlcihldmVudCk7CkBAIC0xMDAsNyArOTUsNyBAQCBzdGF0aWMgdm9p
ZCBzdGFydExpc3RlbmluZ0Zvck1hY2hTZXJ2aWNlQ29ubmVjdGlvbnMoY29uc3QgY2hhciogc2Vy
dmljZU5hbWUpCiAgICAgICAgIHhwY19jb25uZWN0aW9uX2FjdGl2YXRlKHBlZXIpOwogCiAgICAg
ICAgIE5TTG9nKEAiYWRkaW5nIHBlZXIgY29ubmVjdGlvbiAlcCIsIHBlZXIpOwotICAgICAgICBw
ZWVycygpLmFkZChwZWVyKTsKKyAgICAgICAgUENNOjpEYWVtb25Db25uZWN0aW9uU2V0OjpzaW5n
bGV0b24oKS5hZGQocGVlcik7CiAgICAgfSk7CiAgICAgeHBjX2Nvbm5lY3Rpb25fYWN0aXZhdGUo
bGlzdGVuZXIuZ2V0KCkuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDVlNmI1
MmMxMjExNDZjNmQ1M2FjZTY2NWQ2NWMyNTZmZGU1ZTk1OTMuLjQzYjRjMmRiMjgxM2E4N2NlMGUw
OTA5ZTVmYWNjZTQ0MmNkNmU2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQxLDcgKzQx
LDcgQEAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KIE5l
dHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvRGFlbW9uL0RhZW1vbkVudHJ5UG9pbnQubW0K
IE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9OZXR3b3JrU2Vydmlj
ZUVudHJ5UG9pbnQubW0KIAotTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
Y29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0KK05l
dHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50Q29ubmVjdGlvbkNvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2Nv
YS5tbQogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0KIApAQCAtMTkzLDYgKzE5Myw3IEBAIFNo
YXJlZC9Db2NvYS9XS05TVVJMUmVxdWVzdC5tbQogU2hhcmVkL0NvY29hL1dLT2JqZWN0Lm1tCiBT
aGFyZWQvQ29jb2EvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzQ29jb2EubW0KIAorU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvQ29jb2EvRGFlbW9uL1BDTURhZW1vbkNvbm5lY3Rpb25TZXQu
bW0KIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL0RhZW1vbi9QQ01EYWVtb25FbnRy
eVBvaW50Lm1tCiAKIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL0NvY29hL1hQQ1NlcnZpY2Uv
WFBDU2VydmljZUVudHJ5UG9pbnQubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDdiMDllNWE1NTE3Mzkz
M2RiY2U2MmM0NmU3OTU1MTZkMTdmMWI1ZGMuLjQxYWIyZDA3NWJlM2ZhM2Q3ZDlhYzRlZWNlY2Iz
NzBkZTNiZjlkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNjU4LDYgKzY1OCwxMSBAQCBzdGF0aWMg
VmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0ZURhdGFSZWNvcmRzKE5T
QXJyYXkgKmRhdGFSZWNvcgogICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5hbGxvd1RMU0NlcnRpZmlj
YXRlQ2hhaW5Gb3JMb2NhbFBDTVRlc3RpbmcoV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKHNlcnZl
clRydXN0KSk7CiB9CiAKKy0gKHZvaWQpX3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVidWdN
b2RlRW5hYmxlZEZvclRlc3Rpbmc6KEJPT0wpZW5hYmxlZAoreworICAgIF93ZWJzaXRlRGF0YVN0
b3JlLT5zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERlYnVnTW9kZShlbmFibGVkKTsKK30KKwog
LSAodm9pZClfYXBwQm91bmREb21haW5zOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICop
KWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggYTlkYmYxNTIxZDY3YTE0NDU2MGFmYWQ2MjQ1M2M1
NjVmNTdjMjM1NC4uZTc1ZmM2YTIzODFmNjE5YjBlNzA4MDQwZmY0OWMzYTU0MGFjZTg3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC04NSw2ICs4NSw3IEBAIHR5cGVkZWYgTlNfT1BU
SU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAKIC0g
KHZvaWQpX2FsbG93VExTQ2VydGlmaWNhdGVDaGFpbjooTlNBcnJheSAqKWNlcnRpZmljYXRlQ2hh
aW4gZm9ySG9zdDooTlNTdHJpbmcgKilob3N0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCks
IGlvcygxNS4wKSk7CiAtICh2b2lkKV90cnVzdFNlcnZlckZvckxvY2FsUENNVGVzdGluZzooU2Vj
VHJ1c3RSZWYpc2VydmVyVHJ1c3QgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50RGVi
dWdNb2RlRW5hYmxlZEZvclRlc3Rpbmc6KEJPT0wpZW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAtICh2b2lkKV9yZW5hbWVPcmln
aW46KE5TVVJMICopb2xkTmFtZSB0bzooTlNVUkwgKiluZXdOYW1lIGZvckRhdGFPZlR5cGVzOihO
U1NldDxOU1N0cmluZyAqPiAqKWRhdGFUeXBlcyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQxYzY5NTE1YmIxODJkZmE1YTU0MDc3NDg2NGY3
M2VjMjk4YzQxZDkuLmJhMjM3OWVjNGUwOTdhMjM2NGFmZGE0ZmIyNzM0ZjZmZDE3ZDFmOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NDUzNyw2ICs0NTM3LDggQEAKIAkJNUM1RDIzODgyMjdBMTg5MjAwMEI5QkRBIC8qIF9XS0N1c3Rv
bUhlYWRlckZpZWxkcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IF9XS0N1c3RvbUhlYWRlckZpZWxkcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUM1RDIzODkyMjdBMTg5MjAwMEI5QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tDdXN0b21IZWFkZXJGaWVsZHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1RDIzOEEyMjdBMUQ5QjAwMEI5QkRBIC8qIEFQ
SUN1c3RvbUhlYWRlckZpZWxkcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
UElDdXN0b21IZWFkZXJGaWVsZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM2
Mjg5QTgyNzA2OEVDMDAwQ0Y1RUM2IC8qIFBDTURhZW1vbkNvbm5lY3Rpb25TZXQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUENNRGFlbW9uQ29ubmVjdGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1QzYyODlBOTI3MDY4RUMwMDBDRjVFQzYgLyogUENNRGFlbW9uQ29ubmVjdGlvblNl
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBDTURhZW1vbkNvbm5lY3Rpb25TZXQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjJGREY4MUVGQzI2M0MwMENFMDcyRSAvKiBX
S1VSTFNjaGVtZVRhc2tQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVVJMU2NoZW1lVGFza1By
aXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2NkE0QjMyMzIwOTYxMzAw
RUE0RDQ0IC8qIFdLSFRUUENvb2tpZVN0b3JlUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JlUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUM2NkE0QjQyMzIwOTYxNDAwRUE0RDQ0IC8qIFdLSFRUUENvb2tpZVN0
b3JlUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0
b3JlUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NjAwLDcgKzQ2MDIsNyBA
QAogCQk1Q0I5MzBDMDI2RTA1NDJGMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRD
bGllbnRJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaXZh
dGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDQjkzMEMxMjZFMDU0QjgwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dENsaWVudEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRDbGllbnRJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDQjkzMEYyMjZFN0VFRTAwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdv
cmtMb2FkZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1Q0I5MzBGNDI2RTgwMUU4MDAzMkIxQzAgLyogUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREYWVtb25Db25uZWN0aW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCOTMwRjQyNkU4MDFFODAwMzJCMUMwIC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uQ29jb2EubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjkzMEY1MjZFODAyMTUwMDMyQjFDMCAvKiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXJQcm94eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1Q0I5MzBGNjI2RTgwMjE1MDAzMkIxQzAgLyogUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYWVtb25DbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUNCOTMwRjcyNkU4MDIxNTAwMzJCMUMwIC8qIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50RGFlbW9uQ2xpZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk0NjgsNyArOTQ3MCw3IEBACiAJCTVDQjkzMEYxMjZF
N0VFODkwMDMyQjFDMCAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJNUNCOTMwRjQyNkU4MDFFODAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01l
YXN1cmVtZW50RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tICovLAorCQkJCTVDQjkzMEY0MjZFODAx
RTgwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb25Db2NvYS5tbSAq
LywKIAkJCQk1Q0I5MzBGMjI2RTdFRUUwMDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnROZXR3b3JrTG9hZGVyQ29jb2EubW0gKi8sCiAJCQkJNUNCOTMxMDcyNkU4NDFDQjAwMzJCMUMw
IC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLmggKi8sCiAJCQkJNUNCOTMx
MDgyNkU4NDFDQjAwMzJCMUMwIC8qIFByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVz
Lm1tICovLApAQCAtOTQ4MCw2ICs5NDgyLDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJNUNBRjdBQTUyNkY5M0E5NTAwMDNGMTlFIC8qIEFkQXR0cmlidXRpb25E
YWVtb24uYyAqLywKKwkJCQk1QzYyODlBODI3MDY4RUMwMDBDRjVFQzYgLyogUENNRGFlbW9uQ29u
bmVjdGlvblNldC5oICovLAorCQkJCTVDNjI4OUE5MjcwNjhFQzAwMENGNUVDNiAvKiBQQ01EYWVt
b25Db25uZWN0aW9uU2V0Lm1tICovLAogCQkJCTVDQjkzMTA0MjZFODM3RkMwMDMyQjFDMCAvKiBQ
Q01EYWVtb25FbnRyeVBvaW50LmggKi8sCiAJCQkJNUNCOTMxMDUyNkU4MzdGRDAwMzJCMUMwIC8q
IFBDTURhZW1vbkVudHJ5UG9pbnQubW0gKi8sCiAJCQkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNjNTQ4NTM5YTFjMGQ4ZmYwMmEzMDBhYzA4
OWRiYTM1NDk1ZmU5NDYuLjhjZDk1MTVkYjAyZmU4MDI2ODJlYzk1ZjNiZWQyYjc4ZjFmYWY1YWMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0xMC0wNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgorCisgICAgICAgIEltcGxlbWVudCBtaXNzaW5nIGZ1bmN0aW9ucyBpbiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERhZW1vbkNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxMDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0V2ZW50QXR0cmlidXRpb24ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0RGFlbW9u
UExpc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2xlYW5VcERhZW1vbik6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RVSURlbGVnYXRlLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxl
Z2F0ZS5tbToKKyAgICAgICAgKC1bVGVzdFVJRGVsZWdhdGUgX3dlYlZpZXc6ZGlkQXR0YWNoTG9j
YWxJbnNwZWN0b3I6XSk6CisgICAgICAgICgtW1Rlc3RVSURlbGVnYXRlIHdhaXRGb3JJbnNwZWN0
b3JUb1Nob3ddKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF90ZXN0X3dhaXRGb3JJbnNwZWN0b3JU
b1Nob3ddKToKKwogMjAyMS0xMC0wNCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgU2VuZCBFV1MgZXhjZXB0aW9uIGVtYWlscyB0byBib3Qgd2F0Y2hlcnMg
aW5zdGVhZCBvZiBBYWthc2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbQppbmRleCA5NDAxOTY3YWUxMDJlMDRi
NTQyZDRlODc3ZWRjOTRmMzM0NWY3M2UyLi5kMjllMzg3MTI5YTU2MTQyYjc2YTZhODhjODUwYWQ0
N2IyYjVlYjI0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0V2ZW50QXR0cmlidXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tCkBAIC0yOSwxMiArMjksMTkgQEAKICNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0
TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9y
dCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJXS1dl
YlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tNYWluLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tQYWdlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQYWdlSW5qZWN0ZWRC
dW5kbGVDbGllbnQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgor
I2ltcG9ydCA8V2ViS2l0L1dLU3RyaW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L19XS0luc3BlY3Rvci5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxtYWNoLW8vZHlsZC5oPgogI2ltcG9ydCA8d3RmL09T
T2JqZWN0UHRyLmg+CkBAIC00OSw2ICs1NiwxMCBAQAogCiAjZW5kaWYgLy8gSEFWRShSU0FfQlNT
QSkKIAorQGludGVyZmFjZSBXS1dlYlZpZXcgKCkKKy0gKFdLUGFnZVJlZilfcGFnZUZvclRlc3Rp
bmc7CitAZW5kCisKIEBpbnRlcmZhY2UgTW9ja0V2ZW50QXR0cmlidXRpb24gOiBOU09iamVjdAog
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduLCByZWFkb25seSkgdWludDhfdCBzb3VyY2VJ
ZGVudGlmaWVyOwpAQCAtMTEwLDcgKzEyMSw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyU3RhdGUoKQog
ICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmFkb3B0
TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pLmdldCgp
Ll9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5IGVycm9yOm5pbF07CiB9CiAKLXZvaWQg
cnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25m
aWd1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKFdLV2ViVmlldyAqLCBjb25zdCBIVFRQU2VydmVyJik+
JiYgYWRkQXR0cmlidXRpb25Ub1dlYlZpZXcpCit2b2lkIHJ1bkJhc2ljUENNVGVzdChXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKFdLV2ViVmlldyAq
LCBjb25zdCBIVFRQU2VydmVyJik+JiYgYWRkQXR0cmlidXRpb25Ub1dlYlZpZXcpCiB7CiAgICAg
Y2xlYXJTdGF0ZSgpOwogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldE5ldHdvcmtQcm9jZXNz
U3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nOk5PXTsKQEAgLTE2Myw3ICsxNzQsNyBAQCB2b2lk
IHJ1bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3QoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29u
ZmlndXJhdGlvbiwgRnVuY3RpbwogfQogCiAjaWYgSEFWRShSU0FfQlNTQSkKLVRFU1QoRXZlbnRB
dHRyaWJ1dGlvbiwgRnJhdWRQcmV2ZW50aW9uKQorVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgRnJhdWRQcmV2ZW50aW9uKQogewogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldE5ldHdv
cmtQcm9jZXNzU3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nOk5PXTsKICAgICBib29sIGRvbmUg
PSBmYWxzZTsKQEAgLTMxNywxNCArMzI4LDE0IEBAIFRFU1QoRXZlbnRBdHRyaWJ1dGlvbiwgRnJh
dWRQcmV2ZW50aW9uKQogfQogI2VuZGlmCiAKLVRFU1QoRXZlbnRBdHRyaWJ1dGlvbiwgQmFzaWMp
CitURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBCYXNpYykKIHsKLSAgICBydW5CYXNpY0V2
ZW50QXR0cmlidXRpb25UZXN0KG5pbCwgW10oV0tXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBIVFRQ
U2VydmVyJiBzZXJ2ZXIpIHsKKyAgICBydW5CYXNpY1BDTVRlc3QobmlsLCBbXShXS1dlYlZpZXcg
KndlYlZpZXcsIGNvbnN0IEhUVFBTZXJ2ZXImIHNlcnZlcikgewogICAgICAgICBbd2ViVmlldyBf
YWRkRXZlbnRBdHRyaWJ1dGlvbldpdGhTb3VyY2VJRDo0MiBkZXN0aW5hdGlvblVSTDpleGFtcGxl
VVJMKCkgc291cmNlRGVzY3JpcHRpb246QCJ0ZXN0IHNvdXJjZSBkZXNjcmlwdGlvbiIgcHVyY2hh
c2VyOkAidGVzdCBwdXJjaGFzZXIiIHJlcG9ydEVuZHBvaW50OnNlcnZlci5yZXF1ZXN0KCkuVVJM
IG9wdGlvbmFsTm9uY2U6bmlsIGFwcGxpY2F0aW9uQnVuZGxlSUQ6QCJ0ZXN0LmJ1bmRsZS5pZCJd
OwogICAgIH0pOwogfQogCi1URVNUKEV2ZW50QXR0cmlidXRpb24sIERhdGFiYXNlTG9jYXRpb24p
CitURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBEYXRhYmFzZUxvY2F0aW9uKQogewogICAg
IE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdOwogICAgIE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1w
b3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJFdmVudEF0
dHJpYnV0aW9uRGF0YWJhc2VMb2NhdGlvblRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOwpAQCAtMzQx
LDcgKzM1Miw3IEBAIFRFU1QoRXZlbnRBdHRyaWJ1dGlvbiwgRGF0YWJhc2VMb2NhdGlvbikKICAg
ICAgICAgYXV0byB2aWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gbmV3XSk7CiAgICAgICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0
ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1
cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIHZpZXdDb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVE
YXRhU3RvcmUgPSBkYXRhU3RvcmUuZ2V0KCk7Ci0gICAgICAgIHJ1bkJhc2ljRXZlbnRBdHRyaWJ1
dGlvblRlc3Qodmlld0NvbmZpZ3VyYXRpb24uZ2V0KCksIFtdKFdLV2ViVmlldyAqd2ViVmlldywg
Y29uc3QgSFRUUFNlcnZlciYgc2VydmVyKSB7CisgICAgICAgIHJ1bkJhc2ljUENNVGVzdCh2aWV3
Q29uZmlndXJhdGlvbi5nZXQoKSwgW10oV0tXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBIVFRQU2Vy
dmVyJiBzZXJ2ZXIpIHsKICAgICAgICAgICAgIFt3ZWJWaWV3IF9hZGRFdmVudEF0dHJpYnV0aW9u
V2l0aFNvdXJjZUlEOjQyIGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVVUkwoKSBzb3VyY2VEZXNjcmlw
dGlvbjpAInRlc3Qgc291cmNlIGRlc2NyaXB0aW9uIiBwdXJjaGFzZXI6QCJ0ZXN0IHB1cmNoYXNl
ciIgcmVwb3J0RW5kcG9pbnQ6c2VydmVyLnJlcXVlc3QoKS5VUkwgb3B0aW9uYWxOb25jZTpuaWwg
YXBwbGljYXRpb25CdW5kbGVJRDpAInRlc3QuYnVuZGxlLmlkIl07CiAgICAgICAgIH0pOwogICAg
ICAgICBvcmlnaW5hbE5ldHdvcmtQcm9jZXNzUGlkID0gW2RhdGFTdG9yZSBfbmV0d29ya1Byb2Nl
c3NJZGVudGlmaWVyXTsKQEAgLTQwMCw2ICs0MTEsNyBAQCBzdGF0aWMgT1NPYmplY3RQdHI8eHBj
X29iamVjdF90PiB0ZXN0RGFlbW9uUExpc3QoTlNVUkwgKnN0b3JhZ2VMb2NhdGlvbikKICAgICB4
cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKHBsaXN0LmdldCgpLCAiX01hbmFnZWRCeSIsICJUZXN0
V2ViS2l0QVBJIik7CiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhwbGlzdC5nZXQoKSwg
IkxhYmVsIiwgIm9yZy53ZWJraXQucGNtdGVzdGRhZW1vbiIpOwogICAgIHhwY19kaWN0aW9uYXJ5
X3NldF9ib29sKHBsaXN0LmdldCgpLCAiTGF1bmNoT25seU9uY2UiLCB0cnVlKTsKKyAgICB4cGNf
ZGljdGlvbmFyeV9zZXRfc3RyaW5nKHBsaXN0LmdldCgpLCAiU3RhbmRhcmRFcnJvclBhdGgiLCBb
c3RvcmFnZUxvY2F0aW9uIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImRhZW1vbl9zdGRl
cnIiXS5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik7CiAKICAgICB7CiAgICAgICAgIGF1
dG8gZW52aXJvbm1lbnRWYXJpYWJsZXMgPSBhZG9wdE9TT2JqZWN0KHhwY19kaWN0aW9uYXJ5X2Ny
ZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CkBAIC00MzEsNiArNDQzLDcgQEAgc3RhdGljIFJl
dGFpblB0cjxOU0RpY3Rpb25hcnk+IHRlc3REYWVtb25QTGlzdChOU1VSTCAqc3RvcmFnZUxvY2F0
aW9uKQogICAgIHJldHVybiBAewogICAgICAgICBAIkxhYmVsIiA6IEAib3JnLndlYmtpdC5wY210
ZXN0ZGFlbW9uIiwKICAgICAgICAgQCJMYXVuY2hPbmx5T25jZSIgOiBAWUVTLAorICAgICAgICBA
IlN0YW5kYXJkRXJyb3JQYXRoIiA6IFtzdG9yYWdlTG9jYXRpb24gVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiZGFlbW9uX3N0ZGVyciJdLnBhdGgsCiAgICAgICAgIEAiRW52aXJvbm1lbnRW
YXJpYWJsZXMiIDogQHsgQCJEWUxEX0ZSQU1FV09SS19QQVRIIiA6IGN1cnJlbnRFeGVjdXRhYmxl
RGlyZWN0b3J5KCkuZ2V0KCkucGF0aCB9LAogICAgICAgICBAIk1hY2hTZXJ2aWNlcyIgOiBAeyBA
Im9yZy53ZWJraXQucGNtdGVzdGRhZW1vbi5zZXJ2aWNlIiA6IEBZRVMgfSwKICAgICAgICAgQCJQ
cm9ncmFtQXJndW1lbnRzIiA6IEBbCkBAIC00NDUsNyArNDU4LDcgQEAgc3RhdGljIFJldGFpblB0
cjxOU0RpY3Rpb25hcnk+IHRlc3REYWVtb25QTGlzdChOU1VSTCAqc3RvcmFnZUxvY2F0aW9uKQog
CiAjZW5kaWYKIAotVEVTVChFdmVudEF0dHJpYnV0aW9uLCBEYWVtb24pCitzdGF0aWMgc3RkOjpw
YWlyPE5TVVJMICosIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKj4gc2V0VXBEYWVtb24oV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqdmlld0NvbmZpZ3VyYXRpb24pCiB7CiAgICAgTlNGaWxlTWFuYWdl
ciAqZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CiAgICAgTlNV
UkwgKnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9y
eSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkV2ZW50QXR0cmlidXRpb25EYWVt
b25UZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKQEAgLTQ2NywzMiArNDgwLDk5IEBAIFRFU1QoRXZl
bnRBdHRyaWJ1dGlvbiwgRGFlbW9uKQogICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKICAgICBzdWNj
ZXNzID0gW3BsaXN0IHdyaXRlVG9VUkw6cGxpc3RMb2NhdGlvbiBlcnJvcjomZXJyb3JdOwogICAg
IEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOwotICAgIHN5c3RlbShbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAImxhdW5jaGN0bCBsb2FkICVAIiwgcGxpc3RMb2NhdGlvbi5wYXRoXS5VVEY4U3RyaW5n
KTsKKyAgICBzeXN0ZW0oW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJsYXVuY2hjdGwgbG9h
ZCAlQCIsIHBsaXN0TG9jYXRpb24ucGF0aF0uZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTsKICNl
bmRpZgogICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKIAogICAgIGF1dG8gZGF0YVN0b3JlQ29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10p
OwogICAgIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkucGNtTWFjaFNlcnZpY2VOYW1lID0g
QCJvcmcud2Via2l0LnBjbXRlc3RkYWVtb24uc2VydmljZSI7Ci0gICAgYXV0byB2aWV3Q29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7Ci0gICAgdmll
d0NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5nZXQoKV0pLmdldCgpOwotICAgIHJ1bkJhc2ljRXZlbnRBdHRyaWJ1dGlvblRlc3Qo
dmlld0NvbmZpZ3VyYXRpb24uZ2V0KCksIFtdKFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgSFRU
UFNlcnZlciYgc2VydmVyKSB7Ci0gICAgICAgIFt3ZWJWaWV3IF9hZGRFdmVudEF0dHJpYnV0aW9u
V2l0aFNvdXJjZUlEOjQyIGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVVUkwoKSBzb3VyY2VEZXNjcmlw
dGlvbjpAInRlc3Qgc291cmNlIGRlc2NyaXB0aW9uIiBwdXJjaGFzZXI6QCJ0ZXN0IHB1cmNoYXNl
ciIgcmVwb3J0RW5kcG9pbnQ6c2VydmVyLnJlcXVlc3QoKS5VUkwgb3B0aW9uYWxOb25jZTpuaWwg
YXBwbGljYXRpb25CdW5kbGVJRDpAInRlc3QuYnVuZGxlLmlkIl07Ci0gICAgfSk7CisgICAgdmll
d0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRh
U3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5nZXQoKV0pLmdldCgpOwogCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHRlbXBEaXIsIHZp
ZXdDb25maWd1cmF0aW9uKTsKK30KKworc3RhdGljIHZvaWQgY2xlYW5VcERhZW1vbihOU1VSTCAq
dGVtcERpcikKK3sKICAgICBzeXN0ZW0oImtpbGxhbGwgQWRBdHRyaWJ1dGlvbkRhZW1vbiAtOSIp
OwogCi0gICAgRVhQRUNUX1RSVUUoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6dGVtcERp
ci5wYXRoXSk7Ci0gICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDp0ZW1wRGlyIGVycm9y
OiZlcnJvcl07CisgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBmaWxlRXhpc3RzQXRQYXRoOnRlbXBEaXIucGF0aF0pOworICAgIE5TRXJyb3IgKmVycm9yID0g
bmlsOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJM
OnRlbXBEaXIgZXJyb3I6JmVycm9yXTsKICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiB9CiAKK1RF
U1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIERhZW1vbkJhc2ljRnVuY3Rpb25hbGl0eSkKK3sK
KyAgICBhdXRvIFt0ZW1wRGlyLCBjb25maWd1cmF0aW9uXSA9IHNldFVwRGFlbW9uKGFkb3B0TlMo
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSkuYXV0b3JlbGVhc2UoKSk7CisgICAgcnVuQmFz
aWNQQ01UZXN0KGNvbmZpZ3VyYXRpb24sIFtdKFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgSFRU
UFNlcnZlciYgc2VydmVyKSB7CisgICAgICAgIFt3ZWJWaWV3IF9hZGRFdmVudEF0dHJpYnV0aW9u
V2l0aFNvdXJjZUlEOjQyIGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVVUkwoKSBzb3VyY2VEZXNjcmlw
dGlvbjpAInRlc3Qgc291cmNlIGRlc2NyaXB0aW9uIiBwdXJjaGFzZXI6QCJ0ZXN0IHB1cmNoYXNl
ciIgcmVwb3J0RW5kcG9pbnQ6c2VydmVyLnJlcXVlc3QoKS5VUkwgb3B0aW9uYWxOb25jZTpuaWwg
YXBwbGljYXRpb25CdW5kbGVJRDpAInRlc3QuYnVuZGxlLmlkIl07CisgICAgfSk7CisgICAgY2xl
YW5VcERhZW1vbih0ZW1wRGlyKTsKK30KKworc3RhdGljIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVD
bGllbnQoV0tXZWJWaWV3ICp3ZWJWaWV3LCBWZWN0b3I8U3RyaW5nPiYgY29uc29sZU1lc3NhZ2Vz
KQoreworICAgIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjAgaW5qZWN0ZWRCdW5kbGVDbGll
bnQgPSB7CisgICAgICAgIHsgMCwgJmNvbnNvbGVNZXNzYWdlcyB9LAorICAgICAgICBbXSAoV0tQ
YWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2UsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pIHsKKyAgICAgICAgICAgIGF1dG8mIGNvbnNvbGVNZXNzYWdlcyA9
ICpyZWludGVycHJldF9jYXN0PFZlY3RvcjxTdHJpbmc+Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpOworICAgICAgICAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJDb25zb2xlTWVzc2FnZSIpKQorICAgICAgICAgICAgICAgIGNvbnNvbGVN
ZXNzYWdlcy5hcHBlbmQoVXRpbDo6dG9OUygoV0tTdHJpbmdSZWYpbWVzc2FnZSkpOworICAgICAg
ICB9LAorICAgICAgICBudWxscHRyLAorICAgIH07CisgICAgV0tQYWdlU2V0UGFnZUluamVjdGVk
QnVuZGxlQ2xpZW50KHdlYlZpZXcuX3BhZ2VGb3JUZXN0aW5nLCAmaW5qZWN0ZWRCdW5kbGVDbGll
bnQuYmFzZSk7Cit9OworCitzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdX
aXRoT3Blbkluc3BlY3RvcihXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uKQor
eworICAgIGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMuX2RldmVsb3BlckV4dHJhc0VuYWJsZWQg
PSBZRVM7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdCBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsK
KyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFydCBwcm9jZXNz
ZXMiXTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gc2hvd107CisgICAgW3dlYlZpZXcgX3Rl
c3Rfd2FpdEZvckluc3BlY3RvclRvU2hvd107CisgICAgcmV0dXJuIHdlYlZpZXc7Cit9CisKK1RF
U1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIERhZW1vbkRlYnVnTW9kZSkKK3sKKyAgICBhdXRv
IFt0ZW1wRGlyLCBjb25maWd1cmF0aW9uXSA9IHNldFVwRGFlbW9uKFtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIkJ1bmRs
ZVBhZ2VDb25zb2xlTWVzc2FnZSJdKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBjb25zb2xlTWVzc2Fn
ZXM7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld1dpdGhPcGVuSW5zcGVjdG9yKGNvbmZpZ3Vy
YXRpb24pOworICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KHdlYlZpZXcuZ2V0KCksIGNvbnNv
bGVNZXNzYWdlcyk7CisgICAgW2NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkRm9yVGVzdGluZzpZRVNdOworICAg
IHdoaWxlIChjb25zb2xlTWVzc2FnZXMuaXNFbXB0eSgpKQorICAgICAgICBVdGlsOjpzcGluUnVu
TG9vcCgpOworICAgIEVYUEVDVF9XS19TVFJFUShjb25zb2xlTWVzc2FnZXNbMF0sICJbUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudF0gVHVybmVkIERlYnVnIE1vZGUgb24uIik7CisgICAgW2NvbmZp
Z3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1
Z01vZGVFbmFibGVkRm9yVGVzdGluZzpOT107CisgICAgd2hpbGUgKGNvbnNvbGVNZXNzYWdlcy5z
aXplKCkgPCAyKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIEVYUEVDVF9XS19T
VFJFUShjb25zb2xlTWVzc2FnZXNbMV0sICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHVy
bmVkIERlYnVnIE1vZGUgb2ZmLiIpOworfQorCitURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50
LCBOZXR3b3JrUHJvY2Vzc0RlYnVnTW9kZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5D
bGFzc05hbWU6QCJCdW5kbGVQYWdlQ29uc29sZU1lc3NhZ2UiXTsKKyAgICBWZWN0b3I8U3RyaW5n
PiBjb25zb2xlTWVzc2FnZXM7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld1dpdGhPcGVuSW5z
cGVjdG9yKGNvbmZpZ3VyYXRpb24pOworICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KHdlYlZp
ZXcuZ2V0KCksIGNvbnNvbGVNZXNzYWdlcyk7CisgICAgW2NvbmZpZ3VyYXRpb24ud2Vic2l0ZURh
dGFTdG9yZSBfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkRm9yVGVz
dGluZzpZRVNdOworICAgIHdoaWxlIChjb25zb2xlTWVzc2FnZXMuaXNFbXB0eSgpKQorICAgICAg
ICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIEVYUEVDVF9XS19TVFJFUShjb25zb2xlTWVzc2Fn
ZXNbMF0sICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHVybmVkIERlYnVnIE1vZGUgb24u
Iik7CisgICAgW2NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfc2V0UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREZWJ1Z01vZGVFbmFibGVkRm9yVGVzdGluZzpOT107CisgICAgd2hpbGUgKGNv
bnNvbGVNZXNzYWdlcy5zaXplKCkgPCAyKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOwor
ICAgIEVYUEVDVF9XS19TVFJFUShjb25zb2xlTWVzc2FnZXNbMV0sICJbUHJpdmF0ZSBDbGljayBN
ZWFzdXJlbWVudF0gVHVybmVkIERlYnVnIE1vZGUgb2ZmLiIpOworfQorCiAjZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQogCiAjaWYgSEFWRShVSV9FVkVOVF9BVFRSSUJVVElPTikKIAotVEVTVChFdmVu
dEF0dHJpYnV0aW9uLCBCYXNpY1dpdGhJT1NTUEkpCitURVNUKFByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCBCYXNpY1dpdGhJT1NTUEkpCiB7Ci0gICAgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVz
dChuaWwsIFtdKFdLV2ViVmlldyAqd2ViVmlldywgY29uc3QgSFRUUFNlcnZlciYgc2VydmVyKSB7
CisgICAgcnVuQmFzaWNQQ01UZXN0KG5pbCwgW10oV0tXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBI
VFRQU2VydmVyJiBzZXJ2ZXIpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGlvbiA9IGFkb3B0TlMo
W1tNb2NrRXZlbnRBdHRyaWJ1dGlvbiBhbGxvY10gaW5pdFdpdGhSZXBvcnRFbmRwb2ludDpzZXJ2
ZXIucmVxdWVzdCgpLlVSTCBkZXN0aW5hdGlvblVSTDpleGFtcGxlVVJMKCldKTsKICAgICAgICAg
d2ViVmlldy5fdWlFdmVudEF0dHJpYnV0aW9uID0gKFVJRXZlbnRBdHRyaWJ1dGlvbiAqKWF0dHJp
YnV0aW9uLmdldCgpOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEod2ViVmlldy5fdWlFdmVudEF0
dHJpYnV0aW9uLnNvdXJjZURlc2NyaXB0aW9uLCAidGVzdCBzb3VyY2UgZGVzY3JpcHRpb24iKTsK
QEAgLTUwMCw5ICs1ODAsOSBAQCBURVNUKEV2ZW50QXR0cmlidXRpb24sIEJhc2ljV2l0aElPU1NQ
SSkKICAgICB9KTsKIH0KIAotVEVTVChFdmVudEF0dHJpYnV0aW9uLCBCYXNpY1dpdGhFcGhlbWVy
YWxJT1NTUEkpCitURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBCYXNpY1dpdGhFcGhlbWVy
YWxJT1NTUEkpCiB7Ci0gICAgcnVuQmFzaWNFdmVudEF0dHJpYnV0aW9uVGVzdChuaWwsIFtdKFdL
V2ViVmlldyAqd2ViVmlldywgY29uc3QgSFRUUFNlcnZlciYgc2VydmVyKSB7CisgICAgcnVuQmFz
aWNQQ01UZXN0KG5pbCwgW10oV0tXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBIVFRQU2VydmVyJiBz
ZXJ2ZXIpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGlvbiA9IGFkb3B0TlMoW1tNb2NrRXZlbnRB
dHRyaWJ1dGlvbiBhbGxvY10gaW5pdFdpdGhSZXBvcnRFbmRwb2ludDpzZXJ2ZXIucmVxdWVzdCgp
LlVSTCBkZXN0aW5hdGlvblVSTDpleGFtcGxlVVJMKCldKTsKICAgICAgICAgd2ViVmlldy5fZXBo
ZW1lcmFsVUlFdmVudEF0dHJpYnV0aW9uID0gKFVJRXZlbnRBdHRyaWJ1dGlvbiAqKWF0dHJpYnV0
aW9uLmdldCgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0VUlEZWxlZ2F0ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxl
Z2F0ZS5oCmluZGV4IDI2YzE2YmRmNjZjYzU3OTM5MWZkYTI2MThhMzkxZDk2YTNlZjgyOWIuLjBl
OWRhNzZkMjlmYTEyYTM3YmVjMTJjZDYwMDA5ZjI2YTVkOTc2OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFVJRGVsZWdhdGUuaAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRlLmgKQEAgLTQwLDQgKzQwLDUgQEAKIAogQGludGVy
ZmFjZSBXS1dlYlZpZXcgKFRlc3RVSURlbGVnYXRlRXh0cmFzKQogLSAoTlNTdHJpbmcgKilfdGVz
dF93YWl0Rm9yQWxlcnQ7CistICh2b2lkKV90ZXN0X3dhaXRGb3JJbnNwZWN0b3JUb1Nob3c7CiBA
ZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RVSURlbGVnYXRl
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQppbmRleCA5
OTM4YzM2ZjAxOWU0NjYxZWZiYzg5YTNhZDdjY2Q4YTgyMTlkYjllLi45YzUyZmU2ZWE0Njc2ZmYz
OWYxZTliMWY4MWI1NjFkMjRmNWViZGU5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RVSURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFVJRGVsZWdhdGUubW0KQEAgLTMwLDcgKzMwLDkgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1A
aW1wbGVtZW50YXRpb24gVGVzdFVJRGVsZWdhdGUKK0BpbXBsZW1lbnRhdGlvbiBUZXN0VUlEZWxl
Z2F0ZSB7CisgICAgQk9PTCBfc2hvd2VkSW5zcGVjdG9yOworfQogCiAtIChXS1dlYlZpZXcgKil3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlv
bjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gZm9yTmF2aWdhdGlvbkFj
dGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB3aW5kb3dGZWF0dXJl
czooV0tXaW5kb3dGZWF0dXJlcyAqKXdpbmRvd0ZlYXR1cmVzCiB7CkBAIC04MSw2ICs4MywxNyBA
QAogICAgIHJldHVybiByZXN1bHQuYXV0b3JlbGVhc2UoKTsKIH0KIAorLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjooX1dLSW5zcGVj
dG9yICopaW5zcGVjdG9yCit7CisgICAgX3Nob3dlZEluc3BlY3RvciA9IFlFUzsKK30KKworLSAo
dm9pZCl3YWl0Rm9ySW5zcGVjdG9yVG9TaG93Cit7CisgICAgd2hpbGUgKCFfc2hvd2VkSW5zcGVj
dG9yKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOworfQorCiBA
ZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFRlc3RVSURlbGVnYXRlRXh0cmFzKQpA
QCAtOTUsNCArMTA4LDEzIEBACiAgICAgcmV0dXJuIGFsZXJ0OwogfQogCistICh2b2lkKV90ZXN0
X3dhaXRGb3JJbnNwZWN0b3JUb1Nob3cKK3sKKyAgICBFWFBFQ1RfRkFMU0Uoc2VsZi5VSURlbGVn
YXRlKTsKKyAgICBhdXRvIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0VUlEZWxlZ2F0ZSBuZXdd
KTsKKyAgICBzZWxmLlVJRGVsZWdhdGUgPSB1aURlbGVnYXRlLmdldCgpOworICAgIFt1aURlbGVn
YXRlIHdhaXRGb3JJbnNwZWN0b3JUb1Nob3ddOworICAgIHNlbGYuVUlEZWxlZ2F0ZSA9IG5pbDsK
K30KKwogQGVuZAo=
</data>
<flag name="review"
          id="463999"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>