<?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>232539</bug_id>
          
          <creation_ts>2021-10-30 21:20:28 -0700</creation_ts>
          <short_desc>webpushd: Add mock in-memory registration, and the WKWebsiteDataStore SPI to manage them</short_desc>
          <delta_ts>2021-11-01 12:32:22 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1810480</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-10-30 21:20:28 -0700</bug_when>
    <thetext>webpushd: Add mock in-memory registration, and the WKWebsiteDataStore SPI to manage them

Yay API tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810542</commentid>
    <comment_count>1</comment_count>
      <attachid>442950</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-10-31 20:30:42 -0700</bug_when>
    <thetext>Created attachment 442950
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810544</commentid>
    <comment_count>2</comment_count>
      <attachid>442951</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-10-31 21:09:12 -0700</bug_when>
    <thetext>Created attachment 442951
Patch for EWS v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810546</commentid>
    <comment_count>3</comment_count>
      <attachid>442952</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-10-31 21:32:47 -0700</bug_when>
    <thetext>Created attachment 442952
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810699</commentid>
    <comment_count>4</comment_count>
      <attachid>442995</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-01 11:09:41 -0700</bug_when>
    <thetext>Created attachment 442995
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810737</commentid>
    <comment_count>5</comment_count>
      <attachid>442995</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-11-01 12:12:08 -0700</bug_when>
    <thetext>Comment on attachment 442995
Patch v2

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

&gt; Source/WebKit/webpushd/WebPushDaemon.h:62
&gt; +    HashSet&lt;String&gt; m_inMemoryOriginStringsWithPermissionForTesting;

Why not make this a HashSet&lt;SecurityOriginData&gt;?  That would avoid a lot of conversion back and forth, and it would prevent us from wondering if the String was a valid origin string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810752</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-11-01 12:18:54 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; Comment on attachment 442995 [details]
&gt; Patch v2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=442995&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/webpushd/WebPushDaemon.h:62
&gt; &gt; +    HashSet&lt;String&gt; m_inMemoryOriginStringsWithPermissionForTesting;
&gt; 
&gt; Why not make this a HashSet&lt;SecurityOriginData&gt;?  That would avoid a lot of
&gt; conversion back and forth, and it would prevent us from wondering if the
&gt; String was a valid origin string.

Forward thinking to &quot;what do we want webpushd to have to link&quot;

Doing that makes it have to link WebCore.

(Happy to revisit that as a more general topic on Slack, figuring out the linking story for these daemons)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810762</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-01 12:31:52 -0700</bug_when>
    <thetext>Committed r285121 (243762@main): &lt;https://commits.webkit.org/243762@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442995.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1810763</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-01 12:32:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/84894042&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442950</attachid>
            <date>2021-10-31 20:30:42 -0700</date>
            <delta_ts>2021-10-31 21:09:12 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>32403</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggZDM4ZTlhNjBjOTliLi5lY2M2OGI0ZDJjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNTI3LDYgKzI1MjcsMjYgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3Qgc3RkOjpvcHQKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3Ry
YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFj
aykKK3sKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
IHsKKyAgICAgICAgc2Vzc2lvbi0+bm90aWZpY2F0aW9uTWFuYWdlcigpLmRlbGV0ZVB1c2hBbmRO
b3RpZmljYXRpb25SZWdpc3RyYXRpb24ob3JpZ2luLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYWxsYmFjaygiQ2Fubm90IGZpbmQgbmV0d29yayBz
ZXNzaW9uIik7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFu
ZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiYpPiYmIGNhbGxiYWNrKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkgeworICAgICAgICBzZXNzaW9uLT5ub3RpZmljYXRpb25NYW5hZ2VyKCku
Z2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoV1RGTW92ZShjYWxs
YmFjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FsbGJhY2soeyB9KTsKK30K
Kwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBxdW90YSwg
dWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50NjRfdD4pPiYmIGNhbGxiYWNrKQogewogICAg
IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVxdWVzdFN0b3JhZ2VTcGFjZSB7IHNlc3Npb25JRCwgb3Jp
Z2luLCBxdW90YSwgY3VycmVudFNpemUsIHNwYWNlUmVxdWlyZWQgfSwgV1RGTW92ZShjYWxsYmFj
ayksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CmluZGV4IGUwMmNiZGY3ODAzMS4uNTc3OTlhYzA0MzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC00MDAsNiArNDAwLDkgQEAgcHVibGlj
OgogICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBzdGQ6
Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mLCBVUkwmJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAjZW5kaWYKIAorICAgIHZvaWQgZGVsZXRlUHVzaEFuZE5vdGlmaWNh
dGlvblJlZ2lzdHJhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7Cisg
ICAgdm9pZCBnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3Jt
SW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGMwNjYxZWM1NzQ2YS4uMzJhYjM4NDBiNjZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIwOCw0ICsyMDgsNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IFByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6b3B0aW9u
YWw8SVBDOjpEYXRhUmVmZXJlbmNlPiBkYXRhLCBVUkwgcmVnaXN0cmF0aW9uVVJMKSAtPiAoYm9v
bCBkaWRTdWNjZWVkKSBBc3luYwogI2VuZGlmCisgICAgRGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlv
blJlZ2lzdHJhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luKSAtPiAoU3RyaW5nIGVycm9yTWVzc2FnZSkgQXN5bmMK
KyAgICBHZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiBvcmlnaW5zKSBBc3luYwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oCmluZGV4IGZlNGRiMDUwMzcwZi4uM2E4MmNmMzk0Mzg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xOTEsNiArMTkx
LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGF0dHJpYnV0ZWRCdW5kbGVJZGVudGlmaWVyRnJv
bVBhZ2VJZGVudGlmaWVyKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OwogCisgICAgTmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXImIG5vdGlmaWNhdGlvbk1hbmFnZXIoKSB7IHJldHVybiBt
X25vdGlmaWNhdGlvbk1hbmFnZXI7IH0KKwogcHJvdGVjdGVkOgogICAgIE5ldHdvcmtTZXNzaW9u
KE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5k
ZXggNWZlMTIxOWJkYzc1Li4yMjBjNjQzM2QxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRh
ZW1vbkRlY29kZXIuaCIKICNpbmNsdWRlICJEYWVtb25FbmNvZGVyLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDIsNiAr
NDMsMjggQEAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6Ok5ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2UKICAgICAgICAgbV9jb25uZWN0aW9uID0g
bWFrZVVuaXF1ZTxXZWJQdXNoRDo6Q29ubmVjdGlvbj4od2ViUHVzaE1hY2hTZXJ2aWNlTmFtZS51
dGY4KCksICp0aGlzKTsKIH0KIAordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6cmVx
dWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJp
bmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpSZXF1ZXN0
U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbj4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IG9yaWdpblN0cmluZyk7Cit9CisKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmRl
bGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1l
c3NhZ2VUeXBlOjpEZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uPihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgb3JpZ2luLnRvU3RyaW5nKCkpOworfQorCit2b2lkIE5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25Q
ZXJtaXNzaW9ucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9y
aWdpbkRhdGE+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4gcmVwbHlIYW5kbGVyID0gW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8U3RyaW5nPiBvcmlnaW5T
dHJpbmdzKSBtdXRhYmxlIHsKKyAgICAgICAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gb3Jp
Z2luczsKKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5TdHJpbmcgOiBvcmlnaW5TdHJpbmdzKQor
ICAgICAgICAgICAgb3JpZ2lucy5hcHBlbmQoU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKHsg
eyB9LCBvcmlnaW5TdHJpbmcgfSkpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KG9yaWdpbnMpKTsKKyAgICB9OworCisgICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6
Ok1lc3NhZ2VUeXBlOjpHZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9u
cz4oV1RGTW92ZShyZXBseUhhbmRsZXIpKTsKK30KKwogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlcjo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25EaXJlY3Rpb24sIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90KQogewogICAgIGlmICgh
bV9jb25uZWN0aW9uKQpAQCAtNzYsNyArOTksNiBAQCB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90KQogICAgICAgICByZXR1cm47
CiB9CiAKLQogdGVtcGxhdGU8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBl
bmFtZS4uLiBBcmdzPgogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2VuZE1lc3Nh
Z2UoQXJncyYmLi4uIGFyZ3MpIGNvbnN0CiB7CkBAIC05Myw2ICsxMTUsNyBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBSZXBseUNhbGxlcjw+IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAg
ICB9CiB9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxTdHJpbmc+IHsKICAgICBz
dGF0aWMgdm9pZCBjYWxsUmVwbHkoRGFlbW9uOjpEZWNvZGVyJiYgZGVjb2RlciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewpAQCAt
MTA0LDYgKzEyNywzOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxTdHJpbmc+IHsK
ICAgICB9CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxjb25zdCBTdHJpbmcm
PiB7CisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KERhZW1vbjo6RGVjb2RlciYmIGRlY29kZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOworICAgICAg
ICBkZWNvZGVyID4+IHN0cmluZzsKKyAgICAgICAgaWYgKCFzdHJpbmcpCisgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZSgqc3RyaW5nKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlD
YWxsZXI8Ym9vbD4geworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShEYWVtb246OkRlY29kZXIm
JiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBib29sZWFuOworICAgICAg
ICBkZWNvZGVyID4+IGJvb2xlYW47CisgICAgICAgIGlmICghYm9vbGVhbikKKyAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCpib29sZWFuKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxl
cjxWZWN0b3I8U3RyaW5nPiYmPiB7CisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KERhZW1vbjo6
RGVjb2RlciYmIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxTdHJpbmc+PiBzdHJpbmdzOworICAgICAgICBkZWNvZGVyID4+IHN0cmluZ3M7CisgICAg
ICAgIGlmICghc3RyaW5ncykKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7
IH0pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKCpzdHJpbmdzKSk7CisgICAg
fQorfTsKKwogdGVtcGxhdGU8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBl
bmFtZS4uLiBBcmdzLCB0eXBlbmFtZS4uLiBSZXBseUFyZ3M+CiB2b2lkIE5ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZVdpdGhSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlcGx5QXJncy4uLik+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFyZ3MmJi4uLiBhcmdzKSBjb25z
dAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCA2
ZmE4NzU2ODRjNzguLjk1NDkwMjYzNGMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3Rp
ZmljYXRpb25NYW5hZ2VyLmgKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9O
b3RpZmljYXRpb25EaXJlY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKK30KKwog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJQdXNoRCB7CkBAIC00Niw5ICs1MCwx
MyBAQCBjbGFzcyBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBOb3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIgewogcHVibGljOgogICAgIE5ldHdvcmtTZXNzaW9uJiBu
ZXR3b3JrU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya1Nlc3Npb247IH0KIAorICAg
IHZvaWQgZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmKTsKKyAgICB2b2lkIGdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1p
c3Npb25zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YT4mKT4mJik7CisKIHByaXZhdGU6CiAgICAgTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmIHdlYlB1c2hNYWNoU2Vydmlj
ZU5hbWUpOwogCisgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihj
b25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JikgZmluYWw7CiAgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcm
IHRhZywgY29uc3QgU3RyaW5nJiBsYW5nLCBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24s
IGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCkgZmlu
YWw7CiAgICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQp
IGZpbmFsOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElTZWN1cml0eU9yaWdpbi5oCmluZGV4IGYxMzkzMDdlYjllNy4uM2FlZGQ0YzIyN2E1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaApAQCAtNDgsNiAr
NDgsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWN1cml0eU9y
aWdpbihzZWN1cml0eU9yaWdpbi5kYXRhKCkuaXNvbGF0ZWRDb3B5KCkpKTsKICAgICB9CiAKKyAg
ICBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbkRhdGEuaXNvbGF0ZWRD
b3B5KCkpKTsKKyAgICB9CisKICAgICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0eU9yaWdpbjsgfQogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXgg
Yjc4OGZkZGIxZGIxLi5lMTA5MjBlOTBkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2Vy
TWVzc2FnZUhhbmRsZXIuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGlj
OgogICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcigpID0gZGVm
YXVsdDsKIAorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlz
c2lvbihjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3Qg
U3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkws
IGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBXZWJDb3JlOjpOb3Rp
ZmljYXRpb25EaXJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCB1aW50NjRfdCBu
b3RpZmljYXRpb25JRCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24o
dWludDY0X3Qgbm90aWZpY2F0aW9uSUQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3Rp
ZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdl
cy5pbgppbmRleCBkZDc1ZTMzOGI2ZTUuLmQ1ODkwZWRjM2Q1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4KQEAgLTIxLDYg
KzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VIYW5kbGVyIE5vdFJlZkNvdW50ZWQgeworICAgIFJlcXVlc3RTeXN0ZW1Ob3RpZmlj
YXRpb25QZXJtaXNzaW9uKFN0cmluZyBvcmlnaW5JZGVudGlmaWVyKSAtPiAoYm9vbCBhbGxvd2Vk
KSBBc3luYwogICAgIFNob3dOb3RpZmljYXRpb24oU3RyaW5nIHRpdGxlLCBTdHJpbmcgYm9keSwg
U3RyaW5nIGljb25VUkwsIFN0cmluZyB0YWcsIFN0cmluZyBsYW5ndWFnZSwgZW51bTp1aW50OF90
IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFN0cmluZyBvcmlnaW5J
ZGVudGlmaWVyLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCkKICAgICBDYW5jZWxOb3RpZmljYXRp
b24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiAgICAgQ2xlYXJOb3RpZmljYXRpb25zKFZlY3Rv
cjx1aW50NjRfdD4gbm90aWZpY2F0aW9uSURzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHVzaERhZW1vbkNvbnN0YW50cy5oCmluZGV4IGRkNzBmZDM0ZjJkNC4uZDUyNzI2MmRiYjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oCkBAIC0z
NywxMiArMzcsMTggQEAgY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRGVidWdNZXNzYWdl
TGV2ZWxLZXkgeyAiZGVidWcgbWVzc2FnZSBsZXZlbCIgfTsKIGNvbnN0ZXhwciBjb25zdCBjaGFy
KiBwcm90b2NvbE1lc3NhZ2VUeXBlS2V5IHsgIm1lc3NhZ2UgdHlwZSIgfTsKIGVudW0gY2xhc3Mg
TWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBFY2hvVHdpY2UgPSAxLAorICAgIFJlcXVlc3RT
eXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uLAorICAgIERlbGV0ZVB1c2hBbmROb3RpZmljYXRp
b25SZWdpc3RyYXRpb24sCisgICAgR2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVy
bWlzc2lvbnMsCiB9OwogCiBpbmxpbmUgYm9vbCBtZXNzYWdlVHlwZVNlbmRzUmVwbHkoTWVzc2Fn
ZVR5cGUgbWVzc2FnZVR5cGUpCiB7CiAgICAgc3dpdGNoIChtZXNzYWdlVHlwZSkgewogICAgIGNh
c2UgTWVzc2FnZVR5cGU6OkVjaG9Ud2ljZToKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpHZXRPcmln
aW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9uczoKKyAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpEZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uOgorICAgIGNhc2UgTWVz
c2FnZVR5cGU6OlJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uOgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQppbmRleCA5YmE2OWY3ZDA2YTUuLjI4MTk4ZDNkNzhiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0z
OSw2ICszOSw4IEBACiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFGZXRjaE9wdGlv
bi5oIgorI2ltcG9ydCAiV0tFcnJvci5oIgorI2ltcG9ydCAiV0tTZWN1cml0eU9yaWdpbkludGVy
bmFsLmgiCiAjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVy
bmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFs
LmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaCIKQEAgLTc3MCw0ICs3
NzIsMjkgQEAgc3RhdGljIFZlY3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiB0b1dlYnNp
dGVEYXRhUmVjb3JkcyhOU0FycmF5ICpkYXRhUmVjb3IKICNlbmRpZgogfQogCistKHZvaWQpX2Rl
bGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246KFdLU2VjdXJpdHlPcmlnaW4gKilz
ZWN1cml0eU9yaWdpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICopKWNvbXBs
ZXRpb25IYW5kbGVyCit7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3b3Jr
UHJvY2VzcygpLmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oX3dlYnNpdGVE
YXRhU3RvcmUtPnNlc3Npb25JRCgpLCBzZWN1cml0eU9yaWdpbi0+X3NlY3VyaXR5T3JpZ2luLT5z
ZWN1cml0eU9yaWdpbigpLCBbY29tcGxldGlvbkhhbmRsZXJDb3B5XShjb25zdCBTdHJpbmcmIGVy
cm9yU3RyaW5nKSB7CisgICAgICAgIGlmIChlcnJvclN0cmluZy5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weShuaWwpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weShbTlNFcnJvciBlcnJvcldp
dGhEb21haW46QCJXS1dlYlNpdGVEYXRhU3RvcmUiIGNvZGU6V0tFcnJvclVua25vd24gdXNlcklu
Zm86QHsgTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTooTlNTdHJpbmcgKillcnJvclN0cmluZyB9
XSk7CisgICAgfSk7Cit9CisKKy0odm9pZClfZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0
aW9uUGVybWlzc2lvbnM6KHZvaWQoXikoTlNTZXQ8V0tTZWN1cml0eU9yaWdpbiAqPiAqKSljb21w
bGV0aW9uSGFuZGxlcgoreworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+bmV0d29y
a1Byb2Nlc3MoKS5nZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhf
d2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksIFtjb21wbGV0aW9uSGFuZGxlckNvcHldKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zKSB7CisgICAg
ICAgIGF1dG8gc2V0ID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdFdpdGhDYXBh
Y2l0eTpvcmlnaW5zLnNpemUoKV0pOworICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdp
bnMpIHsKKyAgICAgICAgICAgIGF1dG8gYXBpT3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKG9yaWdpbik7CisgICAgICAgICAgICBbc2V0IGFkZE9iamVjdDp3cmFwcGVyKGFwaU9y
aWdpbi5nZXQoKSldOworICAgICAgICB9CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weShz
ZXQuZ2V0KCkpOworICAgIH0pOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApp
bmRleCA4ZmI0ODUxZWIwMzguLmExMmM2ZWMyMGE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0
ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFz
cyBXS1NlY3VyaXR5T3JpZ2luOwogQGNsYXNzIFdLV2ViVmlldzsKIEBjbGFzcyBfV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eTsKIEBjbGFzcyBfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjsKQEAgLTEwOCw3ICsxMDksOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50
ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogCiAtKGJvb2wpX2hhc1Nl
cnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtKHZvaWQpX3Byb2Nlc3NQdXNo
TWVzc2FnZTooTlNEYXRhKilkYXRhIHJlZ2lzdHJhdGlvbjooTlNVUkwgKilyZWdpc3RyYXRpb24g
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoYm9vbCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLQorLSh2b2lk
KV9kZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uOihXS1NlY3VyaXR5T3JpZ2lu
ICopc2VjdXJpdHlPcmlnaW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqKSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworLSh2b2lkKV9nZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uczoodm9pZCheKShOU1NldDxXS1NlY3VyaXR5T3JpZ2luICo+ICopKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXgg
YzU1M2Y5Y2E3MTI5Li41ODFhNWQ5YTUxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY1Nyw2ICsx
NjU3LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpvcHRpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVB1c2hBbmRO
b3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpEZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uIHsg
c2Vzc2lvbklELCBvcmlnaW4gfSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmIGNhbGxiYWNrKQoreworICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldE9yaWdpbnNXaXRoUHVz
aEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zIHsgc2Vzc2lvbklEIH0sIFdURk1vdmUoY2FsbGJh
Y2spKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNL
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCmluZGV4IGE0YjU0NTYwOTA0ZS4uOThkOWQ4MGMyNGRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApA
QCAtMjc1LDYgKzI3NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHByb2Nlc3NQdXNoTWVzc2FnZShQ
QUw6OlNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxTcGFuPGNvbnN0IHVpbnQ4X3Q+PiwgY29uc3Qg
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc1Byb2Nlc3NlZCk+JiYpOwogI2Vu
ZGlmCiAKKyAgICB2b2lkIGRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOworICAgIHZvaWQgZ2V0T3JpZ2luc1dp
dGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4m
KT4mJik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTmV0d29ya1Byb2Nlc3NQcm94eSgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5j
cHAKaW5kZXggYmM1NDA4YzY1MTMxLi5kYmZlZmIwMTU5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKQEAgLTM1LDYgKzM1LDEx
IEBAIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6V2ViTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyKFdlYlBhCiB7CiB9CiAKK3ZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpyZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lv
bihjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKQoreworICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJp
bmcmIHRhZywgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGly
ZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IG5v
dGlmaWNhdGlvbklEKQogewogICAgIG1fd2ViUGFnZVByb3h5LnNob3dOb3RpZmljYXRpb24odGl0
bGUsIGJvZHksIGljb25VUkwsIHRhZywgbGFuZ3VhZ2UsIGRpcmVjdGlvbiwgb3JpZ2luU3RyaW5n
LCBub3RpZmljYXRpb25JRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
TWVzc2FnZUhhbmRsZXIuaAppbmRleCA2ZjBmZDY4NTU5OGUuLjNlMGEzYzg0YWY1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oCkBAIC0z
Niw2ICszNiw3IEBAIGNsYXNzIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlciA6
IHB1YmxpYyBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcihXZWJQYWdlUHJveHkmKTsK
IAorICAgIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBz
aG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwg
Y29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBs
YW5ndWFnZSwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9y
aWdpblN0cmluZywgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwogICAgIHZvaWQgY2Fu
Y2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKICAgICB2b2lk
IGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25J
RHMpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5jcHAKaW5kZXggNWM0OTFjYTI1YjljLi43ZDViOGNlNGE5MWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcApA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgogCisjaW5jbHVkZSAiTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
TWVzc2FnZXMuaCIKQEAgLTgwLDExICs4MSwyMyBAQCB2b2lkIE5vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRSZXF1ZXN0KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YQog
ICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RO
b3RpZmljYXRpb25QZXJtaXNzaW9uKHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5nKCkpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBlcm1pc3Npb25IYW5kbGVyID0gV1RGTW92
ZShwZXJtaXNzaW9uSGFuZGxlciksIHNlY3VyaXR5T3JpZ2luXShib29sIGFsbG93ZWQpIG11dGFi
bGUgewotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXI+KCktPmRpZFVwZGF0ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKHNlY3VyaXR5
T3JpZ2luLnRvU3RyaW5nKCksIGFsbG93ZWQpOworICAgIG1fcGFnZS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9u
KHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5nKCkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7
ICp0aGlzIH0sIHNlY3VyaXR5T3JpZ2luLCBwZXJtaXNzaW9uSGFuZGxlciA9IFdURk1vdmUocGVy
bWlzc2lvbkhhbmRsZXIpXShib29sIGFsbG93ZWQpIG11dGFibGUgewogCi0gICAgICAgIGF1dG8g
cGVybWlzc2lvbkhhbmRsZXJzID0gbV9yZXF1ZXN0c1Blck9yaWdpbi50YWtlKHNlY3VyaXR5T3Jp
Z2luKTsKLSAgICAgICAgY2FsbFBlcm1pc3Npb25IYW5kbGVyc1dpdGgocGVybWlzc2lvbkhhbmRs
ZXJzLCBhbGxvd2VkID8gUGVybWlzc2lvbjo6R3JhbnRlZCA6IFBlcm1pc3Npb246OkRlbmllZCk7
CisgICAgICAgIGF1dG8gaW5uZXJQZXJtaXNzaW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgc2VjdXJpdHlPcmlnaW4sIHBlcm1pc3Npb25IYW5kbGVyID0g
V1RGTW92ZShwZXJtaXNzaW9uSGFuZGxlcildIChib29sIGFsbG93ZWQpIG11dGFibGV7CisgICAg
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXI+KCktPmRpZFVwZGF0ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKHNlY3VyaXR5T3JpZ2lu
LnRvU3RyaW5nKCksIGFsbG93ZWQpOworCisgICAgICAgICAgICBhdXRvIHBlcm1pc3Npb25IYW5k
bGVycyA9IG1fcmVxdWVzdHNQZXJPcmlnaW4udGFrZShzZWN1cml0eU9yaWdpbik7CisgICAgICAg
ICAgICBjYWxsUGVybWlzc2lvbkhhbmRsZXJzV2l0aChwZXJtaXNzaW9uSGFuZGxlcnMsIGFsbG93
ZWQgPyBQZXJtaXNzaW9uOjpHcmFudGVkIDogUGVybWlzc2lvbjo6RGVuaWVkKTsKKyAgICAgICAg
fTsKKworI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQorICAgICAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5idWlsdEluTm90aWZpY2F0aW9u
c0VuYWJsZWQoKSAmJiBhbGxvd2VkKSB7CisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6
OlJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKHNlY3VyaXR5T3JpZ2luLnRvU3Ry
aW5nKCkpLCBXVEZNb3ZlKGlubmVyUGVybWlzc2lvbkhhbmRsZXIpLCBtX3BhZ2UtPnNlc3Npb25J
RCgpLnRvVUludDY0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZWxzZQor
ICAgICAgICBpbm5lclBlcm1pc3Npb25IYW5kbGVyKGFsbG93ZWQpOworI2VuZGlmCiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5o
IGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKaW5kZXggYTk0ZWRkNGUz
MjlmLi4wMDA1ZmFlOGQ4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2Vi
UHVzaERhZW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5o
CkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CiAjaW5jbHVk
ZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CkBAIC00OCwxMiArNDksMTcgQEAgcHVibGljOgog
CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgZWNob1R3aWNlKGNvbnN0IFN0cmlu
ZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgcmVwbHlTZW5kZXIp
OworICAgIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiByZXBseVNlbmRlcik7CisgICAg
dm9pZCBnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+JiYgcmVwbHlTZW5kZXIpOwor
ICAgIHZvaWQgZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihjb25zdCBTdHJp
bmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4m
JiByZXBseVNlbmRlcik7CiAKIHByaXZhdGU6CiAgICAgRGFlbW9uKCkgPSBkZWZhdWx0OwogCiAg
ICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4gY3JlYXRlUmVwbHlT
ZW5kZXIoTWVzc2FnZVR5cGUsIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4mJiByZXF1ZXN0KTsK
ICAgICB2b2lkIGRlY29kZUFuZEhhbmRsZU1lc3NhZ2UoTWVzc2FnZVR5cGUsIFNwYW48Y29uc3Qg
dWludDhfdD4gZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1l
c3NhZ2UmJik+JiYpOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1faW5NZW1vcnlPcmlnaW5TdHJp
bmdzV2l0aFBlcm1pc3Npb25Gb3JUZXN0aW5nOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViUHVz
aEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBi
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQppbmRleCA1NmEwNzBjYjFk
NjUuLmZjODI2ODEzNjkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQ
dXNoRGFlbW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5t
bQpAQCAtNTMsNiArNTMsMjEgQEAgQVJHVU1FTlRTKFN0cmluZykKIFJFUExZKFN0cmluZykKIEVO
RAogCitGVU5DVElPTihnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9u
cykKK0FSR1VNRU5UUygpCitSRVBMWShjb25zdCBWZWN0b3I8U3RyaW5nPiYpCitFTkQKKworRlVO
Q1RJT04oZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbikKK0FSR1VNRU5UUyhT
dHJpbmcpCitSRVBMWShTdHJpbmcpCitFTkQKKworRlVOQ1RJT04ocmVxdWVzdFN5c3RlbU5vdGlm
aWNhdGlvblBlcm1pc3Npb24pCitBUkdVTUVOVFMoU3RyaW5nKQorUkVQTFkoYm9vbCkKK0VORAor
CiAjdW5kZWYgRlVOQ1RJT04KICN1bmRlZiBBUkdVTUVOVFMKICN1bmRlZiBSRVBMWQpAQCAtNjUs
NiArODAsMjcgQEAgV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGVjaG9Ud2ljZTo6ZW5jb2RlUmVw
bHkoU3RyaW5nIHJlcGx5KQogICAgIHJldHVybiBlbmNvZGVyLnRha2VCdWZmZXIoKTsKIH0KIAor
V2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlv
blBlcm1pc3Npb25zOjplbmNvZGVSZXBseShjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVwbHkpCit7
CisgICAgV2ViS2l0OjpEYWVtb246OkVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8IHJl
cGx5OworICAgIHJldHVybiBlbmNvZGVyLnRha2VCdWZmZXIoKTsKK30KKworV2ViUHVzaEQ6OkVu
Y29kZWRNZXNzYWdlIGRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246OmVuY29k
ZVJlcGx5KFN0cmluZyByZXBseSkKK3sKKyAgICBXZWJLaXQ6OkRhZW1vbjo6RW5jb2RlciBlbmNv
ZGVyOworICAgIGVuY29kZXIgPDwgcmVwbHk7CisgICAgcmV0dXJuIGVuY29kZXIudGFrZUJ1ZmZl
cigpOworfQorCitXZWJQdXNoRDo6RW5jb2RlZE1lc3NhZ2UgcmVxdWVzdFN5c3RlbU5vdGlmaWNh
dGlvblBlcm1pc3Npb246OmVuY29kZVJlcGx5KGJvb2wgcmVwbHkpCit7CisgICAgV2ViS2l0OjpE
YWVtb246OkVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8IHJlcGx5OworICAgIHJldHVy
biBlbmNvZGVyLnRha2VCdWZmZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgTWVzc2FnZUluZm8K
IAogdGVtcGxhdGU8dHlwZW5hbWUgSW5mbz4KQEAgLTE0MSw2ICsxNzcsMTUgQEAgdm9pZCBEYWVt
b246OmRlY29kZUFuZEhhbmRsZU1lc3NhZ2UoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFNwYW48
Y29uc3QgdWludDhfdD4KICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpFY2hvVHdpY2U6CiAgICAgICAg
IGhhbmRsZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6ZWNob1R3aWNlPihl
bmNvZGVkTWVzc2FnZSwgV1RGTW92ZShyZXBseVNlbmRlcikpOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpHZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJt
aXNzaW9uczoKKyAgICAgICAgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJ
bmZvOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucz4oZW5jb2Rl
ZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBNZXNzYWdlVHlwZTo6RGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbjoKKyAg
ICAgICAgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjpkZWxldGVQ
dXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uPihlbmNvZGVkTWVzc2FnZSwgV1RGTW92ZShy
ZXBseVNlbmRlcikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpSZXF1
ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbjoKKyAgICAgICAgaGFuZGxlV2ViUHVzaERN
ZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjpyZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVy
bWlzc2lvbj4oZW5jb2RlZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgfQogfQogCkBAIC0xNDksNCArMTk0LDI5IEBAIHZvaWQgRGFlbW9uOjplY2hv
VHdpY2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluCiAgICAgcmVwbHlTZW5kZXIobWFrZVN0cmluZyhtZXNzYWdlLCBtZXNzYWdlKSk7CiB9
CiAKK3ZvaWQgRGFlbW9uOjpyZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25z
dCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBy
ZXBseVNlbmRlcikKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBmb3IgYW4gQVBJIHRlc3Rpbmcg
Y2hlY2twb2ludAorICAgIC8vIE5leHQgc3RlcCBpcyBhY3R1YWxseSBwZXJmb3JtIGEgcGVyc2lz
dGVudCBwZXJtaXNzaW9ucyByZXF1ZXN0IG9uIGEgcGVyLXBsYXRmb3JtIGJhc2lzCisgICAgbV9p
bk1lbW9yeU9yaWdpblN0cmluZ3NXaXRoUGVybWlzc2lvbkZvclRlc3RpbmcuYWRkKG9yaWdpblN0
cmluZyk7CisgICAgcmVwbHlTZW5kZXIodHJ1ZSk7Cit9CisKK3ZvaWQgRGFlbW9uOjpnZXRPcmln
aW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+JiYgcmVwbHlTZW5kZXIpCit7CisgICAgLy8gRklY
TUU6IFRoaXMgaXMgZm9yIGFuIEFQSSB0ZXN0aW5nIGNoZWNrcG9pbnQKKyAgICAvLyBOZXh0IHN0
ZXAgaXMgYWN0dWFsbHkgZ2F0aGVyIHBlcnNpc3RlbnQgcGVybWlzc2lvbnMgZnJvbSB0aGUgc3lz
dGVtIG9uIGEgcGVyLXBsYXRmb3JtIGJhc2lzCisgICAgcmVwbHlTZW5kZXIoY29weVRvVmVjdG9y
KG1faW5NZW1vcnlPcmlnaW5TdHJpbmdzV2l0aFBlcm1pc3Npb25Gb3JUZXN0aW5nKSk7Cit9CisK
K3ZvaWQgRGFlbW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKGNvbnN0
IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmIHJlcGx5U2VuZGVyKQoreworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGZvciBhbiBBUEkg
dGVzdGluZyBjaGVja3BvaW50CisgICAgLy8gTmV4dCBzdGVwIGlzIGFjdHVhbGx5IGRlbGV0ZSBh
bnkgcGVyc2lzdGVudCBwZXJtaXNzaW9ucyBvbiBhIHBlci1wbGF0Zm9ybSBiYXNpcworICAgIGlm
IChtX2luTWVtb3J5T3JpZ2luU3RyaW5nc1dpdGhQZXJtaXNzaW9uRm9yVGVzdGluZy5yZW1vdmUo
b3JpZ2luU3RyaW5nKSkKKyAgICAgICAgcmVwbHlTZW5kZXIoIiIpOworICAgIGVsc2UKKyAgICAg
ICAgcmVwbHlTZW5kZXIobWFrZVN0cmluZygiT3JpZ2luICIsIG9yaWdpblN0cmluZywgIiBub3Qg
cmVnaXN0ZXJlZCBmb3IgcHVzaCBvciBub3RpZmljYXRpb25zIikpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCmluZGV4IDg2Mzc1ZTQxZGEzMC4uNzhmMWVlNjliYmE4
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1
c2hEYWVtb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tCkBAIC0yNiw2ICsyNiwyOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAK
ICNpbXBvcnQgIkRhZW1vblRlc3RVdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RVUkxTY2hlbWVI
YW5kbGVyLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tV
SURlbGVnYXRlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0V4cGVyaW1lbnRhbEZlYXR1
cmUuaD4KKworc3RhdGljIGJvb2wgYWxlcnRSZWNlaXZlZCA9IGZhbHNlOworQGludGVyZmFjZSBO
b3RpZmljYXRpb25QZXJtaXNzaW9uRGVsZWdhdGUgOiBOU09iamVjdDxXS1VJRGVsZWdhdGVQcml2
YXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlbGVn
YXRlCisKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5vdGlm
aWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNl
Y3VyaXR5T3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5k
bGVyCit7CisgICAgZGVjaXNpb25IYW5kbGVyKHRydWUpOworfQorCistICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZToo
TlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7Cisg
ICAgYWxlcnRSZWNlaXZlZCA9IHRydWU7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKwor
QGVuZAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKQEAgLTE0Nyw2ICsxNzAsNzUgQEAg
VEVTVChXZWJQdXNoRCwgQmFzaWNDb21tdW5pY2F0aW9uKQogICAgIGNsZWFuVXBUZXN0V2ViUHVz
aEQodGVtcERpcik7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIldFQlBV
U0hSRVNPVVJDRSgKKzxzY3JpcHQ+CisJTm90aWZpY2F0aW9uLnJlcXVlc3RQZXJtaXNzaW9uKCku
dGhlbigoKSA9PiB7IGFsZXJ0KCJkb25lIikgfSkKKzwvc2NyaXB0PgorKVdFQlBVU0hSRVNPVVJD
RSI7CisKK1RFU1QoV2ViUHVzaEQsIFBlcm1pc3Npb25NYW5hZ2VtZW50KQoreworICAgIE5TVVJM
ICp0ZW1wRGlyZWN0b3J5ID0gc2V0VXBUZXN0V2ViUHVzaEQoKTsKKworICAgIGF1dG8gZGF0YVN0
b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIG5ld10pOworICAgIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkud2ViUHVzaE1hY2hT
ZXJ2aWNlTmFtZSA9IEAib3JnLndlYmtpdC53ZWJwdXNodGVzdGRhZW1vbi5zZXJ2aWNlIjsKKyAg
ICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9p
bml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworCisg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUg
PSBkYXRhU3RvcmUuZ2V0KCk7CisgICAgZm9yIChfV0tFeHBlcmltZW50YWxGZWF0dXJlICpmZWF0
dXJlIGluIFtXS1ByZWZlcmVuY2VzIF9leHBlcmltZW50YWxGZWF0dXJlc10pIHsKKyAgICAgICAg
aWYgKFtmZWF0dXJlLmtleSBpc0VxdWFsVG9TdHJpbmc6QCJCdWlsdEluTm90aWZpY2F0aW9uc0Vu
YWJsZWQiXSkKKyAgICAgICAgICAgIFtbY29uZmlndXJhdGlvbiBwcmVmZXJlbmNlc10gX3NldEVu
YWJsZWQ6WUVTIGZvckZlYXR1cmU6ZmVhdHVyZV07CisgICAgfQorCisgICAgYXV0byBoYW5kbGVy
ID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVt
ZTpAInRlc3RpbmciXTsKKworICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRs
ZXI6XihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CisgICAgICAgIGF1
dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6
dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVu
Z3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJl
c3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05T
RGF0YSBkYXRhV2l0aEJ5dGVzOm1haW5CeXRlcyBsZW5ndGg6c3RybGVuKG1haW5CeXRlcyldXTsK
KyAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICB9XTsKKworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
IGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGUu
Z2V0KCldOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Rpbmc6Ly9tYWluL2luZGV4Lmh0bWwi
XV1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmYWxlcnRSZWNlaXZlZCk7CisKKyAg
ICBzdGF0aWMgYm9vbCBvcmlnaW5PcGVyYXRpb25Eb25lID0gZmFsc2U7CisgICAgc3RhdGljIFJl
dGFpblB0cjxXS1NlY3VyaXR5T3JpZ2luPiBvcmlnaW47CisgICAgW2RhdGFTdG9yZSBfZ2V0T3Jp
Z2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnM6XihOU1NldDxXS1NlY3VyaXR5
T3JpZ2luICo+ICpvcmlnaW5zKSB7CisgICAgICAgIEVYUEVDVF9FUShbb3JpZ2lucyBjb3VudF0s
IDF1KTsKKyAgICAgICAgb3JpZ2luID0gW29yaWdpbnMgYW55T2JqZWN0XTsKKyAgICAgICAgb3Jp
Z2luT3BlcmF0aW9uRG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJm9yaWdpbk9wZXJhdGlvbkRvbmUpOworCisgICAgRVhQRUNUX1RSVUUoW29yaWdp
bi5nZXQoKS5wcm90b2NvbCBpc0VxdWFsVG9TdHJpbmc6QCJ0ZXN0aW5nIl0pOworICAgIEVYUEVD
VF9UUlVFKFtvcmlnaW4uZ2V0KCkuaG9zdCBpc0VxdWFsVG9TdHJpbmc6QCJtYWluIl0pOworCisg
ICAgb3JpZ2luT3BlcmF0aW9uRG9uZSA9IGZhbHNlOworICAgIFtkYXRhU3RvcmUgX2RlbGV0ZVB1
c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246b3JpZ2luLmdldCgpIGNvbXBsZXRpb25IYW5k
bGVyOl4oTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKCEhZXJyb3IpOwor
ICAgICAgICBvcmlnaW5PcGVyYXRpb25Eb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmb3JpZ2luT3BlcmF0aW9uRG9uZSk7CisKKyAgICBvcmlnaW5P
cGVyYXRpb25Eb25lID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfZ2V0T3JpZ2luc1dpdGhQdXNo
QW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnM6XihOU1NldDxXS1NlY3VyaXR5T3JpZ2luICo+ICpv
cmlnaW5zKSB7CisgICAgICAgIEVYUEVDVF9FUShbb3JpZ2lucyBjb3VudF0sIDB1KTsKKyAgICAg
ICAgb3JpZ2luT3BlcmF0aW9uRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZvcmlnaW5PcGVyYXRpb25Eb25lKTsKKworICAgIGNsZWFuVXBUZXN0V2Vi
UHVzaEQodGVtcERpcmVjdG9yeSk7Cit9CisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKIH0g
Ly8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>
<flag name="commit-queue"
          id="467557"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442951</attachid>
            <date>2021-10-31 21:09:12 -0700</date>
            <delta_ts>2021-10-31 21:32:47 -0700</delta_ts>
            <desc>Patch for EWS v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>32599</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggZDM4ZTlhNjBjOTliLi5mNzZlZDI0MWRlZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNTI3LDYgKzI1MjcsMjggQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3Qgc3RkOjpvcHQKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3Ry
YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFj
aykKK3sKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKKyAgICBpZiAoYXV0byog
c2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgc2Vzc2lvbi0+
bm90aWZpY2F0aW9uTWFuYWdlcigpLmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRp
b24ob3JpZ2luLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKKyAgICBjYWxsYmFjaygiQ2Fubm90IGZpbmQgbmV0d29yayBzZXNzaW9uIik7Cit9CisK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBl
cm1pc3Npb25zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmIGNhbGxiYWNr
KQoreworI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQorICAgIGlmIChhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBzZXNzaW9uLT5u
b3RpZmljYXRpb25NYW5hZ2VyKCkuZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVy
bWlzc2lvbnMoV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorI2Vu
ZGlmCisgICAgY2FsbGJhY2soeyB9KTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVxdWVz
dFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENsaWVudE9yaWdp
biYgb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNpemUsIHVpbnQ2NF90
IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDx1aW50
NjRfdD4pPiYmIGNhbGxiYWNrKQogewogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVxdWVzdFN0
b3JhZ2VTcGFjZSB7IHNlc3Npb25JRCwgb3JpZ2luLCBxdW90YSwgY3VycmVudFNpemUsIHNwYWNl
UmVxdWlyZWQgfSwgV1RGTW92ZShjYWxsYmFjayksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGUwMmNiZGY3ODAzMS4uNTc3OTlhYzA0
MzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CkBAIC00MDAsNiArNDAwLDkgQEAgcHVibGljOgogICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdl
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4m
LCBVUkwmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAjZW5kaWYKIAorICAg
IHZvaWQgZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQQUw6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAgdm9pZCBnZXRPcmlnaW5zV2l0aFB1c2hBbmRO
b3RpZmljYXRpb25QZXJtaXNzaW9ucyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmKTsKKwog
cHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0
IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4
IGMwNjYxZWM1NzQ2YS4uMzJhYjM4NDBiNjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIwOCw0ICsy
MDgsNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiBkYXRhLCBV
UkwgcmVnaXN0cmF0aW9uVVJMKSAtPiAoYm9vbCBkaWRTdWNjZWVkKSBBc3luYwogI2VuZGlmCisg
ICAgRGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luKSAtPiAo
U3RyaW5nIGVycm9yTWVzc2FnZSkgQXN5bmMKKyAgICBHZXRPcmlnaW5zV2l0aFB1c2hBbmROb3Rp
ZmljYXRpb25QZXJtaXNzaW9ucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChWZWN0b3I8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zKSBBc3luYwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGZlNGRiMDUwMzcw
Zi4uM2RkZGY0YjMyODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5oCkBAIC0xOTEsNiArMTkxLDEwIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBh
dHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllckZyb21QYWdlSWRlbnRpZmllcihXZWJQYWdlUHJveHlJ
ZGVudGlmaWVyKSBjb25zdDsKIAorI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQor
ICAgIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyJiBub3RpZmljYXRpb25NYW5hZ2VyKCkgeyBy
ZXR1cm4gbV9ub3RpZmljYXRpb25NYW5hZ2VyOyB9CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAg
IE5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlci5jcHAKaW5kZXggNWZlMTIxOWJkYzc1Li4yMjBjNjQzM2QxMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIkRhZW1vbkRlY29kZXIuaCIKICNpbmNsdWRlICJEYWVtb25FbmNvZGVyLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luRGF0YS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtNDIsNiArNDMsMjggQEAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6Ok5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2UKICAgICAgICAg
bV9jb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJQdXNoRDo6Q29ubmVjdGlvbj4od2ViUHVzaE1h
Y2hTZXJ2aWNlTmFtZS51dGY4KCksICp0aGlzKTsKIH0KIAordm9pZCBOZXR3b3JrTm90aWZpY2F0
aW9uTWFuYWdlcjo6cmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3Ry
aW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3Nh
Z2VUeXBlOjpSZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbj4oV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIG9yaWdpblN0cmluZyk7Cit9CisKK3ZvaWQgTmV0d29ya05vdGlmaWNh
dGlvbk1hbmFnZXI6OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZE1lc3NhZ2VXaXRoUmVw
bHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpEZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0
cmF0aW9uPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb3JpZ2luLnRvU3RyaW5nKCkpOwor
fQorCit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpnZXRPcmlnaW5zV2l0aFB1c2hB
bmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZl
Y3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4gcmVwbHlIYW5kbGVyID0g
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8
U3RyaW5nPiBvcmlnaW5TdHJpbmdzKSBtdXRhYmxlIHsKKyAgICAgICAgVmVjdG9yPFNlY3VyaXR5
T3JpZ2luRGF0YT4gb3JpZ2luczsKKyAgICAgICAgZm9yIChhdXRvJiBvcmlnaW5TdHJpbmcgOiBv
cmlnaW5TdHJpbmdzKQorICAgICAgICAgICAgb3JpZ2lucy5hcHBlbmQoU2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tVVJMKHsgeyB9LCBvcmlnaW5TdHJpbmcgfSkpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKG9yaWdpbnMpKTsKKyAgICB9OworCisgICAgc2VuZE1lc3NhZ2VXaXRo
UmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpHZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmlj
YXRpb25QZXJtaXNzaW9ucz4oV1RGTW92ZShyZXBseUhhbmRsZXIpKTsKK30KKwogdm9pZCBOZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24sIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90
KQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQpAQCAtNzYsNyArOTksNiBAQCB2b2lkIE5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90KQog
ICAgICAgICByZXR1cm47CiB9CiAKLQogdGVtcGxhdGU8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlIG1l
c3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlcjo6c2VuZE1lc3NhZ2UoQXJncyYmLi4uIGFyZ3MpIGNvbnN0CiB7CkBAIC05Myw2ICsxMTUs
NyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjw+IHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICB9CiB9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxT
dHJpbmc+IHsKICAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGFlbW9uOjpEZWNvZGVyJiYgZGVj
b2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiAgICAgewpAQCAtMTA0LDYgKzEyNywzOSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNh
bGxlcjxTdHJpbmc+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxl
cjxjb25zdCBTdHJpbmcmPiB7CisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KERhZW1vbjo6RGVj
b2RlciYmIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
c3RyaW5nOworICAgICAgICBkZWNvZGVyID4+IHN0cmluZzsKKyAgICAgICAgaWYgKCFzdHJpbmcp
CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqc3RyaW5nKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8Ym9vbD4geworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShE
YWVtb246OkRlY29kZXImJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxib29sPiBi
b29sZWFuOworICAgICAgICBkZWNvZGVyID4+IGJvb2xlYW47CisgICAgICAgIGlmICghYm9vbGVh
bikKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCpib29sZWFuKTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBSZXBseUNhbGxlcjxWZWN0b3I8U3RyaW5nPiYmPiB7CisgICAgc3RhdGljIHZvaWQgY2Fs
bFJlcGx5KERhZW1vbjo6RGVjb2RlciYmIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBz
dGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBzdHJpbmdzOworICAgICAgICBkZWNvZGVyID4+
IHN0cmluZ3M7CisgICAgICAgIGlmICghc3RyaW5ncykKKyAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKCpz
dHJpbmdzKSk7CisgICAgfQorfTsKKwogdGVtcGxhdGU8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlIG1l
c3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzLCB0eXBlbmFtZS4uLiBSZXBseUFyZ3M+CiB2b2lk
IE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZVdpdGhSZXBseShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlcGx5QXJncy4uLik+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFyZ3Mm
Ji4uLiBhcmdzKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXIuaAppbmRleCA2ZmE4NzU2ODRjNzguLjk1NDkwMjYzNGMyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTMyLDYgKzMyLDEwIEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EaXJlY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IFNlY3VyaXR5T3Jp
Z2luRGF0YTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBXZWJQdXNoRCB7
CkBAIC00Niw5ICs1MCwxMyBAQCBjbGFzcyBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlciA6IHB1
YmxpYyBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIgewogcHVibGljOgogICAgIE5l
dHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fbmV0d29ya1Nl
c3Npb247IH0KIAorICAgIHZvaWQgZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlv
bihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKKyAgICB2b2lkIGdldE9yaWdpbnNXaXRoUHVzaEFuZE5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CisKIHByaXZhdGU6CiAgICAgTmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmIHdl
YlB1c2hNYWNoU2VydmljZU5hbWUpOwogCisgICAgdm9pZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0
aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJM
LCBjb25zdCBTdHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBsYW5nLCBXZWJDb3JlOjpOb3RpZmlj
YXRpb25EaXJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCB1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qg
bm90aWZpY2F0aW9uSUQpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5oCmluZGV4IGYxMzkzMDdlYjllNy4uM2Fl
ZGQ0YzIyN2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VjdXJp
dHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmln
aW4uaApAQCAtNDgsNiArNDgsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbi5kYXRhKCkuaXNvbGF0ZWRDb3B5KCkp
KTsKICAgICB9CiAKKyAgICBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdp
bkRhdGEuaXNvbGF0ZWRDb3B5KCkpKTsKKyAgICB9CisKICAgICBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9zZWN1cml0
eU9yaWdpbjsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Tm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VI
YW5kbGVyLmgKaW5kZXggYjc4OGZkZGIxZGIxLi5lMTA5MjBlOTBkOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlcigpID0gZGVmYXVsdDsKIAorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3lzdGVtTm90
aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNob3dOb3Rp
ZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBT
dHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdl
LCBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3Ry
aW5nLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5j
ZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNh
dGlvbklEcykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlci5tZXNzYWdlcy5pbgppbmRleCBkZDc1ZTMzOGI2ZTUuLmQ1ODkwZWRjM2Q1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2Fn
ZXMuaW4KQEAgLTIxLDYgKzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyIE5vdFJlZkNvdW50ZWQgeworICAgIFJlcXVl
c3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKFN0cmluZyBvcmlnaW5JZGVudGlmaWVyKSAt
PiAoYm9vbCBhbGxvd2VkKSBBc3luYwogICAgIFNob3dOb3RpZmljYXRpb24oU3RyaW5nIHRpdGxl
LCBTdHJpbmcgYm9keSwgU3RyaW5nIGljb25VUkwsIFN0cmluZyB0YWcsIFN0cmluZyBsYW5ndWFn
ZSwgZW51bTp1aW50OF90IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24s
IFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCkKICAgICBD
YW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiAgICAgQ2xlYXJOb3Rp
ZmljYXRpb25zKFZlY3Rvcjx1aW50NjRfdD4gbm90aWZpY2F0aW9uSURzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oCmluZGV4IGRkNzBmZDM0ZjJkNC4u
ZDUyNzI2MmRiYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFl
bW9uQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNv
bnN0YW50cy5oCkBAIC0zNywxMiArMzcsMTggQEAgY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3Rv
Y29sRGVidWdNZXNzYWdlTGV2ZWxLZXkgeyAiZGVidWcgbWVzc2FnZSBsZXZlbCIgfTsKIGNvbnN0
ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbE1lc3NhZ2VUeXBlS2V5IHsgIm1lc3NhZ2UgdHlwZSIg
fTsKIGVudW0gY2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBFY2hvVHdpY2UgPSAx
LAorICAgIFJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uLAorICAgIERlbGV0ZVB1
c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24sCisgICAgR2V0T3JpZ2luc1dpdGhQdXNoQW5k
Tm90aWZpY2F0aW9uUGVybWlzc2lvbnMsCiB9OwogCiBpbmxpbmUgYm9vbCBtZXNzYWdlVHlwZVNl
bmRzUmVwbHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUpCiB7CiAgICAgc3dpdGNoIChtZXNzYWdl
VHlwZSkgewogICAgIGNhc2UgTWVzc2FnZVR5cGU6OkVjaG9Ud2ljZToKKyAgICBjYXNlIE1lc3Nh
Z2VUeXBlOjpHZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9uczoKKyAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpEZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9u
OgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNz
aW9uOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZS5tbQppbmRleCA5YmE2OWY3ZDA2YTUuLmUyYjA3MzY0NjRiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlLm1tCkBAIC0zMSw5ICszMSwxMSBAQAogI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJD
YWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAi
U2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCisjaW1wb3J0ICJXS0Vycm9yLmgiCiAjaW1w
b3J0ICJXS0hUVFBDb29raWVTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIK
ICNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgorI2ltcG9ydCAiV0tT
ZWN1cml0eU9yaWdpbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdl
UHJveHkuaCIKQEAgLTc3MCw0ICs3NzIsMjkgQEAgc3RhdGljIFZlY3RvcjxXZWJLaXQ6OldlYnNp
dGVEYXRhUmVjb3JkPiB0b1dlYnNpdGVEYXRhUmVjb3JkcyhOU0FycmF5ICpkYXRhUmVjb3IKICNl
bmRpZgogfQogCistKHZvaWQpX2RlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246
KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9yaWdpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0byBjb21wbGV0aW9u
SGFuZGxlckNvcHkgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpOworICAgIF93ZWJz
aXRlRGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25S
ZWdpc3RyYXRpb24oX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBzZWN1cml0eU9yaWdp
bi0+X3NlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLCBbY29tcGxldGlvbkhhbmRsZXJD
b3B5XShjb25zdCBTdHJpbmcmIGVycm9yU3RyaW5nKSB7CisgICAgICAgIGlmIChlcnJvclN0cmlu
Zy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weShuaWwpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
Q29weShbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJXS1dlYlNpdGVEYXRhU3RvcmUiIGNvZGU6
V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTooTlNT
dHJpbmcgKillcnJvclN0cmluZyB9XSk7CisgICAgfSk7Cit9CisKKy0odm9pZClfZ2V0T3JpZ2lu
c1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnM6KHZvaWQoXikoTlNTZXQ8V0tTZWN1
cml0eU9yaWdpbiAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGF1dG8gY29tcGxldGlv
bkhhbmRsZXJDb3B5ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5nZXRPcmlnaW5zV2l0aFB1c2hBbmROb3Rp
ZmljYXRpb25QZXJtaXNzaW9ucyhfd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksIFtjb21w
bGV0aW9uSGFuZGxlckNvcHldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+JiBvcmlnaW5zKSB7CisgICAgICAgIGF1dG8gc2V0ID0gYWRvcHROUyhbW05TTXV0YWJsZVNl
dCBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcmlnaW5zLnNpemUoKV0pOworICAgICAgICBmb3Ig
KGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKKyAgICAgICAgICAgIGF1dG8gYXBpT3JpZ2luID0g
QVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbik7CisgICAgICAgICAgICBbc2V0IGFk
ZE9iamVjdDp3cmFwcGVyKGFwaU9yaWdpbi5nZXQoKSldOworICAgICAgICB9CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyQ29weShzZXQuZ2V0KCkpOworICAgIH0pOworfQorCiBAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA4ZmI0ODUxZWIwMzguLmExMmM2ZWMyMGE4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKIE5TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCiAKK0BjbGFzcyBXS1NlY3VyaXR5T3JpZ2luOwogQGNsYXNzIFdLV2ViVmll
dzsKIEBjbGFzcyBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eTsKIEBjbGFzcyBf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKQEAgLTEwOCw3ICsxMDksOCBAQCB0eXBl
ZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9u
cykgewogCiAtKGJvb2wpX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0
aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAtKHZvaWQpX3Byb2Nlc3NQdXNoTWVzc2FnZTooTlNEYXRhKilkYXRhIHJlZ2lzdHJhdGlvbjoo
TlNVUkwgKilyZWdpc3RyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoYm9vbCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKLQorLSh2b2lkKV9kZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0
aW9uOihXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4gY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSh2b2lkKV9nZXRPcmlnaW5zV2l0
aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9uczoodm9pZCheKShOU1NldDxXS1NlY3VyaXR5
T3JpZ2luICo+ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VO
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKaW5kZXggYzU1M2Y5Y2E3MTI5Li41ODFhNWQ5YTUxNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtMTY1Nyw2ICsxNjU3LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpvcHRpCiB9
CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZWxldGVQdXNoQW5kTm90aWZp
Y2F0aW9uUmVnaXN0cmF0aW9uIHsgc2Vzc2lvbklELCBvcmlnaW4gfSwgV1RGTW92ZShjYWxsYmFj
aykpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE9yaWdpbnNXaXRoUHVzaEFu
ZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmIGNh
bGxiYWNrKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3M6OkdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zIHsgc2Vzc2lv
bklEIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGE0YjU0NTYwOTA0ZS4uOThkOWQ4
MGMyNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjc1LDYgKzI3NSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IHByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxTcGFuPGNv
bnN0IHVpbnQ4X3Q+PiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdh
c1Byb2Nlc3NlZCk+JiYpOwogI2VuZGlmCiAKKyAgICB2b2lkIGRlbGV0ZVB1c2hBbmROb3RpZmlj
YXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwor
ICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTmV0
d29ya1Byb2Nlc3NQcm94eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKaW5kZXggYmM1NDA4YzY1MTMxLi5kYmZlZmIwMTU5OTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5jcHAKQEAgLTM1LDYgKzM1LDExIEBAIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlcjo6V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyKFdlYlBhCiB7CiB9CiAK
K3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpyZXF1ZXN0U3lzdGVt
Tm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisK
IHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpzaG93Tm90aWZpY2F0
aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5n
JiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgU3RyaW5nJiBvcmln
aW5TdHJpbmcsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogewogICAgIG1fd2ViUGFnZVByb3h5
LnNob3dOb3RpZmljYXRpb24odGl0bGUsIGJvZHksIGljb25VUkwsIHRhZywgbGFuZ3VhZ2UsIGRp
cmVjdGlvbiwgb3JpZ2luU3RyaW5nLCBub3RpZmljYXRpb25JRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAppbmRleCA2ZjBmZDY4NTU5OGUu
LjNlMGEzYzg0YWY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlci5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlciA6IHB1YmxpYyBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlcihXZWJQYWdlUHJveHkmKTsKIAorICAgIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlv
blBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JikgZmluYWw7CiAgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUs
IGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcm
IHRhZywgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0
aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0X3Qgbm90aWZpY2F0aW9uSUQp
IGZpbmFsOwogICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlv
bklEKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWlu
dDY0X3Q+JiBub3RpZmljYXRpb25JRHMpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggNWM0OTFjYTI1YjljLi45
Yzk3MmE2ZDIxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgogCisj
aW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTgwLDExICs4MSwyMyBAQCB2b2lk
IE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRSZXF1ZXN0KGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YQogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3RW50cnkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uKHNlY3VyaXR5T3JpZ2lu
LnRvU3RyaW5nKCkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHBlcm1p
c3Npb25IYW5kbGVyID0gV1RGTW92ZShwZXJtaXNzaW9uSGFuZGxlciksIHNlY3VyaXR5T3JpZ2lu
XShib29sIGFsbG93ZWQpIG11dGFibGUgewotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmRpZFVwZGF0ZU5vdGlmaWNh
dGlvbkRlY2lzaW9uKHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5nKCksIGFsbG93ZWQpOworICAgIG1f
cGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RO
b3RpZmljYXRpb25QZXJtaXNzaW9uKHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5nKCkpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNlY3VyaXR5T3JpZ2luLCBwZXJtaXNzaW9u
SGFuZGxlciA9IFdURk1vdmUocGVybWlzc2lvbkhhbmRsZXIpXShib29sIGFsbG93ZWQpIG11dGFi
bGUgewogCi0gICAgICAgIGF1dG8gcGVybWlzc2lvbkhhbmRsZXJzID0gbV9yZXF1ZXN0c1Blck9y
aWdpbi50YWtlKHNlY3VyaXR5T3JpZ2luKTsKLSAgICAgICAgY2FsbFBlcm1pc3Npb25IYW5kbGVy
c1dpdGgocGVybWlzc2lvbkhhbmRsZXJzLCBhbGxvd2VkID8gUGVybWlzc2lvbjo6R3JhbnRlZCA6
IFBlcm1pc3Npb246OkRlbmllZCk7CisgICAgICAgIGF1dG8gaW5uZXJQZXJtaXNzaW9uSGFuZGxl
ciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2VjdXJpdHlPcmlnaW4s
IHBlcm1pc3Npb25IYW5kbGVyID0gV1RGTW92ZShwZXJtaXNzaW9uSGFuZGxlcildIChib29sIGFs
bG93ZWQpIG11dGFibGUgeworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3Vw
cGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5kaWRVcGRhdGVOb3RpZmljYXRpb25E
ZWNpc2lvbihzZWN1cml0eU9yaWdpbi50b1N0cmluZygpLCBhbGxvd2VkKTsKKworICAgICAgICAg
ICAgYXV0byBwZXJtaXNzaW9uSGFuZGxlcnMgPSBtX3JlcXVlc3RzUGVyT3JpZ2luLnRha2Uoc2Vj
dXJpdHlPcmlnaW4pOworICAgICAgICAgICAgY2FsbFBlcm1pc3Npb25IYW5kbGVyc1dpdGgocGVy
bWlzc2lvbkhhbmRsZXJzLCBhbGxvd2VkID8gUGVybWlzc2lvbjo6R3JhbnRlZCA6IFBlcm1pc3Np
b246OkRlbmllZCk7CisgICAgICAgIH07CisKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FU
SU9OUykKKyAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuYnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFibGVkKCkgJiYgYWxsb3dlZCkgeworICAgICAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6Tm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpSZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lv
bihzZWN1cml0eU9yaWdpbi50b1N0cmluZygpKSwgV1RGTW92ZShpbm5lclBlcm1pc3Npb25IYW5k
bGVyKSwgbV9wYWdlLT5zZXNzaW9uSUQoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgaW5uZXJQZXJtaXNzaW9uSGFuZGxlcihhbGxv
d2VkKTsKKyNlbmRpZgogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1dlYlB1c2hEYWVtb24uaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERh
ZW1vbi5oCmluZGV4IGE5NGVkZDRlMzI5Zi4uMDAwNWZhZThkODQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1dlYlB1c2hEYWVtb24uaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiV2Vi
UHVzaERhZW1vbkNvbnN0YW50cy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KICNpbmNsdWRl
IDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgpAQCAtNDgs
MTIgKzQ5LDE3IEBAIHB1YmxpYzoKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lk
IGVjaG9Ud2ljZShjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmIHJlcGx5U2VuZGVyKTsKKyAgICB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRp
b25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgcmVwbHlTZW5kZXIpOworICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0
aW9uUGVybWlzc2lvbnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8U3RyaW5n
PiYpPiYmIHJlcGx5U2VuZGVyKTsKKyAgICB2b2lkIGRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25S
ZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYgcmVwbHlTZW5kZXIpOwogCiBwcml2YXRlOgogICAgIERh
ZW1vbigpID0gZGVmYXVsdDsKIAogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1l
c3NhZ2UmJik+IGNyZWF0ZVJlcGx5U2VuZGVyKE1lc3NhZ2VUeXBlLCBPU09iamVjdFB0cjx4cGNf
b2JqZWN0X3Q+JiYgcmVxdWVzdCk7CiAgICAgdm9pZCBkZWNvZGVBbmRIYW5kbGVNZXNzYWdlKE1l
c3NhZ2VUeXBlLCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYpPiYmKTsKKworICAgIEhhc2hTZXQ8U3RyaW5n
PiBtX2luTWVtb3J5T3JpZ2luU3RyaW5nc1dpdGhQZXJtaXNzaW9uRm9yVGVzdGluZzsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1dlYlB1c2hEYWVtb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVt
b24ubW0KaW5kZXggNTZhMDcwY2IxZDY1Li5mYzgyNjgxMzY5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KQEAgLTUzLDYgKzUzLDIxIEBAIEFSR1VNRU5UUyhTdHJp
bmcpCiBSRVBMWShTdHJpbmcpCiBFTkQKIAorRlVOQ1RJT04oZ2V0T3JpZ2luc1dpdGhQdXNoQW5k
Tm90aWZpY2F0aW9uUGVybWlzc2lvbnMpCitBUkdVTUVOVFMoKQorUkVQTFkoY29uc3QgVmVjdG9y
PFN0cmluZz4mKQorRU5ECisKK0ZVTkNUSU9OKGRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdp
c3RyYXRpb24pCitBUkdVTUVOVFMoU3RyaW5nKQorUkVQTFkoU3RyaW5nKQorRU5ECisKK0ZVTkNU
SU9OKHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKQorQVJHVU1FTlRTKFN0cmlu
ZykKK1JFUExZKGJvb2wpCitFTkQKKwogI3VuZGVmIEZVTkNUSU9OCiAjdW5kZWYgQVJHVU1FTlRT
CiAjdW5kZWYgUkVQTFkKQEAgLTY1LDYgKzgwLDI3IEBAIFdlYlB1c2hEOjpFbmNvZGVkTWVzc2Fn
ZSBlY2hvVHdpY2U6OmVuY29kZVJlcGx5KFN0cmluZyByZXBseSkKICAgICByZXR1cm4gZW5jb2Rl
ci50YWtlQnVmZmVyKCk7CiB9CiAKK1dlYlB1c2hEOjpFbmNvZGVkTWVzc2FnZSBnZXRPcmlnaW5z
V2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9uczo6ZW5jb2RlUmVwbHkoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHJlcGx5KQoreworICAgIFdlYktpdDo6RGFlbW9uOjpFbmNvZGVyIGVuY29k
ZXI7CisgICAgZW5jb2RlciA8PCByZXBseTsKKyAgICByZXR1cm4gZW5jb2Rlci50YWtlQnVmZmVy
KCk7Cit9CisKK1dlYlB1c2hEOjpFbmNvZGVkTWVzc2FnZSBkZWxldGVQdXNoQW5kTm90aWZpY2F0
aW9uUmVnaXN0cmF0aW9uOjplbmNvZGVSZXBseShTdHJpbmcgcmVwbHkpCit7CisgICAgV2ViS2l0
OjpEYWVtb246OkVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8IHJlcGx5OworICAgIHJl
dHVybiBlbmNvZGVyLnRha2VCdWZmZXIoKTsKK30KKworV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdl
IHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uOjplbmNvZGVSZXBseShib29sIHJl
cGx5KQoreworICAgIFdlYktpdDo6RGFlbW9uOjpFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2Rl
ciA8PCByZXBseTsKKyAgICByZXR1cm4gZW5jb2Rlci50YWtlQnVmZmVyKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIE1lc3NhZ2VJbmZvCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEluZm8+CkBAIC0xNDEs
NiArMTc3LDE1IEBAIHZvaWQgRGFlbW9uOjpkZWNvZGVBbmRIYW5kbGVNZXNzYWdlKE1lc3NhZ2VU
eXBlIG1lc3NhZ2VUeXBlLCBTcGFuPGNvbnN0IHVpbnQ4X3Q+CiAgICAgY2FzZSBNZXNzYWdlVHlw
ZTo6RWNob1R3aWNlOgogICAgICAgICBoYW5kbGVXZWJQdXNoRE1lc3NhZ2VXaXRoUmVwbHk8TWVz
c2FnZUluZm86OmVjaG9Ud2ljZT4oZW5jb2RlZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5kZXIp
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6R2V0T3JpZ2luc1dpdGhQ
dXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnM6CisgICAgICAgIGhhbmRsZVdlYlB1c2hETWVz
c2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6Z2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0
aW9uUGVybWlzc2lvbnM+KGVuY29kZWRNZXNzYWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkRlbGV0ZVB1c2hBbmROb3RpZmlj
YXRpb25SZWdpc3RyYXRpb246CisgICAgICAgIGhhbmRsZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBs
eTxNZXNzYWdlSW5mbzo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbj4oZW5j
b2RlZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBNZXNzYWdlVHlwZTo6UmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb246Cisg
ICAgICAgIGhhbmRsZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6cmVxdWVz
dFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24+KGVuY29kZWRNZXNzYWdlLCBXVEZNb3ZlKHJl
cGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtMTQ5LDQgKzE5NCwy
OSBAQCB2b2lkIERhZW1vbjo6ZWNob1R3aWNlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbgogICAgIHJlcGx5U2VuZGVyKG1ha2VTdHJpbmco
bWVzc2FnZSwgbWVzc2FnZSkpOwogfQogCit2b2lkIERhZW1vbjo6cmVxdWVzdFN5c3RlbU5vdGlm
aWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgcmVwbHlTZW5kZXIpCit7CisgICAgLy8gRklYTUU6IFRoaXMg
aXMgZm9yIGFuIEFQSSB0ZXN0aW5nIGNoZWNrcG9pbnQKKyAgICAvLyBOZXh0IHN0ZXAgaXMgYWN0
dWFsbHkgcGVyZm9ybSBhIHBlcnNpc3RlbnQgcGVybWlzc2lvbnMgcmVxdWVzdCBvbiBhIHBlci1w
bGF0Zm9ybSBiYXNpcworICAgIG1faW5NZW1vcnlPcmlnaW5TdHJpbmdzV2l0aFBlcm1pc3Npb25G
b3JUZXN0aW5nLmFkZChvcmlnaW5TdHJpbmcpOworICAgIHJlcGx5U2VuZGVyKHRydWUpOworfQor
Cit2b2lkIERhZW1vbjo6Z2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lv
bnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPiYmIHJlcGx5
U2VuZGVyKQoreworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGZvciBhbiBBUEkgdGVzdGluZyBjaGVj
a3BvaW50CisgICAgLy8gTmV4dCBzdGVwIGlzIGFjdHVhbGx5IGdhdGhlciBwZXJzaXN0ZW50IHBl
cm1pc3Npb25zIGZyb20gdGhlIHN5c3RlbSBvbiBhIHBlci1wbGF0Zm9ybSBiYXNpcworICAgIHJl
cGx5U2VuZGVyKGNvcHlUb1ZlY3RvcihtX2luTWVtb3J5T3JpZ2luU3RyaW5nc1dpdGhQZXJtaXNz
aW9uRm9yVGVzdGluZykpOworfQorCit2b2lkIERhZW1vbjo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNh
dGlvblJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiByZXBseVNlbmRlcikKK3sKKyAgICAvLyBGSVhN
RTogVGhpcyBpcyBmb3IgYW4gQVBJIHRlc3RpbmcgY2hlY2twb2ludAorICAgIC8vIE5leHQgc3Rl
cCBpcyBhY3R1YWxseSBkZWxldGUgYW55IHBlcnNpc3RlbnQgcGVybWlzc2lvbnMgb24gYSBwZXIt
cGxhdGZvcm0gYmFzaXMKKyAgICBpZiAobV9pbk1lbW9yeU9yaWdpblN0cmluZ3NXaXRoUGVybWlz
c2lvbkZvclRlc3RpbmcucmVtb3ZlKG9yaWdpblN0cmluZykpCisgICAgICAgIHJlcGx5U2VuZGVy
KCIiKTsKKyAgICBlbHNlCisgICAgICAgIHJlcGx5U2VuZGVyKG1ha2VTdHJpbmcoIk9yaWdpbiAi
LCBvcmlnaW5TdHJpbmcsICIgbm90IHJlZ2lzdGVyZWQgZm9yIHB1c2ggb3Igbm90aWZpY2F0aW9u
cyIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQppbmRleCA4NjM3
NWU0MWRhMzAuLjE2OGQ0NmZmMzJmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQpAQCAtMjYsNiArMjYsMjkgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJEYWVtb25UZXN0VXRpbGl0aWVzLmgiCisj
aW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgorI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktp
dC9fV0tFeHBlcmltZW50YWxGZWF0dXJlLmg+CisKK3N0YXRpYyBib29sIGFsZXJ0UmVjZWl2ZWQg
PSBmYWxzZTsKK0BpbnRlcmZhY2UgTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlbGVnYXRlIDogTlNP
YmplY3Q8V0tVSURlbGVnYXRlUHJpdmF0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIE5vdGlm
aWNhdGlvblBlcm1pc3Npb25EZWxlZ2F0ZQorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46
KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIGRlY2lzaW9uSGFuZGxlcih0cnVlKTsK
K30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRB
bGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1l
OihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSlj
b21wbGV0aW9uSGFuZGxlcgoreworICAgIGFsZXJ0UmVjZWl2ZWQgPSB0cnVlOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7Cit9CisKK0BlbmQKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
CkBAIC0xNDcsNiArMTcwLDc1IEBAIFRFU1QoV2ViUHVzaEQsIEJhc2ljQ29tbXVuaWNhdGlvbikK
ICAgICBjbGVhblVwVGVzdFdlYlB1c2hEKHRlbXBEaXIpOwogfQogCitzdGF0aWMgY29uc3QgY2hh
ciogbWFpbkJ5dGVzID0gUiJXRUJQVVNIUkVTT1VSQ0UoCis8c2NyaXB0PgorICAgIE5vdGlmaWNh
dGlvbi5yZXF1ZXN0UGVybWlzc2lvbigpLnRoZW4oKCkgPT4geyBhbGVydCgiZG9uZSIpIH0pCis8
L3NjcmlwdD4KKylXRUJQVVNIUkVTT1VSQ0UiOworCitURVNUKFdlYlB1c2hELCBQZXJtaXNzaW9u
TWFuYWdlbWVudCkKK3sKKyAgICBOU1VSTCAqdGVtcERpcmVjdG9yeSA9IHNldFVwVGVzdFdlYlB1
c2hEKCk7CisKKyAgICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtfV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBkYXRhU3RvcmVDb25maWd1
cmF0aW9uLmdldCgpLndlYlB1c2hNYWNoU2VydmljZU5hbWUgPSBAIm9yZy53ZWJraXQud2VicHVz
aHRlc3RkYWVtb24uc2VydmljZSI7CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tX
ZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgY29uZmlndXJhdGlv
bi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gZGF0YVN0b3JlLmdldCgpOworICAgIGZvciAoX1dL
RXhwZXJpbWVudGFsRmVhdHVyZSAqZmVhdHVyZSBpbiBbV0tQcmVmZXJlbmNlcyBfZXhwZXJpbWVu
dGFsRmVhdHVyZXNdKSB7CisgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5n
OkAiQnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFibGVkIl0pCisgICAgICAgICAgICBbW2NvbmZpZ3Vy
YXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JGZWF0dXJlOmZlYXR1cmVdOwor
ICAgIH0KKworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0VVJMU2NoZW1lSGFuZGxl
ciBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6
aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0aW5nIl07CisKKyAgICBbaGFuZGxlciBz
ZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOl4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1l
VGFzaz4gdGFzaykgeworICAgICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVz
cG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0
L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7Cisg
ICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CisgICAgICAg
IFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczptYWluQnl0ZXMgbGVu
Z3RoOnN0cmxlbihtYWluQnl0ZXMpXV07CisgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CisgICAg
fV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtbTm90
aWZpY2F0aW9uUGVybWlzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcg
c2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0
ZXN0aW5nOi8vbWFpbi9pbmRleC5odG1sIl1dXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmFsZXJ0UmVjZWl2ZWQpOworCisgICAgc3RhdGljIGJvb2wgb3JpZ2luT3BlcmF0aW9uRG9u
ZSA9IGZhbHNlOworICAgIHN0YXRpYyBSZXRhaW5QdHI8V0tTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
OworICAgIFtkYXRhU3RvcmUgX2dldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1p
c3Npb25zOl4oTlNTZXQ8V0tTZWN1cml0eU9yaWdpbiAqPiAqb3JpZ2lucykgeworICAgICAgICBF
WFBFQ1RfRVEoW29yaWdpbnMgY291bnRdLCAxdSk7CisgICAgICAgIG9yaWdpbiA9IFtvcmlnaW5z
IGFueU9iamVjdF07CisgICAgICAgIG9yaWdpbk9wZXJhdGlvbkRvbmUgPSB0cnVlOworICAgIH1d
OworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZvcmlnaW5PcGVyYXRpb25Eb25lKTsK
KworICAgIEVYUEVDVF9UUlVFKFtvcmlnaW4uZ2V0KCkucHJvdG9jb2wgaXNFcXVhbFRvU3RyaW5n
OkAidGVzdGluZyJdKTsKKyAgICBFWFBFQ1RfVFJVRShbb3JpZ2luLmdldCgpLmhvc3QgaXNFcXVh
bFRvU3RyaW5nOkAibWFpbiJdKTsKKworICAgIG9yaWdpbk9wZXJhdGlvbkRvbmUgPSBmYWxzZTsK
KyAgICBbZGF0YVN0b3JlIF9kZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uOm9y
aWdpbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAg
IEVYUEVDVF9GQUxTRSghIWVycm9yKTsKKyAgICAgICAgb3JpZ2luT3BlcmF0aW9uRG9uZSA9IHRy
dWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm9yaWdpbk9wZXJh
dGlvbkRvbmUpOworCisgICAgb3JpZ2luT3BlcmF0aW9uRG9uZSA9IGZhbHNlOworICAgIFtkYXRh
U3RvcmUgX2dldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zOl4oTlNT
ZXQ8V0tTZWN1cml0eU9yaWdpbiAqPiAqb3JpZ2lucykgeworICAgICAgICBFWFBFQ1RfRVEoW29y
aWdpbnMgY291bnRdLCAwdSk7CisgICAgICAgIG9yaWdpbk9wZXJhdGlvbkRvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmb3JpZ2luT3BlcmF0aW9uRG9u
ZSk7CisKKyAgICBjbGVhblVwVGVzdFdlYlB1c2hEKHRlbXBEaXJlY3RvcnkpOworfQorCiAjZW5k
aWYgLy8gUExBVEZPUk0oTUFDKQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442952</attachid>
            <date>2021-10-31 21:32:47 -0700</date>
            <delta_ts>2021-11-01 11:09:41 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>37466</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggZWYzNzQzZDA0OTZhLi5jMDdiZWY5MWQ3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNzUgQEAKKzIwMjEtMTAtMzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIHdlYnB1c2hkOiBBZGQgbW9jayBpbi1tZW1vcnkgcmVnaXN0cmF0aW9uLCBhbmQg
dGhlIFdLV2Vic2l0ZURhdGFTdG9yZSBTUEkgdG8gbWFuYWdlIHRoZW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjUzOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3QuCisg
ICAgICAgIAorICAgICAgICBUaGUgb2xkIFNQSSB0byBhc2sgdGhlIGNsaWVudCBpZiBub3RpZmlj
YXRpb25zIHNob3VsZCBiZSBhbGxvd2VkIHdpbGwgcmVtYWluLgorICAgICAgICAKKyAgICAgICAg
QXNzdW1pbmcgdGhlIGNsaWVudCBva2F5cyBub3RpZmljYXRpb25zLCBpbiB0aGUgY2FzZSBvZiBi
dWlsdC1pbiBub3RpZmljYXRpb25zLCB0aGUgKmFjdHVhbCoKKyAgICAgICAgcmVnaXN0cmF0aW9u
IGludGVyYWN0aW9uIHdpdGggdGhlIHN5c3RlbSB3aWxsIHRha2UgcGxhY2UgYXMgYW4gYWRkaXRp
b25hbCBzdGVwIGluIHdlYnB1c2hkCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoOgorICAg
ICAgICAtIEFkZHMgaW4tbWVtb3J5IG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb24gZm9yIHdlYnB1
c2hkCisgICAgICAgIC0gQWRkcyBTUEkgdG8gV0tXZWJzaXRlRGF0YVN0b3JlIHRvIG1hbmFnZSBy
ZWdpc3RyYXRpb25zCisgICAgICAgIC0gVGVzdHMgdGhlIFNQSQorICAgICAgICAKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlm
aWNhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Om5vdGlmaWNhdGlvbk1hbmFnZXIpOgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpy
ZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0
cmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6Omdl
dE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFdl
YktpdDo6UmVwbHlDYWxsZXI8Ym9vbD46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6OlJl
cGx5Q2FsbGVyPFZlY3RvcjxTdHJpbmc+OjpjYWxsUmVwbHkpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKworICAg
ICAgICAqIFNoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaDoKKyAgICAgICAgKEFQSTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZSk6CisKKyAgICAgICAgKiBTaGFyZWQvTm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvTm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW46
CisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQdXNoRDo6bWVzc2FnZVR5cGVTZW5kc1JlcGx5KToKKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dl
YnNpdGVEYXRhU3RvcmUgX2RlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfZ2V0T3Jp
Z2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnM6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lz
dHJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE9yaWdp
bnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OnJl
cXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaDoKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0UmVxdWVzdCk6CisKKyAgICAgICAgKiB3ZWJwdXNoZC9X
ZWJQdXNoRGFlbW9uLmg6CisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAg
ICAgICAgKFdlYlB1c2hEOjpNZXNzYWdlSW5mbzo6Z2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnM6OmVuY29kZVJlcGx5KToKKyAgICAgICAgKFdlYlB1c2hEOjpNZXNz
YWdlSW5mbzo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbjo6ZW5jb2RlUmVw
bHkpOgorICAgICAgICAoV2ViUHVzaEQ6Ok1lc3NhZ2VJbmZvOjpyZXF1ZXN0U3lzdGVtTm90aWZp
Y2F0aW9uUGVybWlzc2lvbjo6ZW5jb2RlUmVwbHkpOgorICAgICAgICAoV2ViUHVzaEQ6OkRhZW1v
bjo6ZGVjb2RlQW5kSGFuZGxlTWVzc2FnZSk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpy
ZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgIChXZWJQdXNoRDo6
RGFlbW9uOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyk6Cisg
ICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0
cmF0aW9uKToKKwogMjAyMS0xMC0yNiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFw
cGxlLmNvbT4KIAogICAgICAgICBOZXR3b3JrUHJvY2Vzczo6dXBkYXRlQnVuZGxlSWRlbnRpZmll
ciwgYSB0ZXN0aW5nIGZ1bmN0aW9uLCBvdmVycmlkZXMgdGhlIGFjdHVhbCBidW5kbGVJRCBpbnN0
ZWFkIG9mIHRoZSBvdmVycmlkZSB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBkMzhlOWE2MGM5OWIuLmY3NmVkMjQxZGVmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
QEAgLTI1MjcsNiArMjUyNywyOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1l
c3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBzdGQ6Om9wdAogfQogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVsZXRl
UHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQoreworI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJ
RklDQVRJT05TKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgeworICAgICAgICBzZXNzaW9uLT5ub3RpZmljYXRpb25NYW5hZ2VyKCkuZGVsZXRlUHVz
aEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihvcmlnaW4sIFdURk1vdmUoY2FsbGJhY2spKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorICAgIGNhbGxiYWNrKCJDYW5ub3QgZmlu
ZCBuZXR3b3JrIHNlc3Npb24iKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0T3JpZ2lu
c1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGE+Jik+JiYgY2FsbGJhY2spCit7CisjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElG
SUNBVElPTlMpCisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9u
SUQpKSB7CisgICAgICAgIHNlc3Npb24tPm5vdGlmaWNhdGlvbk1hbmFnZXIoKS5nZXRPcmlnaW5z
V2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhXVEZNb3ZlKGNhbGxiYWNrKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBjYWxsYmFjayh7IH0pOworfQorCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZVNwYWNlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4sIHVpbnQ2NF90IHF1b3RhLCB1aW50
NjRfdCBjdXJyZW50U2l6ZSwgdWludDY0X3Qgc3BhY2VSZXF1aXJlZCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90Pik+JiYgY2FsbGJhY2spCiB7CiAgICAgcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpSZXF1ZXN0U3RvcmFnZVNwYWNlIHsgc2Vzc2lvbklELCBvcmlnaW4s
IHF1b3RhLCBjdXJyZW50U2l6ZSwgc3BhY2VSZXF1aXJlZCB9LCBXVEZNb3ZlKGNhbGxiYWNrKSwg
MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5k
ZXggZTAyY2JkZjc4MDMxLi41Nzc5OWFjMDQzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTQwMCw2ICs0MDAsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiYsIFVSTCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKICNlbmRpZgogCisgICAgdm9pZCBkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9u
UmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKKyAgICB2
b2lkIGdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFBBTDo6U2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+Jik+JiYpOworCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0
aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYzA2NjFlYzU3NDZhLi4zMmFiMzg0MGI2NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtMjA4LDQgKzIwOCw2IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgUHJv
Y2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxJ
UEM6OkRhdGFSZWZlcmVuY2U+IGRhdGEsIFVSTCByZWdpc3RyYXRpb25VUkwpIC0+IChib29sIGRp
ZFN1Y2NlZWQpIEFzeW5jCiAjZW5kaWYKKyAgICBEZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVn
aXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RydWN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSBvcmlnaW4pIC0+IChTdHJpbmcgZXJyb3JNZXNzYWdlKSBBc3luYworICAg
IEdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9y
aWdpbnMpIEFzeW5jCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmgKaW5kZXggZmU0ZGIwNTAzNzBmLi4zZGRkZjRiMzI4OGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTE5MSw2ICsxOTEsMTAg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIGF0dHJpYnV0ZWRCdW5kbGVJZGVudGlmaWVyRnJvbVBh
Z2VJZGVudGlmaWVyKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIpIGNvbnN0OwogCisjaWYgRU5BQkxF
KEJVSUxUX0lOX05PVElGSUNBVElPTlMpCisgICAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIm
IG5vdGlmaWNhdGlvbk1hbmFnZXIoKSB7IHJldHVybiBtX25vdGlmaWNhdGlvbk1hbmFnZXI7IH0K
KyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgTmV0d29ya1Nlc3Npb24oTmV0d29ya1Byb2Nlc3Mm
LCBjb25zdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlm
aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA1ZmUxMjE5YmRjNzUu
LjIyMGM2NDMzZDExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRGFlbW9uRGVjb2Rlci5oIgog
I2luY2x1ZGUgIkRhZW1vbkVuY29kZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC00Miw2ICs0MywyOCBAQCBOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlcjo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nl
c3Npb24mIG5ldHdvcmtTZQogICAgICAgICBtX2Nvbm5lY3Rpb24gPSBtYWtlVW5pcXVlPFdlYlB1
c2hEOjpDb25uZWN0aW9uPih3ZWJQdXNoTWFjaFNlcnZpY2VOYW1lLnV0ZjgoKSwgKnRoaXMpOwog
fQogCit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpyZXF1ZXN0U3lzdGVtTm90aWZp
Y2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kTWVzc2Fn
ZVdpdGhSZXBseTxXZWJQdXNoRDo6TWVzc2FnZVR5cGU6OlJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRp
b25QZXJtaXNzaW9uPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb3JpZ2luU3RyaW5nKTsK
K30KKwordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGVsZXRlUHVzaEFuZE5vdGlm
aWNhdGlvblJlZ2lzdHJhdGlvbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxXZWJQdXNoRDo6TWVzc2FnZVR5cGU6OkRlbGV0
ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24+KFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBvcmlnaW4udG9TdHJpbmcoKSk7Cit9CisKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXI6OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYpPiByZXBseUhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxTdHJpbmc+IG9yaWdpblN0cmluZ3MpIG11dGFibGUg
eworICAgICAgICBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zOworICAgICAgICBm
b3IgKGF1dG8mIG9yaWdpblN0cmluZyA6IG9yaWdpblN0cmluZ3MpCisgICAgICAgICAgICBvcmln
aW5zLmFwcGVuZChTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwoeyB7IH0sIG9yaWdpblN0cmlu
ZyB9KSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUob3JpZ2lucykpOworICAg
IH07CisKKyAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxXZWJQdXNoRDo6TWVzc2FnZVR5cGU6Okdl
dE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zPihXVEZNb3ZlKHJlcGx5
SGFuZGxlcikpOworfQorCiB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93Tm90
aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlv
biwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QpCiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCkBA
IC03Niw3ICs5OSw2IEBAIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ry
b3lOb3RpZmljYXRpb24odWludDY0X3QpCiAgICAgICAgIHJldHVybjsKIH0KIAotCiB0ZW1wbGF0
ZTxXZWJQdXNoRDo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CiB2
b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZShBcmdzJiYuLi4gYXJn
cykgY29uc3QKIHsKQEAgLTkzLDYgKzExNSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IFJlcGx5Q2Fs
bGVyPD4gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0KIH07CisKIHRlbXBs
YXRlPD4gc3RydWN0IFJlcGx5Q2FsbGVyPFN0cmluZz4gewogICAgIHN0YXRpYyB2b2lkIGNhbGxS
ZXBseShEYWVtb246OkRlY29kZXImJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CkBAIC0xMDQsNiArMTI3LDM5IEBA
IHRlbXBsYXRlPD4gc3RydWN0IFJlcGx5Q2FsbGVyPFN0cmluZz4gewogICAgIH0KIH07CiAKK3Rl
bXBsYXRlPD4gc3RydWN0IFJlcGx5Q2FsbGVyPGNvbnN0IFN0cmluZyY+IHsKKyAgICBzdGF0aWMg
dm9pZCBjYWxsUmVwbHkoRGFlbW9uOjpEZWNvZGVyJiYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7CisgICAgICAgIGRlY29kZXIgPj4gc3Ry
aW5nOworICAgICAgICBpZiAoIXN0cmluZykKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKCpzdHJpbmcp
KTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxib29sPiB7Cisg
ICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KERhZW1vbjo6RGVjb2RlciYmIGRlY29kZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IGJvb2xlYW47CisgICAgICAgIGRlY29kZXIgPj4gYm9v
bGVhbjsKKyAgICAgICAgaWYgKCFib29sZWFuKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKmJvb2xlYW4pOwor
ICAgIH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IFJlcGx5Q2FsbGVyPFZlY3RvcjxTdHJpbmc+
JiY+IHsKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGFlbW9uOjpEZWNvZGVyJiYgZGVjb2Rl
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+IHN0
cmluZ3M7CisgICAgICAgIGRlY29kZXIgPj4gc3RyaW5nczsKKyAgICAgICAgaWYgKCFzdHJpbmdz
KQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoKnN0cmluZ3MpKTsKKyAgICB9Cit9OworCiB0ZW1wbGF0
ZTxXZWJQdXNoRDo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5cGVuYW1lLi4uIEFyZ3MsIHR5
cGVuYW1lLi4uIFJlcGx5QXJncz4KIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnNl
bmRNZXNzYWdlV2l0aFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVwbHlBcmdzLi4uKT4m
JiBjb21wbGV0aW9uSGFuZGxlciwgQXJncyYmLi4uIGFyZ3MpIGNvbnN0CiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlm
aWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0
aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDZmYTg3NTY4NGM3OC4uOTU0
OTAyNjM0YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlm
aWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIu
aApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVj
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOworfQorCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogbmFtZXNwYWNlIFdlYlB1c2hEIHsKQEAgLTQ2LDkgKzUwLDEzIEBAIGNsYXNzIE5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyIDogcHVibGljIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlciB7CiBwdWJsaWM6CiAgICAgTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9uZXR3b3JrU2Vzc2lvbjsgfQogCisgICAgdm9pZCBkZWxldGVQdXNo
QW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOworICAgIHZv
aWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYp
PiYmKTsKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcihOZXR3b3Jr
U2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgd2ViUHVzaE1hY2hTZXJ2aWNlTmFtZSk7CiAKKyAgICB2
b2lkIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgb3Jp
Z2luU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2
b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBi
b2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJp
bmcmIGxhbmcsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlvbiwgY29uc3QgU3RyaW5nJiBv
cmlnaW5TdHJpbmcsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKICAgICB2b2lkIGNh
bmNlbE5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkgZmluYWw7CiAgICAgdm9p
ZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9u
SURzKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZWN1
cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlY3VyaXR5T3JpZ2lu
LmgKaW5kZXggZjEzOTMwN2ViOWU3Li4zYWVkZDRjMjI3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5oCkBAIC00OCw2ICs0OCwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3Jp
Z2luLmRhdGEoKS5pc29sYXRlZENvcHkoKSkpOwogICAgIH0KIAorICAgIHN0YXRpYyBSZWY8U2Vj
dXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNl
Y3VyaXR5T3JpZ2luRGF0YSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNl
Y3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luRGF0YS5pc29sYXRlZENvcHkoKSkpOworICAgIH0K
KwogICAgIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW4o
KSBjb25zdCB7IHJldHVybiBtX3NlY3VyaXR5T3JpZ2luOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAppbmRleCBiNzg4ZmRkYjFkYjEuLmUx
MDkyMGU5MGQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5o
CkBAIC0zNSw2ICszNSw3IEBAIGNsYXNzIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ciA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyKCkgPSBkZWZhdWx0OwogCisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0cmlu
ZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBTdHJpbmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSTCwgY29uc3QgU3RyaW5nJiB0
YWcsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlv
biwgY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbE5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmlj
YXRpb25JRCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoY29uc3Qg
VmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURzKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluCmluZGV4IGRkNzVl
MzM4YjZlNS4uZDU4OTBlZGMzZDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9O
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgpAQCAtMjEsNiArMjEsNyBAQAogIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCiBtZXNzYWdlcyAtPiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIg
Tm90UmVmQ291bnRlZCB7CisgICAgUmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24o
U3RyaW5nIG9yaWdpbklkZW50aWZpZXIpIC0+IChib29sIGFsbG93ZWQpIEFzeW5jCiAgICAgU2hv
d05vdGlmaWNhdGlvbihTdHJpbmcgdGl0bGUsIFN0cmluZyBib2R5LCBTdHJpbmcgaWNvblVSTCwg
U3RyaW5nIHRhZywgU3RyaW5nIGxhbmd1YWdlLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEKQogICAgIENhbmNlbE5vdGlmaWNhdGlvbih1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCkKICAgICBDbGVhck5vdGlmaWNhdGlvbnMoVmVjdG9yPHVpbnQ2NF90PiBub3Rp
ZmljYXRpb25JRHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFl
bW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3Rh
bnRzLmgKaW5kZXggZGQ3MGZkMzRmMmQ0Li5kNTI3MjYyZGJiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgKQEAgLTM3LDEyICszNywxOCBAQCBj
b25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xEZWJ1Z01lc3NhZ2VMZXZlbEtleSB7ICJkZWJ1
ZyBtZXNzYWdlIGxldmVsIiB9OwogY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sTWVzc2Fn
ZVR5cGVLZXkgeyAibWVzc2FnZSB0eXBlIiB9OwogZW51bSBjbGFzcyBNZXNzYWdlVHlwZSA6IHVp
bnQ4X3QgewogICAgIEVjaG9Ud2ljZSA9IDEsCisgICAgUmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlv
blBlcm1pc3Npb24sCisgICAgRGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbiwK
KyAgICBHZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucywKIH07CiAK
IGlubGluZSBib29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlw
ZSkKIHsKICAgICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6
RWNob1R3aWNlOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OkdldE9yaWdpbnNXaXRoUHVzaEFuZE5v
dGlmaWNhdGlvblBlcm1pc3Npb25zOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OkRlbGV0ZVB1c2hB
bmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6UmVxdWVz
dFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb246CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDliYTY5Zjdk
MDZhNS4uZTJiMDczNjQ2NGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTMxLDkgKzMxLDExIEBACiAj
aW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJOZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MuaCIK
KyNpbXBvcnQgIldLRXJyb3IuaCIKICNpbXBvcnQgIldLSFRUUENvb2tpZVN0b3JlSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9ydCAiV0tOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmgiCisjaW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhUmVjb3JkSW50
ZXJuYWwuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgpAQCAtNzcwLDQgKzc3MiwyOSBAQCBz
dGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0ZURhdGFSZWNv
cmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogI2VuZGlmCiB9CiAKKy0odm9pZClfZGVsZXRlUHVzaEFu
ZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3Jp
Z2luIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRs
ZXIKK3sKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcik7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCku
ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihfd2Vic2l0ZURhdGFTdG9yZS0+
c2Vzc2lvbklEKCksIHNlY3VyaXR5T3JpZ2luLT5fc2VjdXJpdHlPcmlnaW4tPnNlY3VyaXR5T3Jp
Z2luKCksIFtjb21wbGV0aW9uSGFuZGxlckNvcHldKGNvbnN0IFN0cmluZyYgZXJyb3JTdHJpbmcp
IHsKKyAgICAgICAgaWYgKGVycm9yU3RyaW5nLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXJDb3B5KG5pbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpA
IldLV2ViU2l0ZURhdGFTdG9yZSIgY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBOU0xv
Y2FsaXplZERlc2NyaXB0aW9uS2V5OihOU1N0cmluZyAqKWVycm9yU3RyaW5nIH1dKTsKKyAgICB9
KTsKK30KKworLSh2b2lkKV9nZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNz
aW9uczoodm9pZCheKShOU1NldDxXS1NlY3VyaXR5T3JpZ2luICo+ICopKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3b3JrUHJvY2Vzcygp
LmdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKF93ZWJzaXRlRGF0
YVN0b3JlLT5zZXNzaW9uSUQoKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29weV0oY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMpIHsKKyAgICAgICAgYXV0byBz
ZXQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om9yaWdp
bnMuc2l6ZSgpXSk7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykgeworICAg
ICAgICAgICAgYXV0byBhcGlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUob3Jp
Z2luKTsKKyAgICAgICAgICAgIFtzZXQgYWRkT2JqZWN0OndyYXBwZXIoYXBpT3JpZ2luLmdldCgp
KV07CisgICAgICAgIH0KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KHNldC5nZXQoKSk7
CisgICAgfSk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDhmYjQ4
NTFlYjAzOC4uYTEyYzZlYzIwYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTI4
LDYgKzI4LDcgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAorQGNsYXNzIFdLU2VjdXJp
dHlPcmlnaW47CiBAY2xhc3MgV0tXZWJWaWV3OwogQGNsYXNzIF9XS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NUaGlyZFBhcnR5OwogQGNsYXNzIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
OwpAQCAtMTA4LDcgKzEwOSw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tX
ZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAKIC0oYm9vbClfaGFzU2VydmljZVdvcmtl
ckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0odm9pZClfcHJvY2Vzc1B1c2hNZXNzYWdlOihO
U0RhdGEqKWRhdGEgcmVnaXN0cmF0aW9uOihOU1VSTCAqKXJlZ2lzdHJhdGlvbiBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCheKShib29sKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotCistKHZvaWQpX2RlbGV0ZVB1
c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0
eU9yaWdpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25I
YW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CistKHZvaWQpX2dldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25z
Oih2b2lkKF4pKE5TU2V0PFdLU2VjdXJpdHlPcmlnaW4gKj4gKikpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBl
bmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBjNTUzZjljYTcx
MjkuLjU4MWE1ZDlhNTE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNjU3LDYgKzE2NTcsMTYgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBzdGQ6Om9wdGkKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlv
blJlZ2lzdHJhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYm
IGNhbGxiYWNrKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OkRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24geyBzZXNzaW9uSUQs
IG9yaWdpbiB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6Z2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxT
ZWN1cml0eU9yaWdpbkRhdGE+Jik+JiYgY2FsbGJhY2spCit7CisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6R2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMgeyBzZXNzaW9uSUQgfSwgV1RGTW92ZShjYWxsYmFjaykpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
aW5kZXggYTRiNTQ1NjA5MDRlLi45OGQ5ZDgwYzI0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0yNzUsNiAr
Mjc1LDkgQEAgcHVibGljOgogICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lv
bklELCBzdGQ6Om9wdGlvbmFsPFNwYW48Y29uc3QgdWludDhfdD4+LCBjb25zdCBVUkwmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgd2FzUHJvY2Vzc2VkKT4mJik7CiAjZW5kaWYKIAorICAg
IHZvaWQgZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQQUw6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAgdm9pZCBnZXRPcmlnaW5zV2l0aFB1c2hBbmRO
b3RpZmljYXRpb25QZXJtaXNzaW9ucyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYpPiYmKTsKKwog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAppbmRleCBi
YzU0MDhjNjUxMzEuLmRiZmVmYjAxNTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcApAQCAtMzUsNiArMzUsMTEgQEAgV2ViTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXIoV2ViUGEKIHsKIH0KIAordm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXI6OnJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKGNvbnN0IFN0
cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpCit7CisgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXI6OnNob3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBj
b25zdCBTdHJpbmcmIGxhbmd1YWdlLCBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24gZGly
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0X3Qgbm90aWZpY2F0aW9u
SUQpCiB7CiAgICAgbV93ZWJQYWdlUHJveHkuc2hvd05vdGlmaWNhdGlvbih0aXRsZSwgYm9keSwg
aWNvblVSTCwgdGFnLCBsYW5ndWFnZSwgZGlyZWN0aW9uLCBvcmlnaW5TdHJpbmcsIG5vdGlmaWNh
dGlvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlci5oCmluZGV4IDZmMGZkNjg1NTk4ZS4uM2UwYTNjODRhZjVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKQEAgLTM2LDYgKzM2LDcg
QEAgY2xhc3MgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyIDogcHVibGljIE5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGEKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyKFdlYlBhZ2VQcm94eSYpOwogCisgICAgdm9p
ZCByZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2b2lkIHNob3dOb3RpZmlj
YXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBib2R5LCBjb25zdCBTdHJp
bmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBX
ZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5n
LCB1aW50NjRfdCBub3RpZmljYXRpb25JRCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxOb3RpZmlj
YXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJOb3Rp
ZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcAppbmRleCA1YzQ5MWNhMjViOWMuLjljOTcyYTZkMjFhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5o
IgpAQCAtODAsMTEgKzgxLDIzIEBAIHZvaWQgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOjpzdGFydFJlcXVlc3QoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhCiAgICAgaWYgKCFh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdE5vdGlmaWNhdGlv
blBlcm1pc3Npb24oc2VjdXJpdHlPcmlnaW4udG9TdHJpbmcoKSksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfSwgcGVybWlzc2lvbkhhbmRsZXIgPSBXVEZNb3ZlKHBlcm1pc3Np
b25IYW5kbGVyKSwgc2VjdXJpdHlPcmlnaW5dKGJvb2wgYWxsb3dlZCkgbXV0YWJsZSB7Ci0gICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFu
YWdlcj4oKS0+ZGlkVXBkYXRlTm90aWZpY2F0aW9uRGVjaXNpb24oc2VjdXJpdHlPcmlnaW4udG9T
dHJpbmcoKSwgYWxsb3dlZCk7CisgICAgbV9wYWdlLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb24oc2VjdXJpdHlP
cmlnaW4udG9TdHJpbmcoKSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwg
c2VjdXJpdHlPcmlnaW4sIHBlcm1pc3Npb25IYW5kbGVyID0gV1RGTW92ZShwZXJtaXNzaW9uSGFu
ZGxlcildKGJvb2wgYWxsb3dlZCkgbXV0YWJsZSB7CiAKLSAgICAgICAgYXV0byBwZXJtaXNzaW9u
SGFuZGxlcnMgPSBtX3JlcXVlc3RzUGVyT3JpZ2luLnRha2Uoc2VjdXJpdHlPcmlnaW4pOwotICAg
ICAgICBjYWxsUGVybWlzc2lvbkhhbmRsZXJzV2l0aChwZXJtaXNzaW9uSGFuZGxlcnMsIGFsbG93
ZWQgPyBQZXJtaXNzaW9uOjpHcmFudGVkIDogUGVybWlzc2lvbjo6RGVuaWVkKTsKKyAgICAgICAg
YXV0byBpbm5lclBlcm1pc3Npb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBzZWN1cml0eU9yaWdpbiwgcGVybWlzc2lvbkhhbmRsZXIgPSBXVEZNb3ZlKHBl
cm1pc3Npb25IYW5kbGVyKV0gKGJvb2wgYWxsb3dlZCkgbXV0YWJsZSB7CisgICAgICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+
KCktPmRpZFVwZGF0ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5n
KCksIGFsbG93ZWQpOworCisgICAgICAgICAgICBhdXRvIHBlcm1pc3Npb25IYW5kbGVycyA9IG1f
cmVxdWVzdHNQZXJPcmlnaW4udGFrZShzZWN1cml0eU9yaWdpbik7CisgICAgICAgICAgICBjYWxs
UGVybWlzc2lvbkhhbmRsZXJzV2l0aChwZXJtaXNzaW9uSGFuZGxlcnMsIGFsbG93ZWQgPyBQZXJt
aXNzaW9uOjpHcmFudGVkIDogUGVybWlzc2lvbjo6RGVuaWVkKTsKKyAgICAgICAgfTsKKworI2lm
IEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQorICAgICAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5idWlsdEluTm90aWZpY2F0aW9uc0VuYWJsZWQo
KSAmJiBhbGxvd2VkKSB7CisgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OlJlcXVlc3RT
eXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5nKCkpLCBX
VEZNb3ZlKGlubmVyUGVybWlzc2lvbkhhbmRsZXIpLCBtX3BhZ2UtPnNlc3Npb25JRCgpLnRvVUlu
dDY0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisjZWxzZQorICAgICAgICBp
bm5lclBlcm1pc3Npb25IYW5kbGVyKGFsbG93ZWQpOworI2VuZGlmCiAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oIGIvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKaW5kZXggYTk0ZWRkNGUzMjlmLi4wMDA1
ZmFlOGQ4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1v
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpbmNsdWRlICJXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9PU09iamVjdFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CiAjaW5jbHVkZSA8d3RmL3Nw
aS9kYXJ3aW4vWFBDU1BJLmg+CkBAIC00OCwxMiArNDksMTcgQEAgcHVibGljOgogCiAgICAgLy8g
TWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgZWNob1R3aWNlKGNvbnN0IFN0cmluZyYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgcmVwbHlTZW5kZXIpOworICAgIHZv
aWQgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiByZXBseVNlbmRlcik7CisgICAgdm9pZCBnZXRP
cmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+JiYgcmVwbHlTZW5kZXIpOworICAgIHZvaWQg
ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIG9yaWdp
blN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiByZXBseVNl
bmRlcik7CiAKIHByaXZhdGU6CiAgICAgRGFlbW9uKCkgPSBkZWZhdWx0OwogCiAgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4gY3JlYXRlUmVwbHlTZW5kZXIoTWVz
c2FnZVR5cGUsIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4mJiByZXF1ZXN0KTsKICAgICB2b2lk
IGRlY29kZUFuZEhhbmRsZU1lc3NhZ2UoTWVzc2FnZVR5cGUsIFNwYW48Y29uc3QgdWludDhfdD4g
ZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+
JiYpOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1faW5NZW1vcnlPcmlnaW5TdHJpbmdzV2l0aFBl
cm1pc3Npb25Gb3JUZXN0aW5nOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQppbmRleCA1NmEwNzBjYjFkNjUuLmZjODI2
ODEzNjkwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQpAQCAtNTMs
NiArNTMsMjEgQEAgQVJHVU1FTlRTKFN0cmluZykKIFJFUExZKFN0cmluZykKIEVORAogCitGVU5D
VElPTihnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucykKK0FSR1VN
RU5UUygpCitSRVBMWShjb25zdCBWZWN0b3I8U3RyaW5nPiYpCitFTkQKKworRlVOQ1RJT04oZGVs
ZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbikKK0FSR1VNRU5UUyhTdHJpbmcpCitS
RVBMWShTdHJpbmcpCitFTkQKKworRlVOQ1RJT04ocmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBl
cm1pc3Npb24pCitBUkdVTUVOVFMoU3RyaW5nKQorUkVQTFkoYm9vbCkKK0VORAorCiAjdW5kZWYg
RlVOQ1RJT04KICN1bmRlZiBBUkdVTUVOVFMKICN1bmRlZiBSRVBMWQpAQCAtNjUsNiArODAsMjcg
QEAgV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGVjaG9Ud2ljZTo6ZW5jb2RlUmVwbHkoU3RyaW5n
IHJlcGx5KQogICAgIHJldHVybiBlbmNvZGVyLnRha2VCdWZmZXIoKTsKIH0KIAorV2ViUHVzaEQ6
OkVuY29kZWRNZXNzYWdlIGdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Np
b25zOjplbmNvZGVSZXBseShjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVwbHkpCit7CisgICAgV2Vi
S2l0OjpEYWVtb246OkVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8IHJlcGx5OworICAg
IHJldHVybiBlbmNvZGVyLnRha2VCdWZmZXIoKTsKK30KKworV2ViUHVzaEQ6OkVuY29kZWRNZXNz
YWdlIGRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246OmVuY29kZVJlcGx5KFN0
cmluZyByZXBseSkKK3sKKyAgICBXZWJLaXQ6OkRhZW1vbjo6RW5jb2RlciBlbmNvZGVyOworICAg
IGVuY29kZXIgPDwgcmVwbHk7CisgICAgcmV0dXJuIGVuY29kZXIudGFrZUJ1ZmZlcigpOworfQor
CitXZWJQdXNoRDo6RW5jb2RlZE1lc3NhZ2UgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1p
c3Npb246OmVuY29kZVJlcGx5KGJvb2wgcmVwbHkpCit7CisgICAgV2ViS2l0OjpEYWVtb246OkVu
Y29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8IHJlcGx5OworICAgIHJldHVybiBlbmNvZGVy
LnRha2VCdWZmZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgTWVzc2FnZUluZm8KIAogdGVtcGxh
dGU8dHlwZW5hbWUgSW5mbz4KQEAgLTE0MSw2ICsxNzcsMTUgQEAgdm9pZCBEYWVtb246OmRlY29k
ZUFuZEhhbmRsZU1lc3NhZ2UoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFNwYW48Y29uc3QgdWlu
dDhfdD4KICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpFY2hvVHdpY2U6CiAgICAgICAgIGhhbmRsZVdl
YlB1c2hETWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6ZWNob1R3aWNlPihlbmNvZGVkTWVz
c2FnZSwgV1RGTW92ZShyZXBseVNlbmRlcikpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpHZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9uczoK
KyAgICAgICAgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjpnZXRP
cmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucz4oZW5jb2RlZE1lc3NhZ2Us
IFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZXNzYWdl
VHlwZTo6RGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbjoKKyAgICAgICAgaGFu
ZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjpkZWxldGVQdXNoQW5kTm90
aWZpY2F0aW9uUmVnaXN0cmF0aW9uPihlbmNvZGVkTWVzc2FnZSwgV1RGTW92ZShyZXBseVNlbmRl
cikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpSZXF1ZXN0U3lzdGVt
Tm90aWZpY2F0aW9uUGVybWlzc2lvbjoKKyAgICAgICAgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0
aFJlcGx5PE1lc3NhZ2VJbmZvOjpyZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbj4o
ZW5jb2RlZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgfQogfQogCkBAIC0xNDksNCArMTk0LDI5IEBAIHZvaWQgRGFlbW9uOjplY2hvVHdpY2UoY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluCiAg
ICAgcmVwbHlTZW5kZXIobWFrZVN0cmluZyhtZXNzYWdlLCBtZXNzYWdlKSk7CiB9CiAKK3ZvaWQg
RGFlbW9uOjpyZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcm
IG9yaWdpblN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiByZXBseVNlbmRl
cikKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBmb3IgYW4gQVBJIHRlc3RpbmcgY2hlY2twb2lu
dAorICAgIC8vIE5leHQgc3RlcCBpcyBhY3R1YWxseSBwZXJmb3JtIGEgcGVyc2lzdGVudCBwZXJt
aXNzaW9ucyByZXF1ZXN0IG9uIGEgcGVyLXBsYXRmb3JtIGJhc2lzCisgICAgbV9pbk1lbW9yeU9y
aWdpblN0cmluZ3NXaXRoUGVybWlzc2lvbkZvclRlc3RpbmcuYWRkKG9yaWdpblN0cmluZyk7Cisg
ICAgcmVwbHlTZW5kZXIodHJ1ZSk7Cit9CisKK3ZvaWQgRGFlbW9uOjpnZXRPcmlnaW5zV2l0aFB1
c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFZlY3RvcjxTdHJpbmc+Jik+JiYgcmVwbHlTZW5kZXIpCit7CisgICAgLy8gRklYTUU6IFRoaXMg
aXMgZm9yIGFuIEFQSSB0ZXN0aW5nIGNoZWNrcG9pbnQKKyAgICAvLyBOZXh0IHN0ZXAgaXMgYWN0
dWFsbHkgZ2F0aGVyIHBlcnNpc3RlbnQgcGVybWlzc2lvbnMgZnJvbSB0aGUgc3lzdGVtIG9uIGEg
cGVyLXBsYXRmb3JtIGJhc2lzCisgICAgcmVwbHlTZW5kZXIoY29weVRvVmVjdG9yKG1faW5NZW1v
cnlPcmlnaW5TdHJpbmdzV2l0aFBlcm1pc3Npb25Gb3JUZXN0aW5nKSk7Cit9CisKK3ZvaWQgRGFl
bW9uOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYg
b3JpZ2luU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHJl
cGx5U2VuZGVyKQoreworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGZvciBhbiBBUEkgdGVzdGluZyBj
aGVja3BvaW50CisgICAgLy8gTmV4dCBzdGVwIGlzIGFjdHVhbGx5IGRlbGV0ZSBhbnkgcGVyc2lz
dGVudCBwZXJtaXNzaW9ucyBvbiBhIHBlci1wbGF0Zm9ybSBiYXNpcworICAgIGlmIChtX2luTWVt
b3J5T3JpZ2luU3RyaW5nc1dpdGhQZXJtaXNzaW9uRm9yVGVzdGluZy5yZW1vdmUob3JpZ2luU3Ry
aW5nKSkKKyAgICAgICAgcmVwbHlTZW5kZXIoIiIpOworICAgIGVsc2UKKyAgICAgICAgcmVwbHlT
ZW5kZXIobWFrZVN0cmluZygiT3JpZ2luICIsIG9yaWdpblN0cmluZywgIiBub3QgcmVnaXN0ZXJl
ZCBmb3IgcHVzaCBvciBub3RpZmljYXRpb25zIikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJQ
dXNoRApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDA4OTk3NzViOWY4OS4uNzkzZWI2YjMyNDllIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTAtMzEgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIHdlYnB1c2hkOiBBZGQgbW9j
ayBpbi1tZW1vcnkgcmVnaXN0cmF0aW9uLCBhbmQgdGhlIFdLV2Vic2l0ZURhdGFTdG9yZSBTUEkg
dG8gbWFuYWdlIHRoZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMjUzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1t
OgorICAgICAgICAoLVtOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVsZWdhdGUgX3dlYlZpZXc6cmVx
dWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRs
ZXI6XSk6CisgICAgICAgICgtW05vdGlmaWNhdGlvblBlcm1pc3Npb25EZWxlZ2F0ZSB3ZWJWaWV3
OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRoZW4pOgorCiAyMDIx
LTEwLTI2ICBSb3kgUmVhcG9yICA8cnJlYXBvckBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0
cHkvYXV0b2luc3RhbGxlZC9weW9iamNfZnJhbWV3b3Jrcy5weSBzaG91bGQgbm90IGF1dG9pbnN0
YWxsIGZyYW1ld29ya3MgaWYgdGhleSBjYW4gYmUgaW1wb3J0ZWQgd2l0aG91dCBleGNlcHRpb25z
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1
c2hEYWVtb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1
c2hEYWVtb24ubW0KaW5kZXggODYzNzVlNDFkYTMwLi4xNjhkNDZmZjMyZmMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24u
bW0KQEAgLTI2LDYgKzI2LDI5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKIAogI2ltcG9ydCAiRGFl
bW9uVGVzdFV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKKyNp
bXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2
YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5oPgorCitzdGF0
aWMgYm9vbCBhbGVydFJlY2VpdmVkID0gZmFsc2U7CitAaW50ZXJmYWNlIE5vdGlmaWNhdGlvblBl
cm1pc3Npb25EZWxlZ2F0ZSA6IE5TT2JqZWN0PFdLVUlEZWxlZ2F0ZVByaXZhdGU+CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVsZWdhdGUKKworLSAodm9p
ZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlz
c2lvbkZvclNlY3VyaXR5T3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4g
ZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICBk
ZWNpc2lvbkhhbmRsZXIodHJ1ZSk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1l
c3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhbGVydFJlY2Vp
dmVkID0gdHJ1ZTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCitAZW5kCiAKIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAtMTQ3LDYgKzE3MCw3NSBAQCBURVNUKFdlYlB1c2hE
LCBCYXNpY0NvbW11bmljYXRpb24pCiAgICAgY2xlYW5VcFRlc3RXZWJQdXNoRCh0ZW1wRGlyKTsK
IH0KIAorc3RhdGljIGNvbnN0IGNoYXIqIG1haW5CeXRlcyA9IFIiV0VCUFVTSFJFU09VUkNFKAor
PHNjcmlwdD4KKyAgICBOb3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24oKS50aGVuKCgpID0+
IHsgYWxlcnQoImRvbmUiKSB9KQorPC9zY3JpcHQ+CispV0VCUFVTSFJFU09VUkNFIjsKKworVEVT
VChXZWJQdXNoRCwgUGVybWlzc2lvbk1hbmFnZW1lbnQpCit7CisgICAgTlNVUkwgKnRlbXBEaXJl
Y3RvcnkgPSBzZXRVcFRlc3RXZWJQdXNoRCgpOworCisgICAgYXV0byBkYXRhU3RvcmVDb25maWd1
cmF0aW9uID0gYWRvcHROUyhbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gbmV3XSk7
CisgICAgZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS53ZWJQdXNoTWFjaFNlcnZpY2VOYW1l
ID0gQCJvcmcud2Via2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2UiOworICAgIGF1dG8gZGF0
YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29u
ZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGRhdGFTdG9y
ZS5nZXQoKTsKKyAgICBmb3IgKF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUgKmZlYXR1cmUgaW4gW1dL
UHJlZmVyZW5jZXMgX2V4cGVyaW1lbnRhbEZlYXR1cmVzXSkgeworICAgICAgICBpZiAoW2ZlYXR1
cmUua2V5IGlzRXF1YWxUb1N0cmluZzpAIkJ1aWx0SW5Ob3RpZmljYXRpb25zRW5hYmxlZCJdKQor
ICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMg
Zm9yRmVhdHVyZTpmZWF0dXJlXTsKKyAgICB9CisKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5T
KFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlv
biBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdGlu
ZyJdOworCisgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpeKFdLV2Vi
VmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICAgICAgYXV0byByZXNwb25z
ZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVl
c3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0
RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVz
cG9uc2UuZ2V0KCldOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6bWFpbkJ5dGVzIGxlbmd0aDpzdHJsZW4obWFpbkJ5dGVzKV1dOworICAgICAgICBb
dGFzayBkaWRGaW5pc2hdOworICAgIH1dOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB1aURl
bGVnYXRlID0gYWRvcHROUyhbW05vdGlmaWNhdGlvblBlcm1pc3Npb25EZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5nZXQoKV07CisK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdGluZzovL21haW4vaW5kZXguaHRtbCJdXV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZhbGVydFJlY2VpdmVkKTsKKworICAgIHN0YXRpYyBi
b29sIG9yaWdpbk9wZXJhdGlvbkRvbmUgPSBmYWxzZTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPFdL
U2VjdXJpdHlPcmlnaW4+IG9yaWdpbjsKKyAgICBbZGF0YVN0b3JlIF9nZXRPcmlnaW5zV2l0aFB1
c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9uczpeKE5TU2V0PFdLU2VjdXJpdHlPcmlnaW4gKj4g
Km9yaWdpbnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKFtvcmlnaW5zIGNvdW50XSwgMXUpOworICAg
ICAgICBvcmlnaW4gPSBbb3JpZ2lucyBhbnlPYmplY3RdOworICAgICAgICBvcmlnaW5PcGVyYXRp
b25Eb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
b3JpZ2luT3BlcmF0aW9uRG9uZSk7CisKKyAgICBFWFBFQ1RfVFJVRShbb3JpZ2luLmdldCgpLnBy
b3RvY29sIGlzRXF1YWxUb1N0cmluZzpAInRlc3RpbmciXSk7CisgICAgRVhQRUNUX1RSVUUoW29y
aWdpbi5nZXQoKS5ob3N0IGlzRXF1YWxUb1N0cmluZzpAIm1haW4iXSk7CisKKyAgICBvcmlnaW5P
cGVyYXRpb25Eb25lID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfZGVsZXRlUHVzaEFuZE5vdGlm
aWNhdGlvblJlZ2lzdHJhdGlvbjpvcmlnaW4uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vy
cm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfRkFMU0UoISFlcnJvcik7CisgICAgICAgIG9y
aWdpbk9wZXJhdGlvbkRvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZvcmlnaW5PcGVyYXRpb25Eb25lKTsKKworICAgIG9yaWdpbk9wZXJhdGlvbkRv
bmUgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9nZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmlj
YXRpb25QZXJtaXNzaW9uczpeKE5TU2V0PFdLU2VjdXJpdHlPcmlnaW4gKj4gKm9yaWdpbnMpIHsK
KyAgICAgICAgRVhQRUNUX0VRKFtvcmlnaW5zIGNvdW50XSwgMHUpOworICAgICAgICBvcmlnaW5P
cGVyYXRpb25Eb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJm9yaWdpbk9wZXJhdGlvbkRvbmUpOworCisgICAgY2xlYW5VcFRlc3RXZWJQdXNoRCh0ZW1w
RGlyZWN0b3J5KTsKK30KKwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQo=
</data>
<flag name="commit-queue"
          id="467567"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442995</attachid>
            <date>2021-11-01 11:09:41 -0700</date>
            <delta_ts>2021-11-01 12:31:53 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>37958</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbm90aWZpY2F0aW9ucy9yZXF1ZXN0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL25vdGlmaWNhdGlvbnMvcmVxdWVzdC5odG1s
CmluZGV4IGQ2NWMxM2VkMDNiOC4uOGJiYzc5ZDY3OTA0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL25vdGlmaWNhdGlvbnMvcmVxdWVzdC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbm90aWZpY2F0aW9ucy9yZXF1ZXN0Lmh0bWwKQEAgLTEsNCArMSw1IEBACiA8
IURPQ1RZUEUgaHRtbD4KKzwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgQnVpbHRJbk5vdGlmaWNh
dGlvbnM9ZmFsc2UgXSAtLT4KIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL25vdGlmaWNhdGlvbnMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVm
Mzc0M2QwNDk2YS4uYzA3YmVmOTFkNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDIx
LTEwLTMxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICB3ZWJw
dXNoZDogQWRkIG1vY2sgaW4tbWVtb3J5IHJlZ2lzdHJhdGlvbiwgYW5kIHRoZSBXS1dlYnNpdGVE
YXRhU3RvcmUgU1BJIHRvIG1hbmFnZSB0aGVtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI1MzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0LgorICAgICAgICAKKyAgICAg
ICAgVGhlIG9sZCBTUEkgdG8gYXNrIHRoZSBjbGllbnQgaWYgbm90aWZpY2F0aW9ucyBzaG91bGQg
YmUgYWxsb3dlZCB3aWxsIHJlbWFpbi4KKyAgICAgICAgCisgICAgICAgIEFzc3VtaW5nIHRoZSBj
bGllbnQgb2theXMgbm90aWZpY2F0aW9ucywgaW4gdGhlIGNhc2Ugb2YgYnVpbHQtaW4gbm90aWZp
Y2F0aW9ucywgdGhlICphY3R1YWwqCisgICAgICAgIHJlZ2lzdHJhdGlvbiBpbnRlcmFjdGlvbiB3
aXRoIHRoZSBzeXN0ZW0gd2lsbCB0YWtlIHBsYWNlIGFzIGFuIGFkZGl0aW9uYWwgc3RlcCBpbiB3
ZWJwdXNoZAorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaDoKKyAgICAgICAgLSBBZGRzIGlu
LW1lbW9yeSBub3RpZmljYXRpb24gcmVnaXN0cmF0aW9uIGZvciB3ZWJwdXNoZAorICAgICAgICAt
IEFkZHMgU1BJIHRvIFdLV2Vic2l0ZURhdGFTdG9yZSB0byBtYW5hZ2UgcmVnaXN0cmF0aW9ucwor
ICAgICAgICAtIFRlc3RzIHRoZSBTUEkKKyAgICAgICAgCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtQcm9jZXNzOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNz
aW9ucyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uOjpub3RpZmljYXRpb25NYW5hZ2VyKToKKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6cmVxdWVzdFN5c3RlbU5v
dGlmaWNhdGlvblBlcm1pc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0
aW9uTWFuYWdlcjo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpnZXRPcmlnaW5zV2l0aFB1
c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6OlJlcGx5Q2Fs
bGVyPGJvb2w+OjpjYWxsUmVwbHkpOgorICAgICAgICAoV2ViS2l0OjpSZXBseUNhbGxlcjxWZWN0
b3I8U3RyaW5nPjo6Y2FsbFJlcGx5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisKKyAgICAgICAgKiBTaGFyZWQv
QVBJL0FQSVNlY3VyaXR5T3JpZ2luLmg6CisgICAgICAgIChBUEk6OlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUpOgorCisgICAgICAgICogU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyLmg6CisgICAgICAgICogU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluOgorCisgICAgICAgICog
U2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHVz
aEQ6Om1lc3NhZ2VUeXBlU2VuZHNSZXBseSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3Jl
IF9kZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldE9yaWdpbnNXaXRoUHVzaEFu
ZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRPcmlnaW5zV2l0aFB1c2hBbmRO
b3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpyZXF1ZXN0U3lzdGVtTm90
aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmg6CisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyOjpzdGFydFJlcXVlc3QpOgorCisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5o
OgorICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChXZWJQdXNo
RDo6TWVzc2FnZUluZm86OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Np
b25zOjplbmNvZGVSZXBseSk6CisgICAgICAgIChXZWJQdXNoRDo6TWVzc2FnZUluZm86OmRlbGV0
ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246OmVuY29kZVJlcGx5KToKKyAgICAgICAg
KFdlYlB1c2hEOjpNZXNzYWdlSW5mbzo6cmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Np
b246OmVuY29kZVJlcGx5KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmRlY29kZUFuZEhh
bmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6cmVxdWVzdFN5c3RlbU5v
dGlmaWNhdGlvblBlcm1pc3Npb24pOgorICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6Z2V0T3Jp
Z2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMpOgorICAgICAgICAoV2ViUHVz
aEQ6OkRhZW1vbjo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbik6CisKIDIw
MjEtMTAtMjYgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAg
ICAgICAgTmV0d29ya1Byb2Nlc3M6OnVwZGF0ZUJ1bmRsZUlkZW50aWZpZXIsIGEgdGVzdGluZyBm
dW5jdGlvbiwgb3ZlcnJpZGVzIHRoZSBhY3R1YWwgYnVuZGxlSUQgaW5zdGVhZCBvZiB0aGUgb3Zl
cnJpZGUgdmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggZDM4ZTlhNjBjOTliLi5mNzZlZDI0MWRlZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNTI3LDYgKzI1
MjcsMjggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3Qgc3RkOjpvcHQKIH0KICNlbmRpZiAvLyBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRlbGV0ZVB1c2hBbmROb3RpZmlj
YXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjYWxsYmFjaykKK3sKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKKyAg
ICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAg
ICAgc2Vzc2lvbi0+bm90aWZpY2F0aW9uTWFuYWdlcigpLmRlbGV0ZVB1c2hBbmROb3RpZmljYXRp
b25SZWdpc3RyYXRpb24ob3JpZ2luLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKKyAgICBjYWxsYmFjaygiQ2Fubm90IGZpbmQgbmV0d29yayBzZXNz
aW9uIik7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldE9yaWdpbnNXaXRoUHVzaEFuZE5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYp
PiYmIGNhbGxiYWNrKQoreworI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQorICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAg
ICBzZXNzaW9uLT5ub3RpZmljYXRpb25NYW5hZ2VyKCkuZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90
aWZpY2F0aW9uUGVybWlzc2lvbnMoV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICByZXR1cm47
CisgICAgfQorI2VuZGlmCisgICAgY2FsbGJhY2soeyB9KTsKK30KKwogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVxdWVzdFN0b3JhZ2VTcGFjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IENsaWVudE9yaWdpbiYgb3JpZ2luLCB1aW50NjRfdCBxdW90YSwgdWludDY0X3QgY3VycmVudFNp
emUsIHVpbnQ2NF90IHNwYWNlUmVxdWlyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4pPiYmIGNhbGxiYWNrKQogewogICAgIHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6UmVxdWVzdFN0b3JhZ2VTcGFjZSB7IHNlc3Npb25JRCwgb3JpZ2luLCBxdW90YSwgY3VycmVu
dFNpemUsIHNwYWNlUmVxdWlyZWQgfSwgV1RGTW92ZShjYWxsYmFjayksIDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGUwMmNiZGY3ODAz
MS4uNTc3OTlhYzA0MzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCkBAIC00MDAsNiArNDAwLDkgQEAgcHVibGljOgogICAgIHZvaWQgcHJvY2Vz
c1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0
YVJlZmVyZW5jZT4mLCBVUkwmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAj
ZW5kaWYKIAorICAgIHZvaWQgZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQ
QUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CisgICAgdm9pZCBnZXRPcmlnaW5z
V2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiYpPiYmKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQ
cm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IGMwNjYxZWM1NzQ2YS4uMzJhYjM4NDBiNjZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTIwOCw0ICsyMDgsNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIFByb2Nlc3NQdXNoTWVzc2Fn
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJl
bmNlPiBkYXRhLCBVUkwgcmVnaXN0cmF0aW9uVVJMKSAtPiAoYm9vbCBkaWRTdWNjZWVkKSBBc3lu
YwogI2VuZGlmCisgICAgRGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
b3JpZ2luKSAtPiAoU3RyaW5nIGVycm9yTWVzc2FnZSkgQXN5bmMKKyAgICBHZXRPcmlnaW5zV2l0
aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+IChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zKSBBc3luYwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4
IGZlNGRiMDUwMzcwZi4uM2RkZGY0YjMyODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xOTEsNiArMTkxLDEwIEBAIHB1YmxpYzoKIAog
ICAgIFN0cmluZyBhdHRyaWJ1dGVkQnVuZGxlSWRlbnRpZmllckZyb21QYWdlSWRlbnRpZmllcihX
ZWJQYWdlUHJveHlJZGVudGlmaWVyKSBjb25zdDsKIAorI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJ
RklDQVRJT05TKQorICAgIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyJiBub3RpZmljYXRpb25N
YW5hZ2VyKCkgeyByZXR1cm4gbV9ub3RpZmljYXRpb25NYW5hZ2VyOyB9CisjZW5kaWYKKwogcHJv
dGVjdGVkOgogICAgIE5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiwgY29uc3QgTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggNWZlMTIxOWJkYzc1Li4yMjBjNjQzM2QxMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9O
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRhZW1vbkRlY29kZXIuaCIKICNpbmNsdWRlICJEYWVt
b25FbmNvZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtNDIsNiArNDMsMjggQEAgTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXI6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3Jr
U2UKICAgICAgICAgbV9jb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJQdXNoRDo6Q29ubmVjdGlv
bj4od2ViUHVzaE1hY2hTZXJ2aWNlTmFtZS51dGY4KCksICp0aGlzKTsKIH0KIAordm9pZCBOZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6cmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Np
b24oY29uc3QgU3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2Vi
UHVzaEQ6Ok1lc3NhZ2VUeXBlOjpSZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbj4o
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG9yaWdpblN0cmluZyk7Cit9CisKK3ZvaWQgTmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3Ry
YXRpb24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgc2VuZE1l
c3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpEZWxldGVQdXNoQW5kTm90aWZp
Y2F0aW9uUmVnaXN0cmF0aW9uPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgb3JpZ2luLnRv
U3RyaW5nKCkpOworfQorCit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpnZXRPcmln
aW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+Jik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4gcmVw
bHlIYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIChWZWN0b3I8U3RyaW5nPiBvcmlnaW5TdHJpbmdzKSBtdXRhYmxlIHsKKyAgICAgICAgVmVj
dG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2luczsKKyAgICAgICAgZm9yIChhdXRvJiBvcmln
aW5TdHJpbmcgOiBvcmlnaW5TdHJpbmdzKQorICAgICAgICAgICAgb3JpZ2lucy5hcHBlbmQoU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKHsgeyB9LCBvcmlnaW5TdHJpbmcgfSkpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG9yaWdpbnMpKTsKKyAgICB9OworCisgICAgc2Vu
ZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpHZXRPcmlnaW5zV2l0aFB1
c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucz4oV1RGTW92ZShyZXBseUhhbmRsZXIpKTsKK30K
Kwogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNhdGlvbihjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24sIGNvbnN0IFN0cmlu
ZyYsIHVpbnQ2NF90KQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQpAQCAtNzYsNyArOTksNiBA
QCB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9u
KHVpbnQ2NF90KQogICAgICAgICByZXR1cm47CiB9CiAKLQogdGVtcGxhdGU8V2ViUHVzaEQ6Ok1l
c3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgogdm9pZCBOZXR3b3JrTm90
aWZpY2F0aW9uTWFuYWdlcjo6c2VuZE1lc3NhZ2UoQXJncyYmLi4uIGFyZ3MpIGNvbnN0CiB7CkBA
IC05Myw2ICsxMTUsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjw+IHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9CiB9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBS
ZXBseUNhbGxlcjxTdHJpbmc+IHsKICAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGFlbW9uOjpE
ZWNvZGVyJiYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiAgICAgewpAQCAtMTA0LDYgKzEyNywzOSBAQCB0ZW1wbGF0ZTw+IHN0
cnVjdCBSZXBseUNhbGxlcjxTdHJpbmc+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVj
dCBSZXBseUNhbGxlcjxjb25zdCBTdHJpbmcmPiB7CisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5
KERhZW1vbjo6RGVjb2RlciYmIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
U3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gc3RyaW5nOworICAgICAgICBkZWNvZGVyID4+IHN0cmluZzsKKyAgICAgICAg
aWYgKCFzdHJpbmcpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqc3RyaW5nKSk7CisgICAgfQorfTsK
KwordGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8Ym9vbD4geworICAgIHN0YXRpYyB2b2lk
IGNhbGxSZXBseShEYWVtb246OkRlY29kZXImJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRp
b25hbDxib29sPiBib29sZWFuOworICAgICAgICBkZWNvZGVyID4+IGJvb2xlYW47CisgICAgICAg
IGlmICghYm9vbGVhbikKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxz
ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCpib29sZWFuKTsKKyAgICB9Cit9OworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxWZWN0b3I8U3RyaW5nPiYmPiB7CisgICAgc3Rh
dGljIHZvaWQgY2FsbFJlcGx5KERhZW1vbjo6RGVjb2RlciYmIGRlY29kZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBzdHJpbmdzOworICAgICAg
ICBkZWNvZGVyID4+IHN0cmluZ3M7CisgICAgICAgIGlmICghc3RyaW5ncykKKyAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKCpzdHJpbmdzKSk7CisgICAgfQorfTsKKwogdGVtcGxhdGU8V2ViUHVzaEQ6Ok1l
c3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzLCB0eXBlbmFtZS4uLiBSZXBs
eUFyZ3M+CiB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZVdpdGhS
ZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcGx5QXJncy4uLik+JiYgY29tcGxldGlvbkhh
bmRsZXIsIEFyZ3MmJi4uLiBhcmdzKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCA2ZmE4NzU2ODRjNzguLjk1NDkwMjYzNGMyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTMyLDYgKzMy
LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EaXJlY3Rpb24uaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0
IFNlY3VyaXR5T3JpZ2luRGF0YTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFj
ZSBXZWJQdXNoRCB7CkBAIC00Niw5ICs1MCwxMyBAQCBjbGFzcyBOZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlciA6IHB1YmxpYyBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIgewogcHVi
bGljOgogICAgIE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbmV0d29ya1Nlc3Npb247IH0KIAorICAgIHZvaWQgZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlv
blJlZ2lzdHJhdGlvbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKKyAgICB2b2lkIGdldE9yaWdpbnNX
aXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CisKIHByaXZh
dGU6CiAgICAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBjb25z
dCBTdHJpbmcmIHdlYlB1c2hNYWNoU2VydmljZU5hbWUpOwogCisgICAgdm9pZCByZXF1ZXN0U3lz
dGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBzaG93Tm90aWZp
Y2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3Ry
aW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBsYW5nLCBXZWJD
b3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCB1
aW50NjRfdCBub3RpZmljYXRpb25JRCkgZmluYWw7CiAgICAgdm9pZCBjYW5jZWxOb3RpZmljYXRp
b24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJOb3RpZmlj
YXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcykgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VjdXJpdHlPcmlnaW4uaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZWN1cml0eU9yaWdpbi5oCmluZGV4IGYxMzkz
MDdlYjllNy4uM2FlZGQ0YzIyN2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
U2VjdXJpdHlPcmlnaW4uaApAQCAtNDgsNiArNDgsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbi5kYXRhKCkuaXNv
bGF0ZWRDb3B5KCkpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgUmVmPFNlY3VyaXR5T3JpZ2luPiBj
cmVhdGUoY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRh
dGEpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZWN1cml0eU9yaWdpbihz
ZWN1cml0eU9yaWdpbkRhdGEuaXNvbGF0ZWRDb3B5KCkpKTsKKyAgICB9CisKICAgICBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9zZWN1cml0eU9yaWdpbjsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyLmgKaW5kZXggYjc4OGZkZGIxZGIxLi5lMTA5MjBlOTBkOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaApAQCAtMzUsNiArMzUs
NyBAQCBjbGFzcyBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIgOiBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlcigpID0gZGVmYXVsdDsKIAorICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNob3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBi
b2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkwsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJp
bmcmIGxhbmd1YWdlLCBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24sIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luU3RyaW5nLCB1aW50NjRfdCBub3RpZmljYXRpb25JRCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIG5vdGlmaWNhdGlvbklEcykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbgppbmRleCBkZDc1ZTMzOGI2ZTUuLmQ1ODkw
ZWRjM2Q1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXIubWVzc2FnZXMuaW4KQEAgLTIxLDYgKzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVz
c2FnZXMgLT4gTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyIE5vdFJlZkNvdW50ZWQg
eworICAgIFJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKFN0cmluZyBvcmlnaW5J
ZGVudGlmaWVyKSAtPiAoYm9vbCBhbGxvd2VkKSBBc3luYwogICAgIFNob3dOb3RpZmljYXRpb24o
U3RyaW5nIHRpdGxlLCBTdHJpbmcgYm9keSwgU3RyaW5nIGljb25VUkwsIFN0cmluZyB0YWcsIFN0
cmluZyBsYW5ndWFnZSwgZW51bTp1aW50OF90IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkRpcmVjdGlv
biBkaXJlY3Rpb24sIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyLCB1aW50NjRfdCBub3RpZmljYXRp
b25JRCkKICAgICBDYW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpCiAg
ICAgQ2xlYXJOb3RpZmljYXRpb25zKFZlY3Rvcjx1aW50NjRfdD4gbm90aWZpY2F0aW9uSURzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oCmluZGV4IGRk
NzBmZDM0ZjJkNC4uZDUyNzI2MmRiYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHVzaERhZW1vbkNvbnN0YW50cy5oCkBAIC0zNywxMiArMzcsMTggQEAgY29uc3RleHByIGNvbnN0
IGNoYXIqIHByb3RvY29sRGVidWdNZXNzYWdlTGV2ZWxLZXkgeyAiZGVidWcgbWVzc2FnZSBsZXZl
bCIgfTsKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbE1lc3NhZ2VUeXBlS2V5IHsgIm1l
c3NhZ2UgdHlwZSIgfTsKIGVudW0gY2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBF
Y2hvVHdpY2UgPSAxLAorICAgIFJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uLAor
ICAgIERlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24sCisgICAgR2V0T3JpZ2lu
c1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMsCiB9OwogCiBpbmxpbmUgYm9vbCBt
ZXNzYWdlVHlwZVNlbmRzUmVwbHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUpCiB7CiAgICAgc3dp
dGNoIChtZXNzYWdlVHlwZSkgewogICAgIGNhc2UgTWVzc2FnZVR5cGU6OkVjaG9Ud2ljZToKKyAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpHZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJt
aXNzaW9uczoKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpEZWxldGVQdXNoQW5kTm90aWZpY2F0aW9u
UmVnaXN0cmF0aW9uOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OlJlcXVlc3RTeXN0ZW1Ob3RpZmlj
YXRpb25QZXJtaXNzaW9uOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA5YmE2OWY3ZDA2YTUuLmUyYjA3MzY0
NjRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0zMSw5ICszMSwxMSBAQAogI2ltcG9ydCAiQ29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3NQcm94eS5o
IgogI2ltcG9ydCAiU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLmgiCisjaW1wb3J0ICJXS0Vy
cm9yLmgiCiAjaW1wb3J0ICJXS0hUVFBDb29raWVTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJX
S05TQXJyYXkuaCIKICNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgor
I2ltcG9ydCAiV0tTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgiCiAjaW1w
b3J0ICJXZWJQYWdlUHJveHkuaCIKQEAgLTc3MCw0ICs3NzIsMjkgQEAgc3RhdGljIFZlY3RvcjxX
ZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiB0b1dlYnNpdGVEYXRhUmVjb3JkcyhOU0FycmF5ICpk
YXRhUmVjb3IKICNlbmRpZgogfQogCistKHZvaWQpX2RlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25S
ZWdpc3RyYXRpb246KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9yaWdpbiBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCheKShOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIp
OworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLmRlbGV0ZVB1c2hBbmRO
b3RpZmljYXRpb25SZWdpc3RyYXRpb24oX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBz
ZWN1cml0eU9yaWdpbi0+X3NlY3VyaXR5T3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLCBbY29tcGxl
dGlvbkhhbmRsZXJDb3B5XShjb25zdCBTdHJpbmcmIGVycm9yU3RyaW5nKSB7CisgICAgICAgIGlm
IChlcnJvclN0cmluZy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
Q29weShuaWwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyQ29weShbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJXS1dlYlNpdGVEYXRh
U3RvcmUiIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgTlNMb2NhbGl6ZWREZXNjcmlw
dGlvbktleTooTlNTdHJpbmcgKillcnJvclN0cmluZyB9XSk7CisgICAgfSk7Cit9CisKKy0odm9p
ZClfZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnM6KHZvaWQoXiko
TlNTZXQ8V0tTZWN1cml0eU9yaWdpbiAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGF1
dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5nZXRPcmlnaW5zV2l0
aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhfd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lv
bklEKCksIFtjb21wbGV0aW9uSGFuZGxlckNvcHldKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGE+JiBvcmlnaW5zKSB7CisgICAgICAgIGF1dG8gc2V0ID0gYWRvcHROUyhb
W05TTXV0YWJsZVNldCBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcmlnaW5zLnNpemUoKV0pOwor
ICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKKyAgICAgICAgICAgIGF1dG8g
YXBpT3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbik7CisgICAgICAg
ICAgICBbc2V0IGFkZE9iamVjdDp3cmFwcGVyKGFwaU9yaWdpbi5nZXQoKSldOworICAgICAgICB9
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weShzZXQuZ2V0KCkpOworICAgIH0pOworfQor
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA4ZmI0ODUxZWIwMzguLmExMmM2
ZWMyMGE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAK
IE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBXS1NlY3VyaXR5T3JpZ2luOwogQGNs
YXNzIFdLV2ViVmlldzsKIEBjbGFzcyBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0
eTsKIEBjbGFzcyBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjsKQEAgLTEwOCw3ICsx
MDksOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9y
ZUZldGNoT3B0aW9ucykgewogCiAtKGJvb2wpX2hhc1NlcnZpY2VXb3JrZXJCYWNrZ3JvdW5kQWN0
aXZpdHlGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAtKHZvaWQpX3Byb2Nlc3NQdXNoTWVzc2FnZTooTlNEYXRhKilkYXRhIHJl
Z2lzdHJhdGlvbjooTlNVUkwgKilyZWdpc3RyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQo
XikoYm9vbCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLQorLSh2b2lkKV9kZWxldGVQdXNoQW5kTm90aWZpY2F0
aW9uUmVnaXN0cmF0aW9uOihXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4gY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSh2b2lkKV9n
ZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9uczoodm9pZCheKShOU1Nl
dDxXS1NlY3VyaXR5T3JpZ2luICo+ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5kCiAKIE5TX0FTU1VN
RV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYzU1M2Y5Y2E3MTI5Li41ODFhNWQ5YTUx
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTY1Nyw2ICsxNjU3LDE2IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
c3RkOjpvcHRpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKK3sK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEZWxldGVQ
dXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uIHsgc2Vzc2lvbklELCBvcmlnaW4gfSwgV1RG
TW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE9yaWdp
bnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5E
YXRhPiYpPiYmIGNhbGxiYWNrKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OkdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Np
b25zIHsgc2Vzc2lvbklEIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGE0YjU0NTYw
OTA0ZS4uOThkOWQ4MGMyNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjc1LDYgKzI3NSw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgc3RkOjpvcHRp
b25hbDxTcGFuPGNvbnN0IHVpbnQ4X3Q+PiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sIHdhc1Byb2Nlc3NlZCk+JiYpOwogI2VuZGlmCiAKKyAgICB2b2lkIGRlbGV0ZVB1
c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYpOworICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVy
bWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CisKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgTmV0d29ya1Byb2Nlc3NQcm94eSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAKaW5kZXggYmM1NDA4YzY1MTMxLi5k
YmZlZmIwMTU5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlci5jcHAKQEAgLTM1LDYgKzM1LDExIEBAIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlcjo6V2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyKFdl
YlBhCiB7CiB9CiAKK3ZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpy
ZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKQoreworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpz
aG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwg
Y29uc3QgU3RyaW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBs
YW5ndWFnZSwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5TdHJpbmcsIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQogewogICAgIG1f
d2ViUGFnZVByb3h5LnNob3dOb3RpZmljYXRpb24odGl0bGUsIGJvZHksIGljb25VUkwsIHRhZywg
bGFuZ3VhZ2UsIGRpcmVjdGlvbiwgb3JpZ2luU3RyaW5nLCBub3RpZmljYXRpb25JRCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaAppbmRleCA2
ZjBmZDY4NTU5OGUuLjNlMGEzYzg0YWY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlciA6IHB1YmxpYyBOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlcihXZWJQYWdlUHJveHkmKTsKIAorICAgIHZvaWQgcmVxdWVzdFN5c3Rl
bU5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgYm9keSwgY29uc3QgU3RyaW5nJiBpY29uVVJMLCBj
b25zdCBTdHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgV2ViQ29yZTo6Tm90aWZp
Y2F0aW9uRGlyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgdWludDY0X3Qgbm90
aWZpY2F0aW9uSUQpIGZpbmFsOwogICAgIHZvaWQgY2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhjb25z
dCBWZWN0b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKaW5kZXggNWM0
OTFjYTI1YjljLi41ZWRkODg3NjEyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5oIgogCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJX
ZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTgwLDExICs4
MSwyMiBAQCB2b2lkIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRS
ZXF1ZXN0KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YQogICAgIGlmICghYWRkUmVzdWx0LmlzTmV3
RW50cnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uKHNl
Y3VyaXR5T3JpZ2luLnRvU3RyaW5nKCkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0
aGlzIH0sIHBlcm1pc3Npb25IYW5kbGVyID0gV1RGTW92ZShwZXJtaXNzaW9uSGFuZGxlciksIHNl
Y3VyaXR5T3JpZ2luXShib29sIGFsbG93ZWQpIG11dGFibGUgewotICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI+KCktPmRpZFVw
ZGF0ZU5vdGlmaWNhdGlvbkRlY2lzaW9uKHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5nKCksIGFsbG93
ZWQpOworICAgIG1fcGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uKHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5n
KCkpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHNlY3VyaXR5T3JpZ2lu
LCBwZXJtaXNzaW9uSGFuZGxlciA9IFdURk1vdmUocGVybWlzc2lvbkhhbmRsZXIpXShib29sIGFs
bG93ZWQpIG11dGFibGUgewogCi0gICAgICAgIGF1dG8gcGVybWlzc2lvbkhhbmRsZXJzID0gbV9y
ZXF1ZXN0c1Blck9yaWdpbi50YWtlKHNlY3VyaXR5T3JpZ2luKTsKLSAgICAgICAgY2FsbFBlcm1p
c3Npb25IYW5kbGVyc1dpdGgocGVybWlzc2lvbkhhbmRsZXJzLCBhbGxvd2VkID8gUGVybWlzc2lv
bjo6R3JhbnRlZCA6IFBlcm1pc3Npb246OkRlbmllZCk7CisgICAgICAgIGF1dG8gaW5uZXJQZXJt
aXNzaW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vj
dXJpdHlPcmlnaW4sIHBlcm1pc3Npb25IYW5kbGVyID0gV1RGTW92ZShwZXJtaXNzaW9uSGFuZGxl
cildIChib29sIGFsbG93ZWQpIG11dGFibGUgeworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyPigpLT5kaWRVcGRhdGVO
b3RpZmljYXRpb25EZWNpc2lvbihzZWN1cml0eU9yaWdpbi50b1N0cmluZygpLCBhbGxvd2VkKTsK
KworICAgICAgICAgICAgYXV0byBwZXJtaXNzaW9uSGFuZGxlcnMgPSBtX3JlcXVlc3RzUGVyT3Jp
Z2luLnRha2Uoc2VjdXJpdHlPcmlnaW4pOworICAgICAgICAgICAgY2FsbFBlcm1pc3Npb25IYW5k
bGVyc1dpdGgocGVybWlzc2lvbkhhbmRsZXJzLCBhbGxvd2VkID8gUGVybWlzc2lvbjo6R3JhbnRl
ZCA6IFBlcm1pc3Npb246OkRlbmllZCk7CisgICAgICAgIH07CisKKyNpZiBFTkFCTEUoQlVJTFRf
SU5fTk9USUZJQ0FUSU9OUykKKyAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuYnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFibGVkKCkgJiYgYWxsb3dlZCkg
eworICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpSZXF1ZXN0U3lzdGVtTm90aWZpY2F0
aW9uUGVybWlzc2lvbihzZWN1cml0eU9yaWdpbi50b1N0cmluZygpKSwgV1RGTW92ZShpbm5lclBl
cm1pc3Npb25IYW5kbGVyKSwgbV9wYWdlLT5zZXNzaW9uSUQoKS50b1VJbnQ2NCgpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGlubmVyUGVybWlzc2lv
bkhhbmRsZXIoYWxsb3dlZCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQ
dXNoRGFlbW9uLmgKaW5kZXggYTk0ZWRkNGUzMjlmLi4wMDA1ZmFlOGQ4NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9TcGFuLmg+CiAjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CkBA
IC00OCwxMiArNDksMTcgQEAgcHVibGljOgogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwogICAg
IHZvaWQgZWNob1R3aWNlKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYgcmVwbHlTZW5kZXIpOworICAgIHZvaWQgcmVxdWVzdFN5c3RlbU5vdGlm
aWNhdGlvblBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiByZXBseVNlbmRlcik7CisgICAgdm9pZCBnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3Rp
ZmljYXRpb25QZXJtaXNzaW9ucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxT
dHJpbmc+Jik+JiYgcmVwbHlTZW5kZXIpOworICAgIHZvaWQgZGVsZXRlUHVzaEFuZE5vdGlmaWNh
dGlvblJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiByZXBseVNlbmRlcik7CiAKIHByaXZhdGU6CiAg
ICAgRGFlbW9uKCkgPSBkZWZhdWx0OwogCiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNv
ZGVkTWVzc2FnZSYmKT4gY3JlYXRlUmVwbHlTZW5kZXIoTWVzc2FnZVR5cGUsIE9TT2JqZWN0UHRy
PHhwY19vYmplY3RfdD4mJiByZXF1ZXN0KTsKICAgICB2b2lkIGRlY29kZUFuZEhhbmRsZU1lc3Nh
Z2UoTWVzc2FnZVR5cGUsIFNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+JiYpOworCisgICAgSGFzaFNldDxT
dHJpbmc+IG1faW5NZW1vcnlPcmlnaW5TdHJpbmdzV2l0aFBlcm1pc3Npb25Gb3JUZXN0aW5nOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVz
aERhZW1vbi5tbQppbmRleCA1NmEwNzBjYjFkNjUuLmZjODI2ODEzNjkwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQpAQCAtNTMsNiArNTMsMjEgQEAgQVJHVU1FTlRT
KFN0cmluZykKIFJFUExZKFN0cmluZykKIEVORAogCitGVU5DVElPTihnZXRPcmlnaW5zV2l0aFB1
c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucykKK0FSR1VNRU5UUygpCitSRVBMWShjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpCitFTkQKKworRlVOQ1RJT04oZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlv
blJlZ2lzdHJhdGlvbikKK0FSR1VNRU5UUyhTdHJpbmcpCitSRVBMWShTdHJpbmcpCitFTkQKKwor
RlVOQ1RJT04ocmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb24pCitBUkdVTUVOVFMo
U3RyaW5nKQorUkVQTFkoYm9vbCkKK0VORAorCiAjdW5kZWYgRlVOQ1RJT04KICN1bmRlZiBBUkdV
TUVOVFMKICN1bmRlZiBSRVBMWQpAQCAtNjUsNiArODAsMjcgQEAgV2ViUHVzaEQ6OkVuY29kZWRN
ZXNzYWdlIGVjaG9Ud2ljZTo6ZW5jb2RlUmVwbHkoU3RyaW5nIHJlcGx5KQogICAgIHJldHVybiBl
bmNvZGVyLnRha2VCdWZmZXIoKTsKIH0KIAorV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGdldE9y
aWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zOjplbmNvZGVSZXBseShjb25z
dCBWZWN0b3I8U3RyaW5nPiYgcmVwbHkpCit7CisgICAgV2ViS2l0OjpEYWVtb246OkVuY29kZXIg
ZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8IHJlcGx5OworICAgIHJldHVybiBlbmNvZGVyLnRha2VC
dWZmZXIoKTsKK30KKworV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGRlbGV0ZVB1c2hBbmROb3Rp
ZmljYXRpb25SZWdpc3RyYXRpb246OmVuY29kZVJlcGx5KFN0cmluZyByZXBseSkKK3sKKyAgICBX
ZWJLaXQ6OkRhZW1vbjo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIgPDwgcmVwbHk7Cisg
ICAgcmV0dXJuIGVuY29kZXIudGFrZUJ1ZmZlcigpOworfQorCitXZWJQdXNoRDo6RW5jb2RlZE1l
c3NhZ2UgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb246OmVuY29kZVJlcGx5KGJv
b2wgcmVwbHkpCit7CisgICAgV2ViS2l0OjpEYWVtb246OkVuY29kZXIgZW5jb2RlcjsKKyAgICBl
bmNvZGVyIDw8IHJlcGx5OworICAgIHJldHVybiBlbmNvZGVyLnRha2VCdWZmZXIoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgTWVzc2FnZUluZm8KIAogdGVtcGxhdGU8dHlwZW5hbWUgSW5mbz4KQEAg
LTE0MSw2ICsxNzcsMTUgQEAgdm9pZCBEYWVtb246OmRlY29kZUFuZEhhbmRsZU1lc3NhZ2UoTWVz
c2FnZVR5cGUgbWVzc2FnZVR5cGUsIFNwYW48Y29uc3QgdWludDhfdD4KICAgICBjYXNlIE1lc3Nh
Z2VUeXBlOjpFY2hvVHdpY2U6CiAgICAgICAgIGhhbmRsZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBs
eTxNZXNzYWdlSW5mbzo6ZWNob1R3aWNlPihlbmNvZGVkTWVzc2FnZSwgV1RGTW92ZShyZXBseVNl
bmRlcikpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpHZXRPcmlnaW5z
V2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9uczoKKyAgICAgICAgaGFuZGxlV2ViUHVz
aERNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3Rp
ZmljYXRpb25QZXJtaXNzaW9ucz4oZW5jb2RlZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5kZXIp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6RGVsZXRlUHVzaEFuZE5v
dGlmaWNhdGlvblJlZ2lzdHJhdGlvbjoKKyAgICAgICAgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0
aFJlcGx5PE1lc3NhZ2VJbmZvOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9u
PihlbmNvZGVkTWVzc2FnZSwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpSZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lv
bjoKKyAgICAgICAgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjpy
ZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbj4oZW5jb2RlZE1lc3NhZ2UsIFdURk1v
dmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0xNDksNCAr
MTk0LDI5IEBAIHZvaWQgRGFlbW9uOjplY2hvVHdpY2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluCiAgICAgcmVwbHlTZW5kZXIobWFrZVN0
cmluZyhtZXNzYWdlLCBtZXNzYWdlKSk7CiB9CiAKK3ZvaWQgRGFlbW9uOjpyZXF1ZXN0U3lzdGVt
Tm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiByZXBseVNlbmRlcikKK3sKKyAgICAvLyBGSVhNRTog
VGhpcyBpcyBmb3IgYW4gQVBJIHRlc3RpbmcgY2hlY2twb2ludAorICAgIC8vIE5leHQgc3RlcCBp
cyBhY3R1YWxseSBwZXJmb3JtIGEgcGVyc2lzdGVudCBwZXJtaXNzaW9ucyByZXF1ZXN0IG9uIGEg
cGVyLXBsYXRmb3JtIGJhc2lzCisgICAgbV9pbk1lbW9yeU9yaWdpblN0cmluZ3NXaXRoUGVybWlz
c2lvbkZvclRlc3RpbmcuYWRkKG9yaWdpblN0cmluZyk7CisgICAgcmVwbHlTZW5kZXIodHJ1ZSk7
Cit9CisKK3ZvaWQgRGFlbW9uOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJt
aXNzaW9ucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+JiYg
cmVwbHlTZW5kZXIpCit7CisgICAgLy8gRklYTUU6IFRoaXMgaXMgZm9yIGFuIEFQSSB0ZXN0aW5n
IGNoZWNrcG9pbnQKKyAgICAvLyBOZXh0IHN0ZXAgaXMgYWN0dWFsbHkgZ2F0aGVyIHBlcnNpc3Rl
bnQgcGVybWlzc2lvbnMgZnJvbSB0aGUgc3lzdGVtIG9uIGEgcGVyLXBsYXRmb3JtIGJhc2lzCisg
ICAgcmVwbHlTZW5kZXIoY29weVRvVmVjdG9yKG1faW5NZW1vcnlPcmlnaW5TdHJpbmdzV2l0aFBl
cm1pc3Npb25Gb3JUZXN0aW5nKSk7Cit9CisKK3ZvaWQgRGFlbW9uOjpkZWxldGVQdXNoQW5kTm90
aWZpY2F0aW9uUmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luU3RyaW5nLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5U2VuZGVyKQoreworICAgIC8v
IEZJWE1FOiBUaGlzIGlzIGZvciBhbiBBUEkgdGVzdGluZyBjaGVja3BvaW50CisgICAgLy8gTmV4
dCBzdGVwIGlzIGFjdHVhbGx5IGRlbGV0ZSBhbnkgcGVyc2lzdGVudCBwZXJtaXNzaW9ucyBvbiBh
IHBlci1wbGF0Zm9ybSBiYXNpcworICAgIGlmIChtX2luTWVtb3J5T3JpZ2luU3RyaW5nc1dpdGhQ
ZXJtaXNzaW9uRm9yVGVzdGluZy5yZW1vdmUob3JpZ2luU3RyaW5nKSkKKyAgICAgICAgcmVwbHlT
ZW5kZXIoIiIpOworICAgIGVsc2UKKyAgICAgICAgcmVwbHlTZW5kZXIobWFrZVN0cmluZygiT3Jp
Z2luICIsIG9yaWdpblN0cmluZywgIiBub3QgcmVnaXN0ZXJlZCBmb3IgcHVzaCBvciBub3RpZmlj
YXRpb25zIikpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA4OTk3NzViOWY4OS4uNzkzZWI2
YjMyNDllIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTAtMzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIHdlYnB1c2hkOiBBZGQgbW9jayBpbi1tZW1vcnkgcmVnaXN0cmF0
aW9uLCBhbmQgdGhlIFdLV2Vic2l0ZURhdGFTdG9yZSBTUEkgdG8gbWFuYWdlIHRoZW0KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjUzOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tOgorICAgICAgICAoLVtOb3RpZmlj
YXRpb25QZXJtaXNzaW9uRGVsZWdhdGUgX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1p
c3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW05v
dGlmaWNhdGlvblBlcm1pc3Npb25EZWxlZ2F0ZSB3ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBh
bmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OnRoZW4pOgorCiAyMDIxLTEwLTI2ICBSb3kgUmVhcG9yICA8
cnJlYXBvckBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0cHkvYXV0b2luc3RhbGxlZC9weW9i
amNfZnJhbWV3b3Jrcy5weSBzaG91bGQgbm90IGF1dG9pbnN0YWxsIGZyYW1ld29ya3MgaWYgdGhl
eSBjYW4gYmUgaW1wb3J0ZWQgd2l0aG91dCBleGNlcHRpb25zCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KaW5kZXggODYz
NzVlNDFkYTMwLi4xNjhkNDZmZjMyZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KQEAgLTI2LDYgKzI2LDI5IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKIAogI2ltcG9ydCAiRGFlbW9uVGVzdFV0aWxpdGllcy5oIgor
I2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcu
aCIKKyNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJL
aXQvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5oPgorCitzdGF0aWMgYm9vbCBhbGVydFJlY2VpdmVk
ID0gZmFsc2U7CitAaW50ZXJmYWNlIE5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWxlZ2F0ZSA6IE5T
T2JqZWN0PFdLVUlEZWxlZ2F0ZVByaXZhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uRGVsZWdhdGUKKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyByZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2lu
OihXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4gZGVjaXNpb25IYW5kbGVyOih2b2lk
ICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICBkZWNpc2lvbkhhbmRsZXIodHJ1ZSk7
Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0
QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFt
ZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhbGVydFJlY2VpdmVkID0gdHJ1ZTsKKyAgICBjb21w
bGV0aW9uSGFuZGxlcigpOworfQorCitAZW5kCiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IApAQCAtMTQ3LDYgKzE3MCw3NSBAQCBURVNUKFdlYlB1c2hELCBCYXNpY0NvbW11bmljYXRpb24p
CiAgICAgY2xlYW5VcFRlc3RXZWJQdXNoRCh0ZW1wRGlyKTsKIH0KIAorc3RhdGljIGNvbnN0IGNo
YXIqIG1haW5CeXRlcyA9IFIiV0VCUFVTSFJFU09VUkNFKAorPHNjcmlwdD4KKyAgICBOb3RpZmlj
YXRpb24ucmVxdWVzdFBlcm1pc3Npb24oKS50aGVuKCgpID0+IHsgYWxlcnQoImRvbmUiKSB9KQor
PC9zY3JpcHQ+CispV0VCUFVTSFJFU09VUkNFIjsKKworVEVTVChXZWJQdXNoRCwgUGVybWlzc2lv
bk1hbmFnZW1lbnQpCit7CisgICAgTlNVUkwgKnRlbXBEaXJlY3RvcnkgPSBzZXRVcFRlc3RXZWJQ
dXNoRCgpOworCisgICAgYXV0byBkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgZGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5nZXQoKS53ZWJQdXNoTWFjaFNlcnZpY2VOYW1lID0gQCJvcmcud2Via2l0LndlYnB1
c2h0ZXN0ZGFlbW9uLnNlcnZpY2UiOworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dL
V2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVD
b25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGNvbmZpZ3VyYXRp
b24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IGRhdGFTdG9yZS5nZXQoKTsKKyAgICBmb3IgKF9X
S0V4cGVyaW1lbnRhbEZlYXR1cmUgKmZlYXR1cmUgaW4gW1dLUHJlZmVyZW5jZXMgX2V4cGVyaW1l
bnRhbEZlYXR1cmVzXSkgeworICAgICAgICBpZiAoW2ZlYXR1cmUua2V5IGlzRXF1YWxUb1N0cmlu
ZzpAIkJ1aWx0SW5Ob3RpZmljYXRpb25zRW5hYmxlZCJdKQorICAgICAgICAgICAgW1tjb25maWd1
cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRmVhdHVyZTpmZWF0dXJlXTsK
KyAgICB9CisKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRs
ZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVy
OmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdGluZyJdOworCisgICAgW2hhbmRsZXIg
c2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVt
ZVRhc2s+IHRhc2spIHsKKyAgICAgICAgYXV0byByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJl
c3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4
dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwor
ICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOworICAgICAg
ICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6bWFpbkJ5dGVzIGxl
bmd0aDpzdHJsZW4obWFpbkJ5dGVzKV1dOworICAgICAgICBbdGFzayBkaWRGaW5pc2hdOworICAg
IH1dOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB1aURlbGVnYXRlID0gYWRvcHROUyhbW05v
dGlmaWNhdGlvblBlcm1pc3Npb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3
IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
dGVzdGluZzovL21haW4vaW5kZXguaHRtbCJdXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZhbGVydFJlY2VpdmVkKTsKKworICAgIHN0YXRpYyBib29sIG9yaWdpbk9wZXJhdGlvbkRv
bmUgPSBmYWxzZTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPFdLU2VjdXJpdHlPcmlnaW4+IG9yaWdp
bjsKKyAgICBbZGF0YVN0b3JlIF9nZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJt
aXNzaW9uczpeKE5TU2V0PFdLU2VjdXJpdHlPcmlnaW4gKj4gKm9yaWdpbnMpIHsKKyAgICAgICAg
RVhQRUNUX0VRKFtvcmlnaW5zIGNvdW50XSwgMXUpOworICAgICAgICBvcmlnaW4gPSBbb3JpZ2lu
cyBhbnlPYmplY3RdOworICAgICAgICBvcmlnaW5PcGVyYXRpb25Eb25lID0gdHJ1ZTsKKyAgICB9
XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmb3JpZ2luT3BlcmF0aW9uRG9uZSk7
CisKKyAgICBFWFBFQ1RfVFJVRShbb3JpZ2luLmdldCgpLnByb3RvY29sIGlzRXF1YWxUb1N0cmlu
ZzpAInRlc3RpbmciXSk7CisgICAgRVhQRUNUX1RSVUUoW29yaWdpbi5nZXQoKS5ob3N0IGlzRXF1
YWxUb1N0cmluZzpAIm1haW4iXSk7CisKKyAgICBvcmlnaW5PcGVyYXRpb25Eb25lID0gZmFsc2U7
CisgICAgW2RhdGFTdG9yZSBfZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbjpv
cmlnaW4uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICplcnJvcikgeworICAgICAg
ICBFWFBFQ1RfRkFMU0UoISFlcnJvcik7CisgICAgICAgIG9yaWdpbk9wZXJhdGlvbkRvbmUgPSB0
cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZvcmlnaW5PcGVy
YXRpb25Eb25lKTsKKworICAgIG9yaWdpbk9wZXJhdGlvbkRvbmUgPSBmYWxzZTsKKyAgICBbZGF0
YVN0b3JlIF9nZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9uczpeKE5T
U2V0PFdLU2VjdXJpdHlPcmlnaW4gKj4gKm9yaWdpbnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKFtv
cmlnaW5zIGNvdW50XSwgMHUpOworICAgICAgICBvcmlnaW5PcGVyYXRpb25Eb25lID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm9yaWdpbk9wZXJhdGlvbkRv
bmUpOworCisgICAgY2xlYW5VcFRlc3RXZWJQdXNoRCh0ZW1wRGlyZWN0b3J5KTsKK30KKwogI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>