<?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>222248</bug_id>
          
          <creation_ts>2021-02-21 07:05:06 -0800</creation_ts>
          <short_desc>Non-cookie website data not deleted after 7 days of browser use without user interaction</short_desc>
          <delta_ts>2021-02-26 14:26:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>Safari 14</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Antoine Bourlon">antoine_bourlon</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1731943</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Bourlon">antoine_bourlon</who>
    <bug_when>2021-02-21 07:05:06 -0800</bug_when>
    <thetext>ITP is supposed to delete non-cookie data of a website after 7 days of browser use without user interaction with the website, as described in https://bugs.webkit.org/show_bug.cgi?id=204779 and https://webkit.org/blog/10218/full-third-party-cookie-blocking-and-more/. However we couldn&apos;t reproduce this expected behavior in our real-life tests on iOS 14 and macOS Safari 14. Only cookies (set with document.cookie) are deleted, not LocalStorage.

Steps to Reproduce: 

1) Open a page with Safari from domain A that adds some data to LocalStorage. Tap somewhere on the page (to register a user interaction) and close the tab.

2) Open Safari every day for the next 7 days.

3) On day 8 open a page (different than step 1) from domain A that doesn&apos;t write to LocalStorage and check that data stored in step 1 is still there. Do not tap or input anything on the page.

4) On day 9 and 10 retry step 3 just in case :)

Additional Information:

After some debugging on a local build of WebKit with MiniBrowser, it seems to be related to the condition below in hasStatisticsExpired(). I don&apos;t understand why mostRecentUserInteractionTime is compared to m_leastRecentOperatingDate (30 operating days ago IIUC) instead of &quot;7 operating days ago&quot;, even when hasStatisticsExpired() is called from hasHadUnexpiredRecentUserInteraction() (shouldRemoveAllButCookiesFor()):

&gt;    if (m_operatingDatesSize &gt;= operatingDatesWindowInDays) {
&gt;        if (OperatingDate::fromWallTime(mostRecentUserInteractionTime) &lt; m_leastRecentOperatingDate)
&gt;            return true;
&gt;    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731953</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-21 09:02:09 -0800</bug_when>
    <thetext>Thanks for filing! We’ll have a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732292</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-22 13:58:39 -0800</bug_when>
    <thetext>&lt;rdar://problem/74612589&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733619</commentid>
    <comment_count>3</comment_count>
      <attachid>421591</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-25 17:56:40 -0800</bug_when>
    <thetext>Created attachment 421591
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733646</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-25 19:45:54 -0800</bug_when>
    <thetext>Failing API test is unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733830</commentid>
    <comment_count>5</comment_count>
      <attachid>421591</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-26 09:52:45 -0800</bug_when>
    <thetext>Comment on attachment 421591
Patch

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

I think this looks good. I think m_leastRecentOperatingDate and related logic should be removed before landing, and I think it would be better to have a single statement to get operating dates windows to avoid duplication. Everything else is just nits. Thanks for fixing this!

&gt; Source/WebKit/ChangeLog:28
&gt; +            Test infrastructure. The same changes as in the DB store.

This function can probably be removed. We don&apos;t run tests with the memory store anymore.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2805
&gt; +    SQLiteStatement getLongWindowOperatingDateStatement(m_database, &quot;SELECT * FROM OperatingDates ORDER BY year DESC, month DESC, monthDay DESC LIMIT 1 OFFSET ?;&quot;_s);

I think this should be one statement, maybe getOperatingDateForWindowStatement. Then you can assign it to variables with different names and different bind parameters.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2831
&gt; +            RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, &quot;%p - ResourceLoadStatisticsDatabaseStore::updateOperatingDatesParameters getShortWindowOperatingDateStatement failed to step, error message: %{private}s&quot;, this, m_database.lastErrorMsg());

Nit, the error message would probably read better as &quot;getShortWindowOperatingDateStatement failed, error ...&quot; because the failure could be in the prepare(), bind() or step().

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2841
&gt; +        if (getLongWindowOperatingDateStatement.prepare() != SQLITE_OK

If you do end up using one statement for both, you will need to reset it before you bind again, using &lt;statement-name&gt;.reset().

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2844
&gt; +            RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, &quot;%p - ResourceLoadStatisticsDatabaseStore::updateOperatingDatesParameters getLongWindowOperatingDateStatement failed to step, error message: %{private}s&quot;, this, m_database.lastErrorMsg());

Ditto about the error message.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:-2887
&gt; -        if (OperatingDate::fromWallTime(mostRecentUserInteractionTime) &lt; m_leastRecentOperatingDate)

m_leastRecentOperatingDate is now unused and should be removed.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2921
&gt; +void ResourceLoadStatisticsDatabaseStore::insertExpiredStatisticForTesting(const RegistrableDomain&amp; domain, unsigned numberOfOperatingDaysPassed, bool hasUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent)

I wonder if isScheduledForAllButCookieDataRemoval should just be removed? It doesn&apos;t seem to be needed for testing, because it should get marked after a statistic is marked for website data removal.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2925
&gt; +    for (unsigned i = 1; i &lt;= numberOfOperatingDaysPassed; i++) {

Nice, this is much better for testing.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:295
&gt;      OperatingDate m_leastRecentOperatingDate;

Should be removed.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:1140
&gt; +void ResourceLoadStatisticsMemoryStore::insertExpiredStatisticForTesting(const RegistrableDomain&amp; domain, unsigned numberOfOperatingDaysPassed, bool hasUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent)

This function could be removed if you want.

&gt; LayoutTests/ChangeLog:12
&gt; +        A new test case makes sure website data is not deleted below the threshold.

Good idea to have this new test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733855</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-26 10:22:30 -0800</bug_when>
    <thetext>(In reply to katherine_cheney from comment #5)
&gt; Comment on attachment 421591 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=421591&amp;action=review
&gt; 
&gt; I think this looks good. I think m_leastRecentOperatingDate and related
&gt; logic should be removed before landing, and I think it would be better to
&gt; have a single statement to get operating dates windows to avoid duplication.
&gt; Everything else is just nits. Thanks for fixing this!
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:28
&gt; &gt; +            Test infrastructure. The same changes as in the DB store.
&gt; 
&gt; This function can probably be removed. We don&apos;t run tests with the memory
&gt; store anymore.

It&apos;s a pure virtual function in WebKit::ResourceLoadStatisticsStore which means it has to be implemented in all concrete subclasses. We could make it a no-op but I don&apos;t think that&apos;s much better than just updating it. The whole memory store should be removed, right?

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2805
&gt; &gt; +    SQLiteStatement getLongWindowOperatingDateStatement(m_database, &quot;SELECT * FROM OperatingDates ORDER BY year DESC, month DESC, monthDay DESC LIMIT 1 OFFSET ?;&quot;_s);
&gt; 
&gt; I think this should be one statement, maybe
&gt; getOperatingDateForWindowStatement. Then you can assign it to variables with
&gt; different names and different bind parameters.

Obvious now that you point it out. The trap of incremental development.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2831
&gt; &gt; +            RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, &quot;%p - ResourceLoadStatisticsDatabaseStore::updateOperatingDatesParameters getShortWindowOperatingDateStatement failed to step, error message: %{private}s&quot;, this, m_database.lastErrorMsg());
&gt; 
&gt; Nit, the error message would probably read better as
&gt; &quot;getShortWindowOperatingDateStatement failed, error ...&quot; because the failure
&gt; could be in the prepare(), bind() or step().

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2841
&gt; &gt; +        if (getLongWindowOperatingDateStatement.prepare() != SQLITE_OK
&gt; 
&gt; If you do end up using one statement for both, you will need to reset it
&gt; before you bind again, using &lt;statement-name&gt;.reset().

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2844
&gt; &gt; +            RELEASE_LOG_ERROR_IF_ALLOWED(m_sessionID, &quot;%p - ResourceLoadStatisticsDatabaseStore::updateOperatingDatesParameters getLongWindowOperatingDateStatement failed to step, error message: %{private}s&quot;, this, m_database.lastErrorMsg());
&gt; 
&gt; Ditto about the error message.

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:-2887
&gt; &gt; -        if (OperatingDate::fromWallTime(mostRecentUserInteractionTime) &lt; m_leastRecentOperatingDate)
&gt; 
&gt; m_leastRecentOperatingDate is now unused and should be removed.

Will check and remove if truly unused.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2921
&gt; &gt; +void ResourceLoadStatisticsDatabaseStore::insertExpiredStatisticForTesting(const RegistrableDomain&amp; domain, unsigned numberOfOperatingDaysPassed, bool hasUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent)
&gt; 
&gt; I wonder if isScheduledForAllButCookieDataRemoval should just be removed? It
&gt; doesn&apos;t seem to be needed for testing, because it should get marked after a
&gt; statistic is marked for website data removal.

Afaik, isScheduledForAllButCookieDataRemoval is still used for when potential link decoration is detected and so having a way to test with that setting separately is probably good even though it was used for the wrong test earlier.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2925
&gt; &gt; +    for (unsigned i = 1; i &lt;= numberOfOperatingDaysPassed; i++) {
&gt; 
&gt; Nice, this is much better for testing.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:295
&gt; &gt;      OperatingDate m_leastRecentOperatingDate;
&gt; 
&gt; Should be removed.

Will fix.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:1140
&gt; &gt; +void ResourceLoadStatisticsMemoryStore::insertExpiredStatisticForTesting(const RegistrableDomain&amp; domain, unsigned numberOfOperatingDaysPassed, bool hasUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent)
&gt; 
&gt; This function could be removed if you want.

See comment above.

&gt; &gt; LayoutTests/ChangeLog:12
&gt; &gt; +        A new test case makes sure website data is not deleted below the threshold.
&gt; 
&gt; Good idea to have this new test case.

Thanks, Kate! Will upload a new patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733860</commentid>
    <comment_count>7</comment_count>
      <attachid>421591</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-02-26 10:27:09 -0800</bug_when>
    <thetext>Comment on attachment 421591
Patch

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

&gt;&gt;&gt; Source/WebKit/ChangeLog:28
&gt;&gt;&gt; +            Test infrastructure. The same changes as in the DB store.
&gt;&gt; 
&gt;&gt; This function can probably be removed. We don&apos;t run tests with the memory store anymore.
&gt; 
&gt; It&apos;s a pure virtual function in WebKit::ResourceLoadStatisticsStore which means it has to be implemented in all concrete subclasses. We could make it a no-op but I don&apos;t think that&apos;s much better than just updating it. The whole memory store should be removed, right?

Ah, you&apos;re right. I forgot I had made it virtual. And yes, rdar://57878709 is tracking the removal, I&apos;ve been meaning to get around to it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733867</commentid>
    <comment_count>8</comment_count>
      <attachid>421675</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-26 10:37:21 -0800</bug_when>
    <thetext>Created attachment 421675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733869</commentid>
    <comment_count>9</comment_count>
      <attachid>421675</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-02-26 10:44:56 -0800</bug_when>
    <thetext>Comment on attachment 421675
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733872</commentid>
    <comment_count>10</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-26 10:51:01 -0800</bug_when>
    <thetext>Thanks, Kate and Brent! The previous patch was all green and the changes I made should not affect its quality. I&apos;ll wait for a reasonable amount of EWS feedback before putting it on the queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733884</commentid>
    <comment_count>11</comment_count>
      <attachid>421680</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-02-26 11:22:58 -0800</bug_when>
    <thetext>Created attachment 421680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733978</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-26 14:26:40 -0800</bug_when>
    <thetext>Committed r273590: &lt;https://commits.webkit.org/r273590&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421680.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421591</attachid>
            <date>2021-02-25 17:56:40 -0800</date>
            <delta_ts>2021-02-26 10:37:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222248-20210225175639.patch</filename>
            <type>text/plain</type>
            <size>88284</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBmNzRhMTAxNmJiOTkxMmVh
YWVlN2ExYTJkNzg2MDU3ZWViNzgxNjMuLmYyNjAwNmQ5MDVlYmMyNzMyZDFmNzg1NDI3NTlmN2Zh
OTRjODk3MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMjEtMDItMjUgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgTm9uLWNvb2tpZSB3ZWJzaXRl
IGRhdGEgbm90IGRlbGV0ZWQgYWZ0ZXIgNyBkYXlzIG9mIGJyb3dzZXIgdXNlIHdpdGhvdXQgdXNl
ciBpbnRlcmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyMjQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDYxMjU4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMt
bm90LXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0aW9uLTYtZGF5cy1hZ28uaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRl
cy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC13aXRoLXVzZXItaW50ZXJhY3Rpb24tNy1kYXlzLWFn
by5odG1sCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFyYW1ldGVy
cyk6CisgICAgICAgICAgICBOb3cgc2V0cyB0d28gbmV3IG1lbWJlciB2YXJpYWJsZXM6CisgICAg
ICAgICAgICAtIE9wdGlvbmFsPE9wZXJhdGluZ0RhdGU+IG1fbG9uZ1dpbmRvd09wZXJhdGluZ0Rh
dGUKKyAgICAgICAgICAgIC0gT3B0aW9uYWw8T3BlcmF0aW5nRGF0ZT4gbV9zaG9ydFdpbmRvd09w
ZXJhdGluZ0RhdGUKKyAgICAgICAgICAgIFRoZXNlIGFyZSBvbmx5IHNldCBpZiB0aGUgbWluaW11
bSBudW1iZXIgb2Ygb3BlcmF0aW5nIGRheXMgaGFzIHBhc3NlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVk
IGNvbnN0KToKKyAgICAgICAgICAgIE5vdyBjaGVja3MgYWdhaW5zdCB0aGUgdHdvIG5ldyBtZW1i
ZXIgdmFyaWFibGVzIG1fbG9uZ1dpbmRvd09wZXJhdGluZ0RhdGUKKyAgICAgICAgICAgIGFuZCBt
X3Nob3J0V2luZG93T3BlcmF0aW5nRGF0ZS4gVGhpcyBmaXhlcyB0aGUgYnVnLgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RXhwaXJl
ZFN0YXRpc3RpY0ZvclRlc3RpbmcpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4g
Tm93IHRha2VzIHRoZSBuZXcgcGFyYW1ldGVyIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZAor
ICAgICAgICAgICAgd2l0aCB3aGljaCBsYXlvdXQgdGVzdHMgY2FuIGNvbnRyb2wgdGhlIGV4YWN0
IG51bWJlciBvZiBvcGVyYXRpbmcgZGF5cworICAgICAgICAgICAgcGFzc2VkIHNpbmNlIHVzZXIg
aW50ZXJhY3Rpb24uCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjppbnNlcnRFeHBp
cmVkU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJl
LiBUaGUgc2FtZSBjaGFuZ2VzIGFzIGluIHRoZSBEQiBzdG9yZS4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKToKKyAg
ICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAgICAg
ICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRp
c3RpYyk6CisgICAgICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcpOgorICAgICAg
ICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpp
bnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAgICAgICBUZXN0IGluZnJh
c3RydWN0dXJlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmg6CisKIDIwMjEtMDItMjUgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBhZGQgc3VwcG9ydCBmb3IgcmVjZWl2aW5nIFdlYiBF
eHRlbnNpb24gZXZlbnRzIHZpYSBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5k
ZXggYmEzMmY3NmJiMzc4NThlMzJmMDJhY2YzNzY3ZGQyNTFmOWY0ZTA1MS4uYjY0NjlhYWZkZGY1
YzZjNmFjMjUzYTViNGIyMzNiZGVlNzA1YjU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0yODAxLDYgKzI4MDEsOCBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRp
bmdEYXRlc1BhcmFtZXRlcnMoKQogewogICAgIFNRTGl0ZVN0YXRlbWVudCBjb3VudE9wZXJhdGlu
Z0RhdGVzU3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBPcGVyYXRp
bmdEYXRlczsiX3MpOwogICAgIFNRTGl0ZVN0YXRlbWVudCBnZXRNb3N0UmVjZW50T3BlcmF0aW5n
RGF0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUICogRlJPTSBPcGVyYXRpbmdEYXRlcyBP
UkRFUiBCWSB5ZWFyIERFU0MsIG1vbnRoIERFU0MsIG1vbnRoRGF5IERFU0MgTElNSVQgMTsiX3Mp
OworICAgIFNRTGl0ZVN0YXRlbWVudCBnZXRTaG9ydFdpbmRvd09wZXJhdGluZ0RhdGVTdGF0ZW1l
bnQobV9kYXRhYmFzZSwgIlNFTEVDVCAqIEZST00gT3BlcmF0aW5nRGF0ZXMgT1JERVIgQlkgeWVh
ciBERVNDLCBtb250aCBERVNDLCBtb250aERheSBERVNDIExJTUlUIDEgT0ZGU0VUID87Il9zKTsK
KyAgICBTUUxpdGVTdGF0ZW1lbnQgZ2V0TG9uZ1dpbmRvd09wZXJhdGluZ0RhdGVTdGF0ZW1lbnQo
bV9kYXRhYmFzZSwgIlNFTEVDVCAqIEZST00gT3BlcmF0aW5nRGF0ZXMgT1JERVIgQlkgeWVhciBE
RVNDLCBtb250aCBERVNDLCBtb250aERheSBERVNDIExJTUlUIDEgT0ZGU0VUID87Il9zKTsKICAg
ICBTUUxpdGVTdGF0ZW1lbnQgZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50KG1f
ZGF0YWJhc2UsICJTRUxFQ1QgKiBGUk9NIE9wZXJhdGluZ0RhdGVzIE9SREVSIEJZIHllYXIsIG1v
bnRoLCBtb250aERheSBMSU1JVCAxOyJfcyk7CiAKICAgICBpZiAoY291bnRPcGVyYXRpbmdEYXRl
c1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCkBAIC0yODE4LDE2ICsyODIwLDQwIEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGlu
Z0RhdGVzUGFyYW1ldGVycygpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotCiAgICAgbV9tb3N0UmVjZW50T3BlcmF0aW5nRGF0ZSA9IE9wZXJh
dGluZ0RhdGUoZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50
KDApLCBnZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMSks
IGdldE1vc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgyKSk7CiAK
KyAgICBpZiAobV9vcGVyYXRpbmdEYXRlc1NpemUgPD0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dTaG9y
dCAtIDEpCisgICAgICAgIG1fc2hvcnRXaW5kb3dPcGVyYXRpbmdEYXRlID0gV1RGOjpudWxsb3B0
OworICAgIGVsc2UgeworICAgICAgICBpZiAoZ2V0U2hvcnRXaW5kb3dPcGVyYXRpbmdEYXRlU3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IGdldFNob3J0V2lu
ZG93T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5iaW5kSW50KDEsIG9wZXJhdGluZ0RhdGVzV2luZG93
U2hvcnQgLSAxKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IGdldFNob3J0V2luZG93T3Bl
cmF0aW5nRGF0ZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFyYW1ldGVy
cyBnZXRTaG9ydFdpbmRvd09wZXJhdGluZ0RhdGVTdGF0ZW1lbnQgZmFpbGVkIHRvIHN0ZXAsIGVy
cm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBtX3Nob3J0V2luZG93T3BlcmF0aW5nRGF0ZSA9IE9wZXJh
dGluZ0RhdGUoZ2V0U2hvcnRXaW5kb3dPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmdldENvbHVtbklu
dCgwKSwgZ2V0U2hvcnRXaW5kb3dPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgx
KSwgZ2V0U2hvcnRXaW5kb3dPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgyKSk7
CisgICAgfQorCisgICAgaWYgKG1fb3BlcmF0aW5nRGF0ZXNTaXplIDw9IG9wZXJhdGluZ0RhdGVz
V2luZG93TG9uZyAtIDEpCisgICAgICAgIG1fbG9uZ1dpbmRvd09wZXJhdGluZ0RhdGUgPSBXVEY6
Om51bGxvcHQ7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChnZXRMb25nV2luZG93T3BlcmF0aW5n
RGF0ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBnZXRM
b25nV2luZG93T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5iaW5kSW50KDEsIG9wZXJhdGluZ0RhdGVz
V2luZG93TG9uZyAtIDEpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgZ2V0TG9uZ1dpbmRv
d09wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFt
ZXRlcnMgZ2V0TG9uZ1dpbmRvd09wZXJhdGluZ0RhdGVTdGF0ZW1lbnQgZmFpbGVkIHRvIHN0ZXAs
IGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBtX2xvbmdXaW5kb3dPcGVyYXRpbmdEYXRlID0gT3Bl
cmF0aW5nRGF0ZShnZXRMb25nV2luZG93T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5nZXRDb2x1bW5J
bnQoMCksIGdldExvbmdXaW5kb3dPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgx
KSwgZ2V0TG9uZ1dpbmRvd09wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDIpKTsK
KyAgICB9CisKICAgICBpZiAoZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdE
YXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMgZ2V0TGVhc3RS
ZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdl
OiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQogICAgIG1f
bGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlID0gT3BlcmF0aW5nRGF0ZShnZXRMZWFzdFJlY2VudE9w
ZXJhdGluZ0RhdGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApLCBnZXRMZWFzdFJlY2VudE9wZXJh
dGluZ0RhdGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDEpLCBnZXRMZWFzdFJlY2VudE9wZXJhdGlu
Z0RhdGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDIpKTsKIH0KIApAQCAtMjg2OSwxMyArMjg5NSwx
NCBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdGF0aXN0
aWNzRXhwaXJlZChXYWxsVGltZSBtb3N0UmVjZQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCi0gICAgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5kb3dJbkRheXMgPSAwOwog
ICAgIHN3aXRjaCAob3BlcmF0aW5nRGF0ZXNXaW5kb3cpIHsKICAgICBjYXNlIE9wZXJhdGluZ0Rh
dGVzV2luZG93OjpMb25nOgotICAgICAgICBvcGVyYXRpbmdEYXRlc1dpbmRvd0luRGF5cyA9IG9w
ZXJhdGluZ0RhdGVzV2luZG93TG9uZzsKKyAgICAgICAgaWYgKG1fbG9uZ1dpbmRvd09wZXJhdGlu
Z0RhdGUgJiYgT3BlcmF0aW5nRGF0ZTo6ZnJvbVdhbGxUaW1lKG1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb25UaW1lKSA8ICptX2xvbmdXaW5kb3dPcGVyYXRpbmdEYXRlKQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6
OlNob3J0OgotICAgICAgICBvcGVyYXRpbmdEYXRlc1dpbmRvd0luRGF5cyA9IG9wZXJhdGluZ0Rh
dGVzV2luZG93U2hvcnQ7CisgICAgICAgIGlmIChtX3Nob3J0V2luZG93T3BlcmF0aW5nRGF0ZSAm
JiBPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRp
bWUpIDwgKm1fc2hvcnRXaW5kb3dPcGVyYXRpbmdEYXRlKQorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6OkZvckxp
dmVPblRlc3Rpbmc6CiAgICAgICAgIHJldHVybiBXYWxsVGltZTo6bm93KCkgPiBtb3N0UmVjZW50
VXNlckludGVyYWN0aW9uVGltZSArIG9wZXJhdGluZ1RpbWVXaW5kb3dGb3JMaXZlT25UZXN0aW5n
OwpAQCAtMjg4MywxMSArMjkxMCw2IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1lIG1vc3RSZWNlCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmIChtX29wZXJhdGluZ0RhdGVzU2l6ZSA+PSBv
cGVyYXRpbmdEYXRlc1dpbmRvd0luRGF5cykgewotICAgICAgICBpZiAoT3BlcmF0aW5nRGF0ZTo6
ZnJvbVdhbGxUaW1lKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKSA8IG1fbGVhc3RSZWNl
bnRPcGVyYXRpbmdEYXRlKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCiAgICAg
Ly8gSWYgd2UgZG9uJ3QgbWVldCB0aGUgcmVhbCBjcml0ZXJpYSBmb3IgYW4gZXhwaXJlZCBzdGF0
aXN0aWMsIGNoZWNrIHRoZSB1c2VyIHNldHRpbmcgZm9yIGEgdGlnaHRlciByZXN0cmljdGlvbiAo
bWFpbmx5IGZvciB0ZXN0aW5nKS4KICAgICBpZiAodGhpcy0+cGFyYW1ldGVycygpLnRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgaWYgKFdhbGxUaW1lOjpub3coKSA+IG1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lICsgdGhpcy0+cGFyYW1ldGVycygpLnRpbWVUb0xpdmVV
c2VySW50ZXJhY3Rpb24udmFsdWUoKSkKQEAgLTI4OTYsMTEgKzI5MTgsMTEgQEAgYm9vbCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQoV2Fs
bFRpbWUgbW9zdFJlY2UKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5n
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGJvb2wgaGFzVXNlckludGVyYWN0aW9u
LCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2
YWxlbnQpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRF
eHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
LCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFzVXNlckludGVy
YWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wg
aXNQcmV2YWxlbnQpCiB7CiAgICAgLy8gUG9wdWxhdGUgdGhlIE9wZXJhdGluZyBEYXRlcyB0YWJs
ZSB3aXRoIGVub3VnaCBkYXlzIHRvIHJlcXVpcmUgcHJ1bmluZy4KICAgICBkb3VibGUgZGF5c0Fn
b0luU2Vjb25kcyA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBvcGVyYXRpbmdE
YXRlc1dpbmRvd0xvbmc7IGkrKykgeworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gbnVt
YmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkOyBpKyspIHsKICAgICAgICAgZG91YmxlIGRheXNUb1N1
YnRyYWN0ID0gU2Vjb25kczo6ZnJvbUhvdXJzKDI0ICogaSkudmFsdWUoKTsKICAgICAgICAgZGF5
c0Fnb0luU2Vjb25kcyA9IFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVl
KCkgLSBkYXlzVG9TdWJ0cmFjdDsKICAgICAgICAgYXV0byBkYXRlVG9JbnNlcnQgPSBPcGVyYXRp
bmdEYXRlOjpmcm9tV2FsbFRpbWUoV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGRheXNBZ29JblNl
Y29uZHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmgKaW5kZXggNGNhOTQ3MDk0ZDk1NGNiM2MxODQ4N2VjNmM2NzYyZmNhYjk0OGI5Ny4u
YWE0Yzg5MmUzYzVlN2RiNjY3OTk2YTg2N2E2OTQyOTE1MDhlMjhiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTEyOCw3ICsx
MjgsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBhbGxEb21haW5z
KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBkb21haW5JREV4aXN0c0luRGF0YWJhc2UoaW50KTsK
ICAgICBPcHRpb25hbDxWZWN0b3I8U3RyaW5nPj4gY2hlY2tGb3JNaXNzaW5nVGFibGVzSW5TY2hl
bWEoKTsKLSAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgYm9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBo
YXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbnRlcnJ1cHQoKTsK
IAogICAgIC8vIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQuCkBAIC0yOTMsNiArMjkzLDggQEAg
cHJpdmF0ZToKICAgICBib29sIG1faXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VG
aWxlIHsgZmFsc2UgfTsKICAgICB1bnNpZ25lZCBtX29wZXJhdGluZ0RhdGVzU2l6ZSB7IDAgfTsK
ICAgICBPcGVyYXRpbmdEYXRlIG1fbGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlOworICAgIE9wdGlv
bmFsPE9wZXJhdGluZ0RhdGU+IG1fbG9uZ1dpbmRvd09wZXJhdGluZ0RhdGU7CisgICAgT3B0aW9u
YWw8T3BlcmF0aW5nRGF0ZT4gbV9zaG9ydFdpbmRvd09wZXJhdGluZ0RhdGU7CiAgICAgT3BlcmF0
aW5nRGF0ZSBtX21vc3RSZWNlbnRPcGVyYXRpbmdEYXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCA4MjMxYWU0Yjc1
ODdlOGVmODhhOTU1MzUzMjViZmZiZDBhZjJkOGNlLi40NWM1M2Y4YWU4Mzg2OWQ3ZDA1M2VkZmFl
N2EyNzg4ZDYxNzg0ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmNwcApAQCAtMTEzNywxMSArMTEzNywxMSBAQCBib29sIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQoY29uc3QgUmVz
b3VyY2VMb2FkUwogICAgIHJldHVybiBoYXNTdGF0aXN0aWNzRXhwaXJlZChyZXNvdXJjZVN0YXRp
c3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgb3BlcmF0aW5nRGF0ZXNXaW5kb3cp
OwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aW5zZXJ0RXhw
aXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwg
Ym9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVE
YXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNz
ZWQsIGJvb2wgaGFzVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29v
a2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQpCiB7CiAgICAgLy8gUG9wdWxhdGUgdGhl
IE9wZXJhdGluZyBEYXRlcyB0YWJsZSB3aXRoIGVub3VnaCBkYXlzIHRvIHJlcXVpcmUgcHJ1bmlu
Zy4KICAgICBkb3VibGUgZGF5c0Fnb0luU2Vjb25kcyA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMTsgaSA8PSBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmc7IGkrKykgeworICAgIGZvciAodW5z
aWduZWQgaSA9IDE7IGkgPD0gbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkOyBpKyspIHsKICAg
ICAgICAgZG91YmxlIGRheXNUb1N1YnRyYWN0ID0gU2Vjb25kczo6ZnJvbUhvdXJzKDI0ICogaSku
dmFsdWUoKTsKICAgICAgICAgZGF5c0Fnb0luU2Vjb25kcyA9IFdhbGxUaW1lOjpub3coKS5zZWNv
bmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgLSBkYXlzVG9TdWJ0cmFjdDsKICAgICAgICAgYXV0byBk
YXRlVG9JbnNlcnQgPSBPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUoV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKGRheXNBZ29JblNlY29uZHMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCBmZDFjZmZiMDkxMWU5MjNlMWRhNDhlNzBl
MGQzMzAwY2Q4NmVhODY5Li5kNTY0ZGVkODdiYzJjOWY0MjhjMmE3MWFlMDhhZjkyZWE1MDAwOGJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5o
CkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFzdFNlZW4oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mLCBTZWNvbmRzKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZURh
dGFGb3JEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBvdmVycmlkZTsKICAgICBWZWN0
b3I8UmVnaXN0cmFibGVEb21haW4+IGFsbERvbWFpbnMoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lk
IGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgYm9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29r
aWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnNl
cnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVu
c2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYXNVc2VySW50ZXJhY3Rp
b24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1By
ZXZhbGVudCkgb3ZlcnJpZGU7CiAKICAgICAvLyBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50IGlz
IG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgSVRQIG1lbW9yeSBzdG9yZS4KICAgICB2b2lkIGluc2Vy
dFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSBvdmVycmlkZSB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggNTI2MGVjOTc5
MDBiOGIxYzZiMTlmOGMyN2NhMDIxOTgyOTk5YjA0Ny4uNzViNGMzNmJjMzdhOWFhNmNlYTM2OTBi
NmQ1MjM2NGQzMzA0NjU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaApAQCAtMjAxLDcgKzIwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5jbHVk
ZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGNsZWFyT3BlcmF0aW5nRGF0ZXMoKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc1N0YXRpc3Rp
Y3NFeHBpcmVkKFdhbGxUaW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRp
bmdEYXRlc1dpbmRvdykgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFeHBpcmVk
U3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaGFzVXNl
ckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWws
IGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRl
c3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGlu
Z0RheXNQYXNzZWQsIGJvb2wgaGFzVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wpID0gMDsKICAgICAKICAgICAvLyBQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50LgogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAwMTA5ODdlZjQ0Yzg1NGY3NzJiMDI0
YTAzOTdmOTMzMmQzY2YyOTU1Li5kNTM4MTRmYWIzNDIyY2ZhMDkyYmQyZjEzNjNhOGM2N2ZmNDVi
NGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cApAQCAtMTQ2NCwxMyArMTQ2NCwxMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cmVzdW1lKCkKICAgICAgICAgc3VzcGVuZGVkU3RhdGVDaGFuZ2VDb25kaXRpb24ubm90
aWZ5T25lKCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppbnNl
cnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENv
b2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIGRvbWFpbiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29s
IGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAg
IHBvc3RUYXNrKFt0aGlzLCBkb21haW4gPSBkb21haW4uaXNvbGF0ZWRDb3B5KCksIGhhZFVzZXJJ
bnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2
YWxlbnQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENv
cHkoKSwgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBoYWRVc2VySW50ZXJhY3Rpb24sIGlz
U2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50LCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAg
ICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9y
ZS0+aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoV1RGTW92ZShkb21haW4pLCBoYWRV
c2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGlz
UHJldmFsZW50KTsKKyAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5pbnNlcnRFeHBpcmVk
U3RhdGlzdGljRm9yVGVzdGluZyhXVEZNb3ZlKGRvbWFpbiksIG51bWJlck9mT3BlcmF0aW5nRGF5
c1Bhc3NlZCwgaGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURh
dGFSZW1vdmFsLCBpc1ByZXZhbGVudCk7CiAgICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGU2N2ZhYWFjYzg1Njc4YjNiZjNhM2E1MWFjMzFk
Y2M3ODUyMGViZWEuLmQxMTQ2MjU3OTMzMDJjODc4NTc4ODg0YzcyNmI1OTc2OGUwMDViMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTMwNCw3
ICszMDQsNyBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewogICAgIHN0YXRpYyB2b2lkIHJlc3Vt
ZSgpOwogICAgIAogICAgIGJvb2wgaXNFcGhlbWVyYWwoKSBjb25zdCB7IHJldHVybiBtX2lzRXBo
ZW1lcmFsID09IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpZ
ZXM7IH07Ci0gICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1
bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9y
VGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0
aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRG
b3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIC8vIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQuCiAg
ICAgdm9pZCBpbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IDY5ZTcxZWYxODJiMDMzMzBjZWFhMDA4NDQ1NjkwODJmODQ0MjVlMDMuLjBlYTVmYWZhNjdl
OWE0ZDFiMWU0ZTU2MmRlMTc2MjFlMWE3MDIzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC05NTAsMTEgKzk1MCwxMSBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBSZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5z
ZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwg
Ym9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFs
ZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIHVuc2ln
bmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24s
IGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZh
bGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3
b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoZG9tYWlu
LCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwsIGlzUHJldmFsZW50LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGlu
Zyhkb21haW4sIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgaGFkVXNlckludGVyYWN0aW9u
LCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYTRiNTI3MDI5Y2RmNmU5ODFlNThmMzk1MTk3
ZjU0ZmYxOWQ0YzMzZi4uMDgzMjJiNDI3MjBkZjgyN2ViNWUzYTAzOGNmMTM4MTFjY2I2N2Q3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAt
MjQzLDcgKzI0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhc3RTZWVuKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBkb21haW5JREV4aXN0c0luRGF0YWJhc2UoUEFMOjpTZXNz
aW9uSUQsIGludCBkb21haW5JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAg
ICAgdm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluMSwg
Y29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluMiwgU2Vjb25kcyBsYXN0U2Vlbiwg
Ym9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
biwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJl
dmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7Ci0gICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhZFVzZXJJbnRlcmFj
dGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlz
UHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgaW5zZXJ0
RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhh
ZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1v
dmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lv
bklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0
Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChQQUw6OlNlc3Npb25JRCwgYm9v
bCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldElzUnVu
bmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KFBBTDo6U2Vzc2lvbklELCBib29sIHZhbHVl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNTU1YTQ0
MGMzMDU0NzdkZTNkNGI1MDg1NWQ0OTljYWIzNGMxMmYyMC4uYzM0MGJlZmMwZjBmZmM2NWVlZDhl
MTgxY2M2OTZlNzg4Y2EzMGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC05Miw3ICs5Miw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRBZ2VDYXBG
b3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvbmFsPFNl
Y29uZHM+IHNlY29uZHMpIC0+ICgpIEFzeW5jCiAgICAgU2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbiwg
U2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwogICAgIE1lcmdlU3RhdGlzdGljRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJl
c291cmNlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbjEs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluMiwgU2Vjb25kcyBsYXN0
U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNW
ZXJ5UHJldmFsZW50LCB1aW50NjRfdCBkYXRhUmVjb3Jkc1JlbW92ZWQpIC0+ICgpIEFzeW5jCi0g
ICAgSW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbiwgYm9vbCBoYWRV
c2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3Zh
bCwgYm9vbCBpc1ByZXZhbGVudCkgLT4gKCkgQXN5bmMKKyAgICBJbnNlcnRFeHBpcmVkU3RhdGlz
dGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHJlc291cmNlRG9tYWluLCB1aW50NjRfdCBudW1iZXJPZk9wZXJhdGluZ0RheXNQ
YXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0
Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQpIC0+ICgpIEFzeW5jCiAgICAgU2V0
UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbikgLT4gKCkgQXN5bmMKICAgICBTZXRQcmV2YWxl
bnRSZXNvdXJjZUZvckRlYnVnTW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwogICAgIElzUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VwaGVtZXJhbChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+
IChib29sIGlzRXBoZW1lcmFsKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggZTcxYTY0ZGM1ODE1
OWJiOTBlN2NmNTNhYTI5YjRlYmVlYmUxNjUwMi4uZDkyMjg3ZDMzZDA1MjFjYmU1MmU3NWFmOTJj
YzM1NDE2NTU2ZTBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC0yMTQsMTAgKzIxNCwxMCBAQCB2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0bwogI2VuZGlmCiB9CiAKLXZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wg
aXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc01lcmdlU3RhdGlzdGlj
RnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0
YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3Nl
ZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29r
aWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc01lcmdlU3RhdGlzdGljRnVuY3Rpb24gY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJLaXQ6
OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5pbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhV
UkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIGhhZFVzZXJJbnRlcmFj
dGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQs
IFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPmluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2Vi
S2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2Vk
LCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwsIGlzUHJldmFsZW50LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CiAgICAgfSk7CiAjZWxzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRl
eCBmZDQxNzZkNGYyZTJlMDRkNjQzNDhjN2E5OWIxOGEwYmViOWZhZGY3Li5kNWM5ZWVlMmE0MDRm
ZDNjYjQ3YzlmODc3MzVjMzk3NjgxZDI5M2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtNzUsNyArNzUsNyBA
QCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTGFzdFNlZW4o
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdAogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc01lcmdlU3RhdGlzdGljRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWVyZ2VT
dGF0aXN0aWMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYg
aG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVEb21haW4xLCBXS1N0cmluZ1JlZiB0b3BGcmFtZURv
bWFpbjIsIGRvdWJsZSBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGRvdWJsZSBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1By
ZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3Zl
ZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc01lcmdlU3RhdGlz
dGljRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWNGdW5jdGlvbikodm9pZCogZnVuY3Rp
b25Db250ZXh0KTsKLVdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NFeHBpcmVkU3RhdGlzdGljKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIGhvc3QsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVk
Rm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljRnVuY3Rpb24g
Y29tcGxldGlvbkhhbmRsZXIpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFz
c2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENv
b2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpY0Z1bmN0aW9uIGNvbXBsZXRpb25I
YW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZUZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JU
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wg
dmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcmV2YWxl
bnRSZXNvdXJjZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldL
V2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2VGdW5jdGlvbiko
dm9pZCogZnVuY3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGEyYmVlZDgzNWEzNGZi
ZTE5NjAzOGZiZmVhOGY3YTJiZjI0Njk4Y2QuLjIzMmM2NjA5Y2MyNTY4NzU4MTRiNzZjNjgzNmNh
ZGZmZDdlZjc4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNzAwLDkgKzcwMCw5IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6TWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKHNlc3Npb25JRCwgcmVzb3VyY2VEb21h
aW4sIHRvcEZyYW1lRG9tYWluMSwgdG9wRnJhbWVEb21haW4yLCBsYXN0U2VlbiwgaGFkVXNlcklu
dGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBpc0dyYW5kZmF0aGVyZWQsIGlz
UHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3ZlZCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjppbnNl
cnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgYm9vbCBoYWRVc2VySW50ZXJh
Y3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBp
c1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVz
dGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZXNvdXJjZURvbWFpbiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29s
IGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6SW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3Rpbmcoc2Vzc2lvbklELCBy
ZXNvdXJjZURvbWFpbiwgaGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENv
b2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpJbnNl
cnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBu
dW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJQcmV2
YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBlZjkyMTFkOWMwMWQ2OGM1MjM5MGMzNDM1ZjNh
MTQ3ZTk3ZWRlZjlmLi5kY2MxZDdmYzUzZTAzYjM0OWExNjFjOTYwNjg4OWEzOGJmYWIzOWI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMTUwLDcgKzE1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRvbWFpbklE
RXhpc3RzSW5EYXRhYmFzZShQQUw6OlNlc3Npb25JRCwgaW50IGRvbWFpbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHN0YXRpc3RpY3NEYXRhYmFzZUhhc0Fs
bFRhYmxlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWlu
MSwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluMiwgU2Vjb25kcyBsYXN0U2Vl
biwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFj
dGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5
UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7Ci0gICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29s
IGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgaW5z
ZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29s
IGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIE9w
dGlvbmFsPFNlY29uZHM+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2V0Q2FjaGVNYXhBZ2VDYXAoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA4YjQzM2U5MTFhODI1
ZDM1YjI1MDY1YjIxODI5NTI2ZDg2M2FjNzQxLi44MjY5ZTdmOGRmZmZiYmJmYmFlNWU5OTdkZGFm
NGJhYzY5ZWYxNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTU1MSw3ICsxNTUxLDcgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFVSTCYgdG9wRnIKICAgICBuZXR3b3JrUHJvY2VzcygpLm1lcmdlU3RhdGlzdGlj
Rm9yVGVzdGluZyhtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwg
fSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB0b3BGcmFtZVVybDEgfSwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4geyB0b3BGcmFtZVVybDIgfSwgbGFzdFNlZW4sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgaXNHcmFuZGZhdGhlcmVkLCBpc1By
ZXZhbGVudCwgaXNWZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jkc1JlbW92ZWQsIFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdIHsgfSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5zZXJ0RXhwaXJl
ZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgVVJMJiB1cmwsIGJvb2wgaGFkVXNlckludGVyYWN0
aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQ
cmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3Rpbmco
Y29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9v
bCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRh
UmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICh1cmwucHJvdG9jb2xJc0Fib3V0KCkgfHwgdXJs
LmlzRW1wdHkoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTU2MCw3ICsx
NTYwLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9y
VGVzdGluZyhjb25zdCBVUkwmIHVybCwgYm9vbCBoYWQKIAogICAgIGF1dG8gY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogCi0gICAgbmV0d29ya1Byb2Nlc3MoKS5pbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9y
VGVzdGluZyhtX3Nlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwg
aGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFs
LCBpc1ByZXZhbGVudCwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICBuZXR3b3JrUHJv
Y2VzcygpLmluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNz
ZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbCwgaXNQcmV2YWxlbnQsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZChib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKaW5kZXggM2Y2NjY4NDk5NWFiNjc1Y2NmNTVlMTFhZWI4ZTIyMDg5YmQz
NzQ1MC4uNWE3ZjU3N2M0YWU0MDg4ZTUyZDQ3MmFmNWU4OTAzNjhkYzU3ODRmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaApAQCAtMTk3LDcgKzE5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRvbWFpbklERXhpc3Rz
SW5EYXRhYmFzZShpbnQgZG9tYWluSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogICAgIHZvaWQgc3RhdGlzdGljc0RhdGFiYXNlSGFzQWxsVGFibGVzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKGNv
bnN0IFVSTCYsIGNvbnN0IFVSTCYgdG9wRnJhbWVVcmwxLCBjb25zdCBVUkwmIHRvcEZyYW1lVXJs
MiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2
YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBpbnNlcnRFeHBpcmVkU3Rh
dGlzdGljRm9yVGVzdGluZyhjb25zdCBVUkwmLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9v
bCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0
YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgVVJMJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdE
YXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFs
bEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0
SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3QoYm9vbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFBydW5lRW50cmllc0Rvd25UbyhzaXplX3QsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDZlODU0NjljZDNhZDk5NTFkNjA2MGM5NWUyZWEwNTg0
NjJhNjRhMC4uZjhlMmI1N2JmMmNmMWFlZmQzZDI2YTU2OTIyNzQ5ZDkwZDNkM2U3MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDIxLTAyLTI1ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisg
ICAgICAgIE5vbi1jb29raWUgd2Vic2l0ZSBkYXRhIG5vdCBkZWxldGVkIGFmdGVyIDcgZGF5cyBv
ZiBicm93c2VyIHVzZSB3aXRob3V0IHVzZXIgaW50ZXJhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjI0OAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNzQ2MTI1ODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQSBuZXcgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkIHBhcmFtZXRlciB3YXMg
YWRkZWQgdG8KKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3Rp
YygpIHRvIGNvbnRyb2wgdGhlIGV4YWN0CisgICAgICAgIG51bWJlciBvZiBvcGVyYXRpbmcgZGF5
cyBwYXNzZWQgc2luY2UgdXNlciBpbnRlcmFjdGlvbi4KKworICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246
OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAyMS0wMi0yNSAgQ29t
bWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcmV2ZXJ0aW5nIHIyNzM1MDMuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCAzY2Vm
YTg2M2Y1Nzc0OTQzMTM5MDc1ZjRjMDYwM2I5NWZhODU3MzQ5Li5lNzIyMThiOWQ0MGVjYjYyMTgy
MTkyZmZiNzQ0YzFjYWYxMDcxOGM4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTI5
NCw3ICsyOTQsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdW5kZWZpbmVkIHNldFN0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShET01TdHJpbmcgaG9zdE5hbWUs
IG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdW5kZWZpbmVkIHNldFN0YXRpc3RpY3NM
YXN0U2VlbihET01TdHJpbmcgaG9zdE5hbWUsIGRvdWJsZSBzZWNvbmRzLCBvYmplY3QgY29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIHVuZGVmaW5lZCBzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMo
RE9NU3RyaW5nIGhvc3ROYW1lLCBET01TdHJpbmcgdG9wRnJhbWVEb21haW4xLCBET01TdHJpbmcg
dG9wRnJhbWVEb21haW4yLCBkb3VibGUgbGFzdFNlZW4sIGJvb2xlYW4gaGFkVXNlckludGVyYWN0
aW9uLCBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbGVhbiBpc0dyYW5kZmF0
aGVyZWQsIGJvb2xlYW4gaXNQcmV2YWxlbnQsIGJvb2xlYW4gaXNWZXJ5UHJldmFsZW50LCB1bnNp
Z25lZCBsb25nIGRhdGFSZWNvcmRzUmVtb3ZlZCwgb2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsK
LSAgICB1bmRlZmluZWQgc2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoRE9NU3RyaW5nIGhv
c3ROYW1lLCBib29sZWFuIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbGVhbiBpc1NjaGVkdWxlZEZv
ckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sZWFuIGlzUHJldmFsZW50LCBvYmplY3QgY29t
cGxldGlvbkhhbmRsZXIpOworICAgIHVuZGVmaW5lZCBzZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRp
c3RpYyhET01TdHJpbmcgaG9zdE5hbWUsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPcGVyYXRpbmdE
YXlzUGFzc2VkLCBib29sZWFuIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbGVhbiBpc1NjaGVkdWxl
ZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sZWFuIGlzUHJldmFsZW50LCBvYmplY3Qg
Y29tcGxldGlvbkhhbmRsZXIpOwogICAgIHVuZGVmaW5lZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2UoRE9NU3RyaW5nIGhvc3ROYW1lLCBib29sZWFuIHZhbHVlLCBvYmplY3QgY29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIHVuZGVmaW5lZCBzZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJl
c291cmNlKERPTVN0cmluZyBob3N0TmFtZSwgYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNvbXBsZXRp
b25IYW5kbGVyKTsKICAgICBib29sZWFuIGlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKERP
TVN0cmluZyBob3N0TmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA5NDllZWU4ZjI1NmFlNjNmNjMwNDQ0MzZh
Njk3YmNhMDFkYzBlYzhmLi4wOTI2ZGNhMzU3OGUyMzE4ZTZhNmEwM2M1ZDdlMGJlNzFmYzczZTE5
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAKQEAgLTEyMjgsMTIgKzEyMjgsMTMgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0
aXN0aWNzQ2FsbERpZFNldE1lcmdlU3RhdGlzdGljQ2FsbGJhY2soKQogICAgIGNhbGxUZXN0UnVu
bmVyQ2FsbGJhY2soU2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljQ2FsbGJhY2tJRCk7CiB9CiAK
LXZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoSlNTdHJpbmdS
ZWYgaG9zdE5hbWUsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIEpTVmFsdWVSZWYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NFeHBpcmVkU3Rh
dGlzdGljKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0Rh
eXNQYXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIEpTVmFsdWVSZWYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soU2V0U3RhdGlzdGlj
c0V4cGlyZWRTdGF0aXN0aWNDYWxsYmFja0lELCBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICBw
b3N0TWVzc2FnZSgiU2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMiLCBjcmVhdGVXS0RpY3Rp
b25hcnkoewogICAgICAgICB7ICJIb3N0TmFtZSIsIHRvV0soaG9zdE5hbWUpIH0sCisgICAgICAg
IHsgIk51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUo
bnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkKSkgfSwKICAgICAgICAgeyAiSGFkVXNlckludGVy
YWN0aW9uIiwgYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaGFkVXNlckludGVyYWN0aW9uKSkgfSwK
ICAgICAgICAgeyAiSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCIsIGFkb3B0
V0soV0tCb29sZWFuQ3JlYXRlKGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwp
KSB9LAogICAgICAgICB7ICJJc1ByZXZhbGVudCIsIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGlz
UHJldmFsZW50KSkgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAyZjNjNTI5ZWQ0ZGE2ZDdkOGQ4MWJhYjg0YWQ2NDcyNmEy
YzRiOGQzLi5jYWY3ZDdmYWNmMmJiNWI2YTMwNzAzMDc3MTk1NzU1MmYwYTBlMWUyIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApA
QCAtMzg2LDcgKzM4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0
TGFzdFNlZW5DYWxsYmFjaygpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGlj
KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiB0b3BGcmFtZURvbWFpbjEsIEpTU3Ry
aW5nUmVmIHRvcEZyYW1lRG9tYWluMiwgZG91YmxlIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgZG91YmxlIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZh
dGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQg
ZGF0YVJlY29yZHNSZW1vdmVkLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2
b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0TWVyZ2VTdGF0aXN0aWNDYWxsYmFjaygpOwotICAgIHZv
aWQgc2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJv
b2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0
YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIp
OworICAgIHZvaWQgc2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoSlNTdHJpbmdSZWYgaG9z
dE5hbWUsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2Vy
SW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwg
Ym9vbCBpc1ByZXZhbGVudCwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9p
ZCBzdGF0aXN0aWNzQ2FsbERpZFNldEV4cGlyZWRTdGF0aXN0aWNDYWxsYmFjaygpOwogICAgIHZv
aWQgc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBi
b29sIHZhbHVlLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRp
c3RpY3NDYWxsRGlkU2V0UHJldmFsZW50UmVzb3VyY2VDYWxsYmFjaygpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBlNTJhZTEyOGE1Y2MwMjdkMDRiYzgy
MWJkMDBkMzlmYjYyMjNkODVhLi42ZDczYWJjM2I2ZGEzMzFjZjcxMmI3MGIzODRkMGQxOGNjMzky
ZGQ2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzA3
OSwxMCArMzA3OSwxMCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTWVyZ2VT
dGF0aXN0aWMoV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgdAogICAgIG1fY3VycmVudElu
dm9jYXRpb24tPmRpZE1lcmdlU3RhdGlzdGljKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6
OnNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgaGFk
VXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwsIGJvb2wgaXNQcmV2YWxlbnQpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNz
RXhwaXJlZFN0YXRpc3RpYyhXS1N0cmluZ1JlZiBob3N0LCB1bnNpZ25lZCBudW1iZXJPZk9wZXJh
dGluZ0RheXNQYXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVk
Rm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQpCiB7CiAgICAgUmVz
b3VyY2VTdGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOwotICAgIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKHdlYnNpdGVEYXRhU3Rv
cmUoKSwgaG9zdCwgaGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tp
ZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGljc1Zv
aWRSZXN1bHRDYWxsYmFjayk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0V4
cGlyZWRTdGF0aXN0aWMod2Vic2l0ZURhdGFTdG9yZSgpLCBob3N0LCBudW1iZXJPZk9wZXJhdGlu
Z0RheXNQYXNzZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29r
aWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQsICZjb250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NW
b2lkUmVzdWx0Q2FsbGJhY2spOwogICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0
KTsKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRFeHBpcmVkU3RhdGlzdGljKCk7CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggOWU1YWE3OWM5OGUz
MDA3Nzg1ODBmNmExODhjYWM2ZmFlNzQ2YjE3MS4uNDM2NGQzYmQ0MTUzNTMxMzNjNDk0ZmY3YWE1
ZjE1OTQxNGQwYjYyYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApA
QCAtMjE0LDcgKzIxNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3RpY3NQcmV2YWxl
bnRSZXNvdXJjZUZvckRlYnVnTW9kZShXS1N0cmluZ1JlZiBob3N0TmFtZSk7CiAgICAgdm9pZCBz
ZXRTdGF0aXN0aWNzTGFzdFNlZW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGRvdWJsZSBzZWNvbmRz
KTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhXS1N0cmluZ1JlZiBob3N0
LCBXS1N0cmluZ1JlZiB0b3BGcmFtZURvbWFpbjEsIFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWlu
MiwgZG91YmxlIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgZG91YmxlIG1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFs
ZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgaW50IGRhdGFSZWNvcmRzUmVtb3ZlZCk7Ci0gICAg
dm9pZCBzZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhXS1N0cmluZ1JlZiBob3N0LCBib29s
IGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsLCBib29sIGlzUHJldmFsZW50KTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NFeHBpcmVk
U3RhdGlzdGljKFdLU3RyaW5nUmVmIGhvc3QsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5
c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxC
dXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCk7CiAgICAgdm9pZCBzZXRTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUp
OwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1Jl
ZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSk7CiAgICAgU3RyaW5nIGR1bXBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4
IGFlZjgyMzNiMDM4Y2Y1YTQwZTY5OWFiNzM0OTgxMGI2NzE3NTgwY2YuLjM1ZjFmZTVjYzU3N2Vh
Nzg0ZWVlYzRmNzI3NzVkYTgyYTE0YjQwNDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCkBAIC02NzcsMTAgKzY3NywxMSBAQCB2b2lkIFRlc3RJbnZvY2F0aW9u
OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdl
TmFtZQogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
U2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMiKSkgewogICAgICAgICBhdXRvIG1lc3NhZ2VC
b2R5RGljdGlvbmFyeSA9IGRpY3Rpb25hcnlWYWx1ZShtZXNzYWdlQm9keSk7CiAgICAgICAgIGF1
dG8gaG9zdE5hbWUgPSBzdHJpbmdWYWx1ZShtZXNzYWdlQm9keURpY3Rpb25hcnksICJIb3N0TmFt
ZSIpOworICAgICAgICBhdXRvIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCA9IHVpbnQ2NFZh
bHVlKG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgIk51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCIp
OwogICAgICAgICBhdXRvIGhhZFVzZXJJbnRlcmFjdGlvbiA9IGJvb2xlYW5WYWx1ZShtZXNzYWdl
Qm9keURpY3Rpb25hcnksICJIYWRVc2VySW50ZXJhY3Rpb24iKTsKICAgICAgICAgYXV0byBpc1Nj
aGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsID0gYm9vbGVhblZhbHVlKG1lc3NhZ2VC
b2R5RGljdGlvbmFyeSwgIklzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwiKTsK
ICAgICAgICAgYXV0byBpc1ByZXZhbGVudCA9IGJvb2xlYW5WYWx1ZShtZXNzYWdlQm9keURpY3Rp
b25hcnksICJJc1ByZXZhbGVudCIpOwotICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuc2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoaG9zdE5hbWUsIGhhZFVzZXJJbnRlcmFj
dGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQp
OworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc0V4cGly
ZWRTdGF0aXN0aWMoaG9zdE5hbWUsIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgaGFkVXNl
ckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1By
ZXZhbGVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNWQ5NmFjYTMyZmFh
ZjA2Mzk1OTUxZWJjNDA3ZjAzMTM2YjhkOWZiLi5mM2IyZTYwODNkODNkYTMwYjI1NzU2ODNmNzkz
MzZlNTgxMDQ4ZTk2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDItMjUgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgTm9uLWNvb2tpZSB3ZWJzaXRl
IGRhdGEgbm90IGRlbGV0ZWQgYWZ0ZXIgNyBkYXlzIG9mIGJyb3dzZXIgdXNlIHdpdGhvdXQgdXNl
ciBpbnRlcmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyMjQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDYxMjU4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeGlzdGluZyB0ZXN0IGNh
c2VzIG5vdyBtYWtlIHVzZSBvZiB0aGUgbmV3IG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZAor
ICAgICAgICBwYXJhbWV0ZXIgdG8gdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRp
c3RpYygpIHRvIGNvbnRyb2wgdGhlIGV4YWN0CisgICAgICAgIG51bWJlciBvZiBvcGVyYXRpbmcg
ZGF5cyBwYXNzZWQgc2luY2UgdXNlciBpbnRlcmFjdGlvbi4KKyAgICAgICAgQSBuZXcgdGVzdCBj
YXNlIG1ha2VzIHN1cmUgd2Vic2l0ZSBkYXRhIGlzIG5vdCBkZWxldGVkIGJlbG93IHRoZSB0aHJl
c2hvbGQuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3Bl
cmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1ub3QtcmVtb3ZlZC13aXRoLXVzZXItaW50ZXJh
Y3Rpb24tNi1kYXlzLWFnby1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVz
LW5vdC1yZW1vdmVkLXdpdGgtdXNlci1pbnRlcmFjdGlvbi02LWRheXMtYWdvLmh0bWw6IEFkZGVk
LgorICAgICAgICAgICAgU2V0cyBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQgdG8gNi4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVz
LWFsbC1idXQtY29va2llcy1yZW1vdmVkLXdpdGgtdXNlci1pbnRlcmFjdGlvbi03LWRheXMtYWdv
LWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQt
c3RhdGlzdGljcy13aXRoLW5vLXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0LgorICAgICAg
ICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxs
LWJ1dC1jb29raWVzLXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0aW9uLTctZGF5cy1hZ28uaHRt
bDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtc3RhdGlzdGljcy13
aXRoLW5vLXVzZXItaW50ZXJhY3Rpb24uaHRtbC4KKyAgICAgICAgICAgIFNldHMgbnVtYmVyT2ZP
cGVyYXRpbmdEYXlzUGFzc2VkIHRvIDcuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQuaHRt
bDoKKyAgICAgICAgICAgIFNldHMgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkIHRvIDMwLgor
ICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAgICAgVXBk
YXRlZCBleGlzdGluZyBleHBlY3RhdGlvbiB3aXRoIG5ldyBmaWxlIG5hbWUuCisKIDIwMjEtMDIt
MjUgIEFtaXIgTWFyayBKciAgPGFtaXJfbWFya0BhcHBsZS5jb20+CiAKICAgICAgICAgW0JpZ1N1
ciB3azFdIHN2Zy9jYW52YXMvY2FudmFzLWdsb2JhbC1hbHBoYS1zdmcuaHRtbCBpcyBmbGFrZXkg
ZmFpbGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtbm90LXJlbW92ZWQtd2l0
aC11c2VyLWludGVyYWN0aW9uLTYtZGF5cy1hZ28tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0
LWNvb2tpZXMtbm90LXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0aW9uLTYtZGF5cy1hZ28tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0ZWEzNDg1MTY1YTM0ZTI1YTFmMzU2NjEwZWVjYWEyNGVl
ZjA1MTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1ub3QtcmVtb3Zl
ZC13aXRoLXVzZXItaW50ZXJhY3Rpb24tNi1kYXlzLWFnby1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBDbGllbnQtc2lkZSBjb29r
aWUgZXhpc3RzLgorQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSHR0cE9ubHkgY29va2ll
IGV4aXN0cy4KK0JlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IFJlZ3VsYXIgc2VydmVyLXNp
ZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3Rv
cmFnZSBlbnRyeSBkb2VzIGV4aXN0LgorQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURC
IGVudHJ5IGRvZXMgZXhpc3QuCisKK0FmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSHR0cE9u
bHkgY29va2llIGV4aXN0cy4KK0FmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogQ2xpZW50LXNp
ZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogUmVndWxhciBz
ZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBM
b2NhbFN0b3JhZ2UgZW50cnkgZG9lcyBleGlzdC4KK0FmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2lu
ZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNv
b2tpZXMtbm90LXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0aW9uLTYtZGF5cy1hZ28uaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmct
ZGF0ZXMtYWxsLWJ1dC1jb29raWVzLW5vdC1yZW1vdmVkLXdpdGgtdXNlci1pbnRlcmFjdGlvbi02
LWRheXMtYWdvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhjMjE4YmRkN2MzOTNhYjA0OGU3MzY3Y2IyOTQz
YWQ4ZTgyMDhmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLW5vdC1y
ZW1vdmVkLXdpdGgtdXNlci1pbnRlcmFjdGlvbi02LWRheXMtYWdvLmh0bWwKQEAgLTAsMCArMSwy
NjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0i
L2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBv
bmxvYWQ9InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxicj4KKzxkaXYgaWQ9Im91dHB1
dCI+PC9kaXY+Cis8YnI+Cis8c2NyaXB0PgorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgY29uc3QgaHR0cE9ubHlDb29r
aWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNvbnN0IHNlcnZlclNpZGVDb29raWVO
YW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29uc3QgY2xpZW50U2lkZUNvb2tpZU5h
bWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdBcnJh
eShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIGIgPSBiLnRv
TG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEgOiAw
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVicmVha1RvT3V0cHV0KCkgeworICAgICAg
ICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7CisgICAgICAgIG91
dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRPdXRw
dXQobWVzc2FnZSkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9IG1lc3NhZ2U7CisgICAgICAg
IG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVj
a0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgIGxldCB1bnNvcnRlZFRlc3RQYXNz
ZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRDb29r
aWVzKCk7CisgICAgICAgIGlmICghY29va2llcy5sZW5ndGggJiYgaXNBZnRlckRlbGV0aW9uKQor
ICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsgIk5vIGNvb2tpZXMgZm91bmQuIik7Cisg
ICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICBzd2l0Y2gg
KGNvb2tpZS5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSBodHRwT25seUNvb2tpZU5hbWU6
CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlz
QWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vz
c2luZzogIiArIChpc0FmdGVyRGVsZXRpb24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2ll
IGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSBzZXJ2ZXJTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRU
ZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZv
cmUiKSArICIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tp
ZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgY2xpZW50U2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVk
VGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVm
b3JlIikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0
cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgbGV0IHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IHVuc29ydGVkVGVzdFBh
c3NlZE1lc3NhZ2VzLnNvcnQoc29ydFN0cmluZ0FycmF5KTsKKyAgICAgICAgZm9yIChsZXQgdGVz
dFBhc3NlZE1lc3NhZ2Ugb2Ygc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzKSB7CisgICAgICAgICAg
ICBhZGRPdXRwdXQodGVzdFBhc3NlZE1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorCisgICAg
Y29uc3QgZGJOYW1lID0gIlRlc3REYXRhYmFzZSI7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVJREJE
YXRhU3RvcmUoY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3QgPSBpbmRleGVkREIub3Bl
bihkYk5hbWUpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3QgY3JlYXRlIGluZGV4ZWREQi4iKTsKKyAgICAgICAg
ICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgbGV0IGRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGxldCBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCJ0ZXN0Iiwge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKKyAgICAgICAgICAgIG9ialN0b3Jl
LmFkZCgidmFsdWUiKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBjb25zdCBtYXhJbnRlcnZhbHMgPSAyMDsKKworICAgIGxldCBpbnRlcnZhbENvdW50
ZXJJREI7CisgICAgbGV0IGNoZWNrSURCQ2FsbGJhY2s7CisgICAgbGV0IGNoZWNrSURCSW50ZXJ2
YWxJRDsKKyAgICBsZXQgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICBmdW5jdGlvbiBj
aGVja0lEQkRhdGFTdG9yZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7CisgICAg
ICAgIGxldCByZXF1ZXN0OworICAgICAgICBpbnRlcnZhbENvdW50ZXJJREIgPSAwOworICAgICAg
ICBjaGVja0lEQkNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0
aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4KKyAgICAg
ICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAg
ICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsK
KyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOwor
ICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Np
bmc6IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2Vt
YXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxs
YmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVh
ckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBh
ZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAgICAg
ICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJ
bnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0
YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBJREIuCisgICAgICAgICAgICBj
aGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAg
ICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAg
ICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAg
ICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIg
ZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hl
Y2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRl
eGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNo
ZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNv
dWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBo
b3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBj
bGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMg
bm90IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50
ZXJ2YWwgY2hlY2sgYWdhaW4gYmVjYXVzZSBkZWxldGlvbiBtaWdodCBiZSBkZWxheWVkLgorICAg
ICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOwor
ICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZTsK
KyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7Cisg
ICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNr
TG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAg
aW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgewor
ICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAgICAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49
IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNr
TG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9
IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFn
ZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2Vz
IG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAg
ICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3Rv
cmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0
aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0
b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
LyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVj
a0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2
YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3Jh
Z2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9y
YWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91
dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiAr
ICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIg
ZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2so
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hh
c0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAg
ICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7
CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNz
aW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUg
PyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAg
IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9LCAxMDApOworICAgICAgICB9CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rpb24gd3Jp
dGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICAvLyBXcml0ZSBjb29raWVzLgor
ICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29v
a2llLnBocD9jb29raWVOYW1lPSIgKyBodHRwT25seUNvb2tpZU5hbWUsIHsgY3JlZGVudGlhbHM6
ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJj
ZXMvc2V0Q29va2llcy5jZ2kiLCB7IGhlYWRlcnM6IHsgIlNldC1Db29raWUiOiBzZXJ2ZXJTaWRl
Q29va2llTmFtZSArICI9MTsgcGF0aD0vOyIgfSwgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIg
fSk7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNsaWVudFNpZGVDb29raWVOYW1lICsgIj0x
IjsKKworICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UpOworCisgICAgICAgIC8vIFdyaXRlIExv
Y2FsU3RvcmFnZQorICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1l
LCBsb2NhbFN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGZh
bHNlLCBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgLy8gV3JpdGUgSW5kZXhlZERCLgorICAg
ICAgICAgICAgY3JlYXRlSURCRGF0YVN0b3JlKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICAgICAgICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7CisgICAgICAgICAgICAgICAgICAgIHBy
b2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJvY2Vzc1dl
YnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRp
c3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjaGVja1dlYnNpdGVEYXRhQW5kQ29udGlu
dWUpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERh
dGFSZWNvcmRzKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tXZWJzaXRlRGF0YUFuZENv
bnRpbnVlKCkgeworICAgICAgICBjaGVja0Nvb2tpZXModHJ1ZSk7CisgICAgICAgIGNoZWNrTG9j
YWxTdG9yYWdlRXhpc3RzKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGNoZWNrSURC
RGF0YVN0b3JlRXhpc3RzKHRydWUsIGZpbmlzaFRlc3QpOworICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBjb25zdCBvcmlnaW5VbmRlclRlc3QgID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7Cisg
ICAgY29uc3Qgb3RoZXJPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIgorICAgIGNvbnN0
IHRvcEZyYW1lT3JpZ2luID0gImh0dHA6Ly8xMjcuMC4wLjI6ODAwMCI7CisgICAgY29uc3QgdGlt
ZVN0YW1wID0gTWF0aC5yb3VuZCgobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMCk7CisgICAg
ZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlz
dGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihvcmlnaW5VbmRlclRlc3QpKQorICAgICAgICAgICAg
YWRkT3V0cHV0KCJGQUlMOiAiICsgb3JpZ2luVW5kZXJUZXN0ICsgIiBkb2Vzbid0IGhhdmUgdXNl
ciBpbnRlcmFjdGlvbiBhZnRlciBwcm9jZXNzaW5nLiIpOworICAgICAgICByZXNldENvb2tpZXMo
KTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
Ly8gRG8gbm90IHVzZSBzZXRFbmFibGVGZWF0dXJlIGhlcmUgYmVjYXVzZSB3ZSB3YW50IHRvIG1h
a2Ugc3VyZSB3ZWJzaXRlIGRhdGEgZGVsZXRpb24gaXMgbm90IHNraXBwZWQKKyAgICAvLyBieSB0
aGUgcHJlc2VuY2Ugb2YgcGFyYW1ldGVycygpLmlzUnVubmluZ1Rlc3QuCisgICAgZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTWluaW11bVRpbWVC
ZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKDM2MDApOworICAgICAgICAvLyBNZXJnZSBhIHN0YXRp
c3RpYyB3aXRoIG5vIHVzZXIgaW50ZXJhY3Rpb24gdG8gY2hlY2sgdGhlIC0xIGNhc2UuCisgICAg
ICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKG90aGVyT3JpZ2luLCB0
b3BGcmFtZU9yaWdpbiwgIiIsIHRpbWVTdGFtcCwgZmFsc2UsIC0xLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCAwLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGlj
c0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKG9y
aWdpblVuZGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgNiwgICAgIC8vIG51bWJlck9mT3Bl
cmF0aW5nRGF5c1Bhc3NlZAorICAgICAgICAgICAgICAgICAgICB0cnVlLCAgLy8gaGFzVXNlcklu
dGVyYWN0aW9uCisgICAgICAgICAgICAgICAgICAgIGZhbHNlLCAvLyBpc1NjaGVkdWxlZEZvckFs
bEJ1dENvb2tpZURhdGFSZW1vdmFsLAorICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gaXNQ
cmV2YWxlbnQKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgICAgIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC1zdGF0
aXN0aWNzLXdpdGgtbm8tdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1i
dXQtY29va2llcy1yZW1vdmVkLXN0YXRpc3RpY3Mtd2l0aC1uby11c2VyLWludGVyYWN0aW9uLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVhNWVhMjQxMDg1ZTRi
NTExYTgxMGY4OTZhYzRlMzQ5OWE4NDc0MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLXN0YXRpc3RpY3Mt
d2l0aC1uby11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0x
LDE0ICswLDAgQEAKLQotQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogQ2xpZW50LXNpZGUg
Y29va2llIGV4aXN0cy4KLUJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IEh0dHBPbmx5IGNv
b2tpZSBleGlzdHMuCi1CZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBSZWd1bGFyIHNlcnZl
ci1zaWRlIGNvb2tpZSBleGlzdHMuCi1CZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2Nh
bFN0b3JhZ2UgZW50cnkgZG9lcyBleGlzdC4KLUJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6
IElEQiBlbnRyeSBkb2VzIGV4aXN0LgotCi1BZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IEh0
dHBPbmx5IGNvb2tpZSBleGlzdHMuCi1BZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IENsaWVu
dC1zaWRlIGNvb2tpZSBleGlzdHMuCi1BZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IFJlZ3Vs
YXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KLUFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2lu
ZzogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgbm90IGV4aXN0LgotQWZ0ZXIgc3RhdGlzdGljcyBw
cm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuCi0KLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRl
cy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC1zdGF0aXN0aWNzLXdpdGgtbm8tdXNlci1pbnRlcmFj
dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC1zdGF0aXN0aWNzLXdpdGgt
bm8tdXNlci1pbnRlcmFjdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
NTViMWFiNmFlZjhkOTQ0NGM0YzE0MmEwNjI2ZjVjMGUxMjFiMjUxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92
ZWQtc3RhdGlzdGljcy13aXRoLW5vLXVzZXItaW50ZXJhY3Rpb24uaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDI1OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAg
PHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgotPC9o
ZWFkPgotPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KCdydW5UZXN0KCknLCAwKSI+Ci08YnI+Ci08
ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgotPGJyPgotPHNjcmlwdD4KLSAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLQotICAgIGNvbnN0
IGh0dHBPbmx5Q29va2llTmFtZSA9ICJodHRwLW9ubHktY29va2llIjsKLSAgICBjb25zdCBzZXJ2
ZXJTaWRlQ29va2llTmFtZSA9ICJzZXJ2ZXItc2lkZS1jb29raWUiOwotICAgIGNvbnN0IGNsaWVu
dFNpZGVDb29raWVOYW1lID0gImNsaWVudC1zaWRlLWNvb2tpZSI7Ci0KLSAgICBmdW5jdGlvbiBz
b3J0U3RyaW5nQXJyYXkoYSwgYikgewotICAgICAgICBhID0gYS50b0xvd2VyQ2FzZSgpOwotICAg
ICAgICBiID0gYi50b0xvd2VyQ2FzZSgpOwotCi0gICAgICAgIHJldHVybiBhID4gYiA/IDEgOiBi
ID4gYSA/IC0xIDogMDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBhZGRMaW5lYnJlYWtUb091dHB1
dCgpIHsKLSAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIp
OwotICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7Ci0gICAgfQotCi0gICAgZnVu
Y3Rpb24gYWRkT3V0cHV0KG1lc3NhZ2UpIHsKLSAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgZWxlbWVudC5pbm5lclRleHQgPSBtZXNz
YWdlOwotICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0ZXJEZWxldGlvbikgewotICAgICAgICBsZXQgdW5z
b3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSBbXTsKLSAgICAgICAgbGV0IGNvb2tpZXMgPSBpbnRl
cm5hbHMuZ2V0Q29va2llcygpOwotICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoICYmIGlzQWZ0
ZXJEZWxldGlvbikKLSAgICAgICAgICAgIGFkZE91dHB1dCgiRkFJTDogIiArICJObyBjb29raWVz
IGZvdW5kLiIpOwotICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgewotICAgICAg
ICAgICAgc3dpdGNoIChjb29raWUubmFtZSkgewotICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9u
bHlDb29raWVOYW1lOgotICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNz
YWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzdGF0
aXN0aWNzIHByb2Nlc3Npbmc6ICIgKyAoaXNBZnRlckRlbGV0aW9uID8gIiAiIDogIiIpICsgIkh0
dHBPbmx5IGNvb2tpZSBleGlzdHMuIik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIGNhc2Ugc2VydmVyU2lkZUNvb2tpZU5hbWU6Ci0gICAgICAgICAgICAgICAg
ICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJB
ZnRlciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogUmVndWxhciBzZXJ2
ZXItc2lkZSBjb29raWUgZXhpc3RzLiIpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIGNsaWVudFNpZGVDb29raWVOYW1lOgotICAgICAgICAgICAgICAg
ICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAi
QWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IENsaWVudC1zaWRl
IGNvb2tpZSBleGlzdHMuIik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSB1
bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7Ci0gICAgICAg
IGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcykg
ewotICAgICAgICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOwotCi0gICAgZnVuY3Rp
b24gY3JlYXRlSURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7Ci0gICAgICAgIGxldCByZXF1ZXN0ID0g
aW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKLSAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0ZSBpbmRleGVkREIu
Iik7Ci0gICAgICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgIH07Ci0gICAgICAgIHJlcXVl
c3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGxldCBk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgICAgICAgICBsZXQgb2JqU3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7Ci0gICAgICAg
ICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIik7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7Ci0KLSAgICBsZXQg
aW50ZXJ2YWxDb3VudGVySURCOwotICAgIGxldCBjaGVja0lEQkNhbGxiYWNrOwotICAgIGxldCBj
aGVja0lEQkludGVydmFsSUQ7Ci0gICAgbGV0IHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Ci0g
ICAgZnVuY3Rpb24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxs
YmFjaykgewotICAgICAgICBsZXQgcmVxdWVzdDsKLSAgICAgICAgaW50ZXJ2YWxDb3VudGVySURC
ID0gMDsKLSAgICAgICAgY2hlY2tJREJDYWxsYmFjayA9IGNhbGxiYWNrOwotICAgICAgICBpZiAo
IWlzQWZ0ZXJEZWxldGlvbikgewotICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMg
YSBJREIuCi0gICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9
IHRydWU7Ci0KLSAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4
SW50ZXJ2YWxzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJ
bnRlcnZhbElEKTsKLSAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlz
dGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuIik7Ci0gICAgICAgICAg
ICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAg
IGNoZWNrSURCQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKLSAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFn
YWluLgotICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsK
LSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVy
dmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRw
dXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAg
ICAgICAgfTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LCAyMDApOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8gSURCLgot
ICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkg
ewotICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsK
LQotICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZh
bHMpIHsKLSAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFs
SUQpOwotICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJv
Y2Vzc2luZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7Ci0gICAgICAgICAgICAgICAgICAgIHNl
bWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2Fs
bGJhY2soKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2xl
YXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOwotICAgICAgICAgICAgICAgICAgICAgICAg
YWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElE
QiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0
KCk7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0
IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluIGJlY2F1c2UgZGVsZXRpb24gbWlnaHQgYmUg
ZGVsYXllZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFs
c2U7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfSwgMjAwKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxldCBpbnRlcnZhbENvdW50ZXJM
b2NhbFN0b3JhZ2U7Ci0gICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2s7Ci0gICAgbGV0
IGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRDsKLSAgICBjb25zdCBsb2NhbFN0b3JhZ2VOYW1l
ID0gInRlc3QiOwotICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZhbHVlID0gInZhbHVlIjsKLSAgICBm
dW5jdGlvbiBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNr
KSB7Ci0gICAgICAgIGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA9IDA7Ci0gICAgICAgIGNo
ZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2sgPSBjYWxsYmFjazsKLSAgICAgICAgaWYgKCFpc0FmdGVy
RGVsZXRpb24pIHsKLSAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIExvY2FsU3Rv
cmFnZS4KLSAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVy
dmFsKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlckxv
Y2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKLSAgICAgICAgICAgICAgICAgICAgY2xlYXJJ
bnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOwotICAgICAgICAgICAgICAgICAg
ICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKLSAg
ICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5n
OiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAi
ZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7Ci0gICAgICAgICAgICAgICAgICAgIGNo
ZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRl
c3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVy
dmFsSUQpOwotICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0
SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJC
ZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1
ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3Qu
Iik7Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LCAxMDApOwotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8gTG9jYWxTdG9yYWdlLgotICAg
ICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdl
ID49IG1heEludGVydmFscykgewotICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNo
ZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7Ci0gICAgICAgICAgICAgICAgICAgIGxldCB2YWx1
ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOwotICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9y
YWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRv
ZXMgbm90IikgKyAiIGV4aXN0LiIpOwotICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3Rv
cmFnZUNhbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgewotICAgICAgICAg
ICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2Fs
U3RvcmFnZU5hbWUpOwotICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRp
c3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2Fs
U3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOwotICAgICAg
ICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfSwgMTAwKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGFzeW5j
IGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKLSAgICAgICAgLy8gV3Jp
dGUgY29va2llcy4KLSAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXQt
aHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2llTmFtZT0iICsgaHR0cE9ubHlDb29raWVOYW1lLCB7
IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOwotICAgICAgICBhd2FpdCBmZXRjaCgiL2Nv
b2tpZXMvcmVzb3VyY2VzL3NldENvb2tpZXMuY2dpIiwgeyBoZWFkZXJzOiB7ICJTZXQtQ29va2ll
Ijogc2VydmVyU2lkZUNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LzsiIH0sIGNyZWRlbnRpYWxzOiAi
c2FtZS1vcmlnaW4iIH0pOwotICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjbGllbnRTaWRlQ29v
a2llTmFtZSArICI9MSI7Ci0KLSAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsKLQotICAgICAg
ICAvLyBXcml0ZSBMb2NhbFN0b3JhZ2UKLSAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9j
YWxTdG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUpOwotICAgICAgICBjaGVja0xvY2FsU3Rv
cmFnZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7Ci0KLSAgICAgICAgICAgIC8vIFdyaXRlIElu
ZGV4ZWREQi4KLSAgICAgICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOwotICAgICAgICAg
ICAgICAgICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOwotICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGZ1bmN0
aW9uIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgewotICAgICAgICB0ZXN0UnVubmVy
Lmluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soY2hlY2tXZWJzaXRl
RGF0YUFuZENvbnRpbnVlKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUHJvY2Vzc1N0
YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNoZWNrV2Vi
c2l0ZURhdGFBbmRDb250aW51ZSgpIHsKLSAgICAgICAgY2hlY2tDb29raWVzKHRydWUpOwotICAg
ICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyh0cnVlLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyh0cnVlLCBmaW5pc2hUZXN0KTsKLSAgICAgICAg
fSk7Ci0gICAgfQotCi0gICAgY29uc3Qgb3JpZ2luVW5kZXJUZXN0ICA9ICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAiOwotICAgIGNvbnN0IG90aGVyT3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MCIKLSAgICBjb25zdCB0b3BGcmFtZU9yaWdpbiA9ICJodHRwOi8vMTI3LjAuMC4yOjgwMDAiOwot
ICAgIGNvbnN0IHRpbWVTdGFtcCA9IE1hdGgucm91bmQoKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAv
IDEwMDApOwotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgICAgIGlmICh0ZXN0UnVu
bmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihvcmlnaW5VbmRlclRlc3QpKQot
ICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsgb3JpZ2luVW5kZXJUZXN0ICsgIiBzdGls
bCBoYXMgdXNlciBpbnRlcmFjdGlvbiBhZnRlciBwcm9jZXNzaW5nLiIpOwotICAgICAgICByZXNl
dENvb2tpZXMoKTsKLSAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKLSAgICAgICAgfSk7Ci0gICAg
fQotCi0gICAgLy8gRG8gbm90IHVzZSBzZXRFbmFibGVGZWF0dXJlIGhlcmUgYmVjYXVzZSB3ZSB3
YW50IHRvIG1ha2Ugc3VyZSB3ZWJzaXRlIGRhdGEgZGVsZXRpb24gaXMgbm90IHNraXBwZWQKLSAg
ICAvLyBieSB0aGUgcHJlc2VuY2Ugb2YgcGFyYW1ldGVycygpLmlzUnVubmluZ1Rlc3QuCi0gICAg
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTWlu
aW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKDM2MDApOwotICAgICAgICAvLyBNZXJn
ZSBhIHN0YXRpc3RpYyB3aXRoIG5vIHVzZXIgaW50ZXJhY3Rpb24gdG8gY2hlY2sgdGhlIC0xIGNh
c2UuCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKG90aGVy
T3JpZ2luLCB0b3BGcmFtZU9yaWdpbiwgIiIsIHRpbWVTdGFtcCwgZmFsc2UsIC0xLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCAwLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKHRydWUsIGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgICAgICAgICAvLyBpbnNlcnRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3Rp
Yyhkb21haW4sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29r
aWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhvcmlnaW5VbmRlclRlc3QsIHRydWUsIHRydWUs
IGZhbHNlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgd3JpdGVXZWJzaXRlRGF0
YUFuZENvbnRpbnVlKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgfSk7Ci0gICAgfQotPC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5n
LWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLXdpdGgtdXNlci1pbnRlcmFjdGlvbi03LWRh
eXMtYWdvLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtd2l0aC11
c2VyLWludGVyYWN0aW9uLTctZGF5cy1hZ28tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0ZWEz
NDg1MTY1YTM0ZTI1YTFmMzU2NjEwZWVjYWEyNGVlZjA1MTAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRh
dGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLXdpdGgtdXNlci1pbnRlcmFjdGlvbi03LWRheXMt
YWdvLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACisKK0JlZm9yZSBzdGF0aXN0aWNzIHBy
b2Nlc3Npbmc6IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgc3RhdGlzdGljcyBw
cm9jZXNzaW5nOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgorQmVmb3JlIHN0YXRpc3RpY3MgcHJv
Y2Vzc2luZzogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIHN0YXRp
c3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCitCZWZvcmUg
c3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIgc3Rh
dGlzdGljcyBwcm9jZXNzaW5nOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgc3RhdGlz
dGljcyBwcm9jZXNzaW5nOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgc3RhdGlz
dGljcyBwcm9jZXNzaW5nOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCitBZnRl
ciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIGV4aXN0Lgor
QWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
b3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLXdpdGgtdXNlci1pbnRlcmFj
dGlvbi03LWRheXMtYWdvLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLXdpdGgt
dXNlci1pbnRlcmFjdGlvbi03LWRheXMtYWdvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM0NzJkZGMwYzNi
MjYxYjViMTVlMTI4NTJlYjA0ZTE0YzgyZjlkNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxs
LWJ1dC1jb29raWVzLXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0aW9uLTctZGF5cy1hZ28uaHRt
bApAQCAtMCwwICsxLDI2MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpJywgMCkiPgorPGJyPgor
PGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxicj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBjb25z
dCBodHRwT25seUNvb2tpZU5hbWUgPSAiaHR0cC1vbmx5LWNvb2tpZSI7CisgICAgY29uc3Qgc2Vy
dmVyU2lkZUNvb2tpZU5hbWUgPSAic2VydmVyLXNpZGUtY29va2llIjsKKyAgICBjb25zdCBjbGll
bnRTaWRlQ29va2llTmFtZSA9ICJjbGllbnQtc2lkZS1jb29raWUiOworCisgICAgZnVuY3Rpb24g
c29ydFN0cmluZ0FycmF5KGEsIGIpIHsKKyAgICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTsKKyAg
ICAgICAgYiA9IGIudG9Mb3dlckNhc2UoKTsKKworICAgICAgICByZXR1cm4gYSA+IGIgPyAxIDog
YiA+IGEgPyAtMSA6IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkTGluZWJyZWFrVG9PdXRw
dXQoKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIi
KTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGFkZE91dHB1dChtZXNzYWdlKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gbWVz
c2FnZTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIGNoZWNrQ29va2llcyhpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgbGV0IHVu
c29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gW107CisgICAgICAgIGxldCBjb29raWVzID0gaW50
ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCAmJiBpc0Fm
dGVyRGVsZXRpb24pCisgICAgICAgICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyAiTm8gY29va2ll
cyBmb3VuZC4iKTsKKyAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAoY29va2llLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGh0dHBP
bmx5Q29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVz
c2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc3Rh
dGlzdGljcyBwcm9jZXNzaW5nOiAiICsgKGlzQWZ0ZXJEZWxldGlvbiA/ICIgIiA6ICIiKSArICJI
dHRwT25seSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIHNlcnZlclNpZGVDb29raWVOYW1lOgorICAgICAgICAgICAgICAg
ICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAi
QWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IFJlZ3VsYXIgc2Vy
dmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAg
ICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8g
IkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBDbGllbnQtc2lk
ZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQgc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0g
dW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMuc29ydChzb3J0U3RyaW5nQXJyYXkpOworICAgICAg
ICBmb3IgKGxldCB0ZXN0UGFzc2VkTWVzc2FnZSBvZiBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMp
IHsKKyAgICAgICAgICAgIGFkZE91dHB1dCh0ZXN0UGFzc2VkTWVzc2FnZSk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBjb25zdCBkYk5hbWUgPSAiVGVzdERhdGFiYXNlIjsKKworICAgIGZ1bmN0
aW9uIGNyZWF0ZUlEQkRhdGFTdG9yZShjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBjcmVhdGUgaW5kZXhlZERC
LiIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICB9OworICAgICAgICByZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBsZXQg
ZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICAgICAgbGV0IG9ialN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOworICAgICAg
ICAgICAgb2JqU3RvcmUuYWRkKCJ2YWx1ZSIpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IG1heEludGVydmFscyA9IDIwOworCisgICAgbGV0
IGludGVydmFsQ291bnRlcklEQjsKKyAgICBsZXQgY2hlY2tJREJDYWxsYmFjazsKKyAgICBsZXQg
Y2hlY2tJREJJbnRlcnZhbElEOworICAgIGxldCBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOwor
ICAgIGZ1bmN0aW9uIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2Fs
bGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3Q7CisgICAgICAgIGludGVydmFsQ291bnRlcklE
QiA9IDA7CisgICAgICAgIGNoZWNrSURCQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYg
KCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlz
IGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sg
PSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1h
eEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURC
SW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0YXRp
c3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAgICAg
ICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBh
Z2Fpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25z
dWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0
cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBleGlzdC4i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAg
ICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIG5vIElEQi4K
KyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7
CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2
YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZh
bElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNzIHBy
b2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBz
ZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNh
bGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAg
ICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJ
REIgZW50cnkgZG9lcyBub3QgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1h
cGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVz
dCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExl
dCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2FpbiBiZWNhdXNlIGRlbGV0aW9uIG1pZ2h0IGJl
IGRlbGF5ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0sIDIwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVy
TG9jYWxTdG9yYWdlOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrOworICAgIGxl
dCBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQ7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlTmFt
ZSA9ICJ0ZXN0IjsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VWYWx1ZSA9ICJ2YWx1ZSI7CisgICAg
ZnVuY3Rpb24gY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFj
aykgeworICAgICAgICBpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPSAwOworICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRl
ckRlbGV0aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBMb2NhbFN0
b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRl
cnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJM
b2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFy
SW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAg
ICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2lu
ZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8g
ImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7
CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRl
cnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdl
dEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgi
QmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFs
dWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0
LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIG5vIExvY2FsU3RvcmFnZS4KKyAg
ICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFn
ZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChj
aGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFs
dWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3Rv
cmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJk
b2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRlc3RSdW5uZXIu
aXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOwor
ICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2Nh
bFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0
aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2Nh
bFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3lu
YyBmdW5jdGlvbiB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIC8vIFdy
aXRlIGNvb2tpZXMuCisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0
LWh0dHAtb25seS1jb29raWUucGhwP2Nvb2tpZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwg
eyBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9j
b29raWVzL3Jlc291cmNlcy9zZXRDb29raWVzLmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tp
ZSI6IHNlcnZlclNpZGVDb29raWVOYW1lICsgIj0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczog
InNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNv
b2tpZU5hbWUgKyAiPTEiOworCisgICAgICAgIGNoZWNrQ29va2llcyhmYWxzZSk7CisKKyAgICAg
ICAgLy8gV3JpdGUgTG9jYWxTdG9yYWdlCisgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxv
Y2FsU3RvcmFnZU5hbWUsIGxvY2FsU3RvcmFnZVZhbHVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAvLyBXcml0ZSBJ
bmRleGVkREIuCisgICAgICAgICAgICBjcmVhdGVJREJEYXRhU3RvcmUoZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgdGVzdFJ1bm5l
ci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNoZWNrV2Vic2l0
ZURhdGFBbmRDb250aW51ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NT
dGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1dl
YnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIGNoZWNrQ29va2llcyh0cnVlKTsKKyAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHModHJ1ZSwgZmluaXNoVGVzdCk7CisgICAgICAg
IH0pOworICAgIH0KKworICAgIGNvbnN0IG9yaWdpblVuZGVyVGVzdCAgPSAiaHR0cDovLzEyNy4w
LjAuMTo4MDAwIjsKKyAgICBjb25zdCBvdGhlck9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0Ojgw
MDAiCisgICAgY29uc3QgdG9wRnJhbWVPcmlnaW4gPSAiaHR0cDovLzEyNy4wLjAuMjo4MDAwIjsK
KyAgICBjb25zdCB0aW1lU3RhbXAgPSBNYXRoLnJvdW5kKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkg
LyAxMDAwKTsKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICBpZiAoIXRlc3RS
dW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKG9yaWdpblVuZGVyVGVzdCkp
CisgICAgICAgICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIGRv
ZXNuJ3QgaGF2ZSB1c2VyIGludGVyYWN0aW9uIGFmdGVyIHByb2Nlc3NpbmcuIik7CisgICAgICAg
IHJlc2V0Q29va2llcygpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9KTsK
KyAgICB9CisKKyAgICAvLyBEbyBub3QgdXNlIHNldEVuYWJsZUZlYXR1cmUgaGVyZSBiZWNhdXNl
IHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlYnNpdGUgZGF0YSBkZWxldGlvbiBpcyBub3Qgc2tpcHBl
ZAorICAgIC8vIGJ5IHRoZSBwcmVzZW5jZSBvZiBwYXJhbWV0ZXJzKCkuaXNSdW5uaW5nVGVzdC4K
KyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3Rp
Y3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoMzYwMCk7CisgICAgICAgIC8v
IE1lcmdlIGEgc3RhdGlzdGljIHdpdGggbm8gdXNlciBpbnRlcmFjdGlvbiB0byBjaGVjayB0aGUg
LTEgY2FzZS4KKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMo
b3RoZXJPcmlnaW4sIHRvcEZyYW1lT3JpZ2luLCAiIiwgdGltZVN0YW1wLCBmYWxzZSwgLTEsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIDAsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUodHJ1ZSwgZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0V4cGly
ZWRTdGF0aXN0aWMob3JpZ2luVW5kZXJUZXN0LAorICAgICAgICAgICAgICAgICAgICA3LCAgICAg
Ly8gbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkCisgICAgICAgICAgICAgICAgICAgIHRydWUs
ICAvLyBoYXNVc2VySW50ZXJhY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIGlz
U2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsCisgICAgICAgICAgICAgICAgICAg
IGZhbHNlLCAvLyBpc1ByZXZhbGVudAorICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICAgICAgd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRh
dGEtcmVtb3ZlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQuaHRtbAppbmRl
eCA5NzcxOTY5MmUyOGMwYWU5M2NiODczNjRmODI2OWE1ZmQzMzc3ZmM5Li5hM2RjZmNlYWU1ZjEw
MTYyZDZjNGQxNWVmNDdkMDNmOWJiNmVhODQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRl
LWRhdGEtcmVtb3ZlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLXdlYnNpdGUtZGF0YS1yZW1vdmVkLmh0
bWwKQEAgLTIzOCw4ICsyMzgsMTIgQEAKIAogICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAg
ICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgLy8g
aW5zZXJ0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoZG9tYWluLCBoYXNIYWRVc2VySW50ZXJh
Y3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhv
cmlnaW5VbmRlclRlc3QsIHRydWUsIGZhbHNlLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMob3JpZ2luVW5kZXJU
ZXN0LAorICAgICAgICAgICAgICAgIDMwLCAgICAvLyBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNz
ZWQKKyAgICAgICAgICAgICAgICB0cnVlLCAgLy8gaGFzVXNlckludGVyYWN0aW9uCisgICAgICAg
ICAgICAgICAgZmFsc2UsIC8vIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWws
CisgICAgICAgICAgICAgICAgdHJ1ZSwgIC8vIGlzUHJldmFsZW50CisgICAgICAgICAgICAgICAg
ZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKG9yaWdpblVuZGVyVGVzdCkpCiAgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiRkFJTDogIiArIG9yaWdpblVuZGVyVGVzdCArICIgZGlkIG5vdCBnZXQgaW5z
ZXJ0ZWQgaW50byBkYXRhYmFzZS4iKTsKICAgICAgICAgICAgICAgICB3cml0ZVdlYnNpdGVEYXRh
QW5kQ29udGludWUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMK
aW5kZXggNmZiZTg3NzI3YjRjMmQ2YmUxZGM2ZDA0MGQ3MjkxMGM3MmNlMjM4OS4uYjE2YzMwZjRi
MjYwYjFhYzA1MTFlYTExMWEwYzgzYzVlOGQxYmVmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg0MCw3ICs4NDAsNyBAQCBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvc2V0LWFsbC1jb29raWVzLXRvLXNhbWUtc2l0ZS1zdHJpY3QuaHRt
bCBbIFNraQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2VuZm9yY2Utc2FtZXNp
dGUtc3RyaWN0LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBT
a2lwIF0KIAogIyBUaGlzIHRlc3QgaXMgZmxha3kuIDxyZGFyOi8vcHJvYmxlbS82OTc0ODcyMD4K
LWh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1
dC1jb29raWVzLXJlbW92ZWQtc3RhdGlzdGljcy13aXRoLW5vLXVzZXItaW50ZXJhY3Rpb24uaHRt
bCBbIFBhc3MgRmFpbHVyZSBdCitodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3Bl
cmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLXdpdGgtdXNlci1pbnRlcmFjdGlv
bi03LWRheXMtYWdvLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiAjIFRoZSBDTkFNRSBhbmQgY29v
a2llIHRyYW5zZm9ybSBTUElzIGFyZSBvbmx5IGF2YWlsYWJsZSBpbiBtYWNPUyBCaWcgU3VyICsg
aU9TIDE0IGFuZCBhYm92ZS4KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbmFt
ZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLmh0bWwgWyBTa2lwIF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421675</attachid>
            <date>2021-02-26 10:37:21 -0800</date>
            <delta_ts>2021-02-26 11:22:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222248-20210226103721.patch</filename>
            <type>text/plain</type>
            <size>88613</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVjODBkNTFmMzQ2OTE4ODQ4
YTljZDI0ZWMzMzk4ZmVkOWIzNWE4NDUuLjIxMmE5NTgxOTE4ZmE4MjdlNzZmNTNkNzFkYzc0YzFj
MmZjMjY3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjEtMDItMjYgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgTm9uLWNvb2tpZSB3ZWJzaXRl
IGRhdGEgbm90IGRlbGV0ZWQgYWZ0ZXIgNyBkYXlzIG9mIGJyb3dzZXIgdXNlIHdpdGhvdXQgdXNl
ciBpbnRlcmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyMjQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDYxMjU4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMt
bm90LXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0aW9uLTYtZGF5cy1hZ28uaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRl
cy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC13aXRoLXVzZXItaW50ZXJhY3Rpb24tNy1kYXlzLWFn
by5odG1sCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFyYW1ldGVy
cyk6CisgICAgICAgICAgICBOb3cgc2V0cyB0d28gbmV3IG1lbWJlciB2YXJpYWJsZXM6CisgICAg
ICAgICAgICAtIE9wdGlvbmFsPE9wZXJhdGluZ0RhdGU+IG1fbG9uZ1dpbmRvd09wZXJhdGluZ0Rh
dGUKKyAgICAgICAgICAgIC0gT3B0aW9uYWw8T3BlcmF0aW5nRGF0ZT4gbV9zaG9ydFdpbmRvd09w
ZXJhdGluZ0RhdGUKKyAgICAgICAgICAgIFRoZXNlIGFyZSBvbmx5IHNldCBpZiB0aGUgbWluaW11
bSBudW1iZXIgb2Ygb3BlcmF0aW5nIGRheXMgaGFzIHBhc3NlZC4KKyAgICAgICAgICAgIFRoaXMg
ZnVuY3Rpb24gbm8gbG9uZ2VyIHNldHMgbV9sZWFzdFJlY2VudE9wZXJhdGluZ0RhdGUuCisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdGF0
aXN0aWNzRXhwaXJlZCBjb25zdCk6CisgICAgICAgICAgICBOb3cgY2hlY2tzIGFnYWluc3QgdGhl
IHR3byBuZXcgbWVtYmVyIHZhcmlhYmxlcyBtX2xvbmdXaW5kb3dPcGVyYXRpbmdEYXRlCisgICAg
ICAgICAgICBhbmQgbV9zaG9ydFdpbmRvd09wZXJhdGluZ0RhdGUuIFRoaXMgZml4ZXMgdGhlIGJ1
Zy4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKToKKyAgICAgICAgICAgIFRlc3QgaW5m
cmFzdHJ1Y3R1cmUuIE5vdyB0YWtlcyB0aGUgbmV3IHBhcmFtZXRlciBudW1iZXJPZk9wZXJhdGlu
Z0RheXNQYXNzZWQKKyAgICAgICAgICAgIHdpdGggd2hpY2ggbGF5b3V0IHRlc3RzIGNhbiBjb250
cm9sIHRoZSBleGFjdCBudW1iZXIgb2Ygb3BlcmF0aW5nIGRheXMKKyAgICAgICAgICAgIHBhc3Nl
ZCBzaW5jZSB1c2VyIGludGVyYWN0aW9uLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgICAg
IEFkZGVkIG1fbG9uZ1dpbmRvd09wZXJhdGluZ0RhdGUgYW5kIG1fc2hvcnRXaW5kb3dPcGVyYXRp
bmdEYXRlLCBhbmQKKyAgICAgICAgICAgIHJlbW92ZWQgbV9sZWFzdFJlY2VudE9wZXJhdGluZ0Rh
dGUgc2luY2UgaXQncyBubyBsb25nZXIgdXNlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aW5zZXJ0RXhwaXJl
ZFN0YXRpc3RpY0ZvclRlc3RpbmcpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4g
VGhlIHNhbWUgY2hhbmdlcyBhcyBpbiB0aGUgREIgc3RvcmUuCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAg
ICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcpOgorICAgICAgICAgICAg
VGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
OgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0
aWMpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKToKKyAgICAgICAg
ICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6aW5z
ZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0
cnVjdHVyZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oOgorCiAyMDIxLTAyLTI2ICBQZXIgQXJuZSAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtDb2NvYV0gUmVnaXN0ZXIgVlA5IGRlY29kZXJzIHdoZW4gUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyIGlzIGNyZWF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IGJhMzJmNzZiYjM3ODU4ZTMyZjAyYWNmMzc2
N2RkMjUxZjlmNGUwNTEuLmJkODBjNTY0N2E4NGVkMDRhM2YzZjRiMjdmYTAwMTFiMjAyYmYwYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcApAQCAtMjgwMSw3ICsyODAxLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6dXBkYXRlT3BlcmF0aW5nRGF0ZXNQYXJhbWV0ZXJzKCkKIHsKICAgICBT
UUxpdGVTdGF0ZW1lbnQgY291bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudChtX2RhdGFiYXNlLCAi
U0VMRUNUIENPVU5UKCopIEZST00gT3BlcmF0aW5nRGF0ZXM7Il9zKTsKICAgICBTUUxpdGVTdGF0
ZW1lbnQgZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNF
TEVDVCAqIEZST00gT3BlcmF0aW5nRGF0ZXMgT1JERVIgQlkgeWVhciBERVNDLCBtb250aCBERVND
LCBtb250aERheSBERVNDIExJTUlUIDE7Il9zKTsKLSAgICBTUUxpdGVTdGF0ZW1lbnQgZ2V0TGVh
c3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgKiBGUk9N
IE9wZXJhdGluZ0RhdGVzIE9SREVSIEJZIHllYXIsIG1vbnRoLCBtb250aERheSBMSU1JVCAxOyJf
cyk7CisgICAgU1FMaXRlU3RhdGVtZW50IGdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQo
bV9kYXRhYmFzZSwgIlNFTEVDVCAqIEZST00gT3BlcmF0aW5nRGF0ZXMgT1JERVIgQlkgeWVhciBE
RVNDLCBtb250aCBERVNDLCBtb250aERheSBERVNDIExJTUlUIDEgT0ZGU0VUID87Il9zKTsKIAog
ICAgIGlmIChjb3VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVf
T0sKICAgICAgICAgfHwgY291bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudC5zdGVwKCkgIT0gU1FM
SVRFX1JPVykgewpAQCAtMjgxOCwxNyArMjgxOCwzNCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMoKQogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQogICAg
IG1fbW9zdFJlY2VudE9wZXJhdGluZ0RhdGUgPSBPcGVyYXRpbmdEYXRlKGdldE1vc3RSZWNlbnRP
cGVyYXRpbmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgwKSwgZ2V0TW9zdFJlY2VudE9wZXJh
dGluZ0RhdGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDEpLCBnZXRNb3N0UmVjZW50T3BlcmF0aW5n
RGF0ZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMikpOwogCi0gICAgaWYgKGdldExlYXN0UmVjZW50
T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8
IGdldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JP
VykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBkYXRlT3BlcmF0aW5n
RGF0ZXNQYXJhbWV0ZXJzIGdldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCBmYWls
ZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybjsKKyAgICBpZiAobV9vcGVyYXRpbmdEYXRlc1NpemUgPD0gb3BlcmF0aW5nRGF0ZXNX
aW5kb3dTaG9ydCAtIDEpCisgICAgICAgIG1fc2hvcnRXaW5kb3dPcGVyYXRpbmdEYXRlID0gV1RG
OjpudWxsb3B0OworICAgIGVsc2UgeworICAgICAgICBpZiAoZ2V0T3BlcmF0aW5nRGF0ZVdpbmRv
d1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBnZXRPcGVy
YXRpbmdEYXRlV2luZG93U3RhdGVtZW50LmJpbmRJbnQoMSwgb3BlcmF0aW5nRGF0ZXNXaW5kb3dT
aG9ydCAtIDEpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgZ2V0T3BlcmF0aW5nRGF0ZVdp
bmRvd1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFyYW1ldGVycyBnZXRP
cGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50IGZhaWxlZCB3aXRoIGVycm9yIG1lc3NhZ2U6ICV7
cHJpdmF0ZX1zLiBUaGUgZXJyb3IgY291bGQgYmUgaW4gdGhlIGNhbGxzIHRvIHByZXBhcmUoKSwg
YmluZCgpIG9yIHN0ZXAoKS4iLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIG1fc2hvcnRXaW5kb3dPcGVyYXRpbmdEYXRlID0gT3BlcmF0aW5nRGF0
ZShnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50LmdldENvbHVtbkludCgwKSwgZ2V0T3Bl
cmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMSksIGdldE9wZXJhdGluZ0Rh
dGVXaW5kb3dTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDIpKTsKICAgICB9CiAKLSAgICBtX2xlYXN0
UmVjZW50T3BlcmF0aW5nRGF0ZSA9IE9wZXJhdGluZ0RhdGUoZ2V0TGVhc3RSZWNlbnRPcGVyYXRp
bmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgwKSwgZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdE
YXRlU3RhdGVtZW50LmdldENvbHVtbkludCgxKSwgZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRl
U3RhdGVtZW50LmdldENvbHVtbkludCgyKSk7CisgICAgaWYgKG1fb3BlcmF0aW5nRGF0ZXNTaXpl
IDw9IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZyAtIDEpCisgICAgICAgIG1fbG9uZ1dpbmRvd09w
ZXJhdGluZ0RhdGUgPSBXVEY6Om51bGxvcHQ7CisgICAgZWxzZSB7CisgICAgICAgIGdldE9wZXJh
dGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQucmVzZXQoKTsKKyAgICAgICAgaWYgKGdldE9wZXJhdGlu
Z0RhdGVXaW5kb3dTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSworICAgICAgICAgICAg
fHwgZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudC5iaW5kSW50KDEsIG9wZXJhdGluZ0Rh
dGVzV2luZG93TG9uZyAtIDEpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgZ2V0T3BlcmF0
aW5nRGF0ZVdpbmRvd1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFyYW1l
dGVycyBnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50IGZhaWxlZCB3aXRoIGVycm9yIG1l
c3NhZ2U6ICV7cHJpdmF0ZX1zLiBUaGUgZXJyb3IgY291bGQgYmUgaW4gdGhlIGNhbGxzIHRvIHBy
ZXBhcmUoKSwgYmluZCgpIG9yIHN0ZXAoKSIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgbV9sb25nV2luZG93T3BlcmF0aW5nRGF0ZSA9IE9wZXJh
dGluZ0RhdGUoZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCks
IGdldE9wZXJhdGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDEpLCBnZXRPcGVy
YXRpbmdEYXRlV2luZG93U3RhdGVtZW50LmdldENvbHVtbkludCgyKSk7CisgICAgfQogfQogCiB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNsdWRlVG9kYXlBc09w
ZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpCkBAIC0yODY5LDEzICsyODg2LDE0IEBAIGJvb2wgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkKFdh
bGxUaW1lIG1vc3RSZWNlCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICB1bnNpZ25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvd0luRGF5cyA9IDA7CiAgICAgc3dpdGNoIChv
cGVyYXRpbmdEYXRlc1dpbmRvdykgewogICAgIGNhc2UgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6Okxv
bmc6Ci0gICAgICAgIG9wZXJhdGluZ0RhdGVzV2luZG93SW5EYXlzID0gb3BlcmF0aW5nRGF0ZXNX
aW5kb3dMb25nOworICAgICAgICBpZiAobV9sb25nV2luZG93T3BlcmF0aW5nRGF0ZSAmJiBPcGVy
YXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUpIDwg
Km1fbG9uZ1dpbmRvd09wZXJhdGluZ0RhdGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6U2hvcnQ6Ci0gICAg
ICAgIG9wZXJhdGluZ0RhdGVzV2luZG93SW5EYXlzID0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dTaG9y
dDsKKyAgICAgICAgaWYgKG1fc2hvcnRXaW5kb3dPcGVyYXRpbmdEYXRlICYmIE9wZXJhdGluZ0Rh
dGU6OmZyb21XYWxsVGltZShtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkgPCAqbV9zaG9y
dFdpbmRvd09wZXJhdGluZ0RhdGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6Rm9yTGl2ZU9uVGVzdGluZzoK
ICAgICAgICAgcmV0dXJuIFdhbGxUaW1lOjpub3coKSA+IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b25UaW1lICsgb3BlcmF0aW5nVGltZVdpbmRvd0ZvckxpdmVPblRlc3Rpbmc7CkBAIC0yODgzLDEx
ICsyOTAxLDYgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFz
U3RhdGlzdGljc0V4cGlyZWQoV2FsbFRpbWUgbW9zdFJlY2UKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0gICAgaWYgKG1fb3BlcmF0aW5nRGF0ZXNTaXplID49IG9wZXJhdGluZ0RhdGVz
V2luZG93SW5EYXlzKSB7Ci0gICAgICAgIGlmIChPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUo
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUpIDwgbV9sZWFzdFJlY2VudE9wZXJhdGluZ0Rh
dGUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KICAgICAvLyBJZiB3ZSBkb24n
dCBtZWV0IHRoZSByZWFsIGNyaXRlcmlhIGZvciBhbiBleHBpcmVkIHN0YXRpc3RpYywgY2hlY2sg
dGhlIHVzZXIgc2V0dGluZyBmb3IgYSB0aWdodGVyIHJlc3RyaWN0aW9uIChtYWlubHkgZm9yIHRl
c3RpbmcpLgogICAgIGlmICh0aGlzLT5wYXJhbWV0ZXJzKCkudGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbikgewogICAgICAgICBpZiAoV2FsbFRpbWU6Om5vdygpID4gbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUgKyB0aGlzLT5wYXJhbWV0ZXJzKCkudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bi52YWx1ZSgpKQpAQCAtMjg5NiwxMSArMjkwOSwxMSBAQCBib29sIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdGF0aXN0aWNzRXhwaXJlZChXYWxsVGltZSBtb3N0UmVj
ZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbiwgYm9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hl
ZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkKK3ZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0
aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIHVuc2lnbmVkIG51
bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wg
aXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkK
IHsKICAgICAvLyBQb3B1bGF0ZSB0aGUgT3BlcmF0aW5nIERhdGVzIHRhYmxlIHdpdGggZW5vdWdo
IGRheXMgdG8gcmVxdWlyZSBwcnVuaW5nLgogICAgIGRvdWJsZSBkYXlzQWdvSW5TZWNvbmRzID0g
MDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG9wZXJhdGluZ0RhdGVzV2luZG93TG9u
ZzsgaSsrKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBudW1iZXJPZk9wZXJhdGlu
Z0RheXNQYXNzZWQ7IGkrKykgewogICAgICAgICBkb3VibGUgZGF5c1RvU3VidHJhY3QgPSBTZWNv
bmRzOjpmcm9tSG91cnMoMjQgKiBpKS52YWx1ZSgpOwogICAgICAgICBkYXlzQWdvSW5TZWNvbmRz
ID0gV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSAtIGRheXNUb1N1
YnRyYWN0OwogICAgICAgICBhdXRvIGRhdGVUb0luc2VydCA9IE9wZXJhdGluZ0RhdGU6OmZyb21X
YWxsVGltZShXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZGF5c0Fnb0luU2Vjb25kcykpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRl
eCA0Y2E5NDcwOTRkOTU0Y2IzYzE4NDg3ZWM2YzY3NjJmY2FiOTQ4Yjk3Li4yYjQ4Njk5ZTNlZTIx
MzRkZTlmYjMzZGQ3ZjNjNzM1MmU5ZmVkZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHB1Ymxp
YzoKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGFsbERvbWFpbnMoKSBjb25zdCBmaW5h
bDsKICAgICBib29sIGRvbWFpbklERXhpc3RzSW5EYXRhYmFzZShpbnQpOwogICAgIE9wdGlvbmFs
PFZlY3RvcjxTdHJpbmc+PiBjaGVja0Zvck1pc3NpbmdUYWJsZXNJblNjaGVtYSgpOwotICAgIHZv
aWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENv
b2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGlu
c2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
dW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhc1VzZXJJbnRlcmFj
dGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlz
UHJldmFsZW50KSBvdmVycmlkZTsKICAgICB2b2lkIGludGVycnVwdCgpOwogCiAgICAgLy8gUHJp
dmF0ZSBDbGljayBNZWFzdXJlbWVudC4KQEAgLTI5Miw3ICsyOTIsOCBAQCBwcml2YXRlOgogICAg
IFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIGJvb2wgbV9pc05ld1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGUgeyBmYWxzZSB9OwogICAgIHVuc2lnbmVkIG1fb3BlcmF0
aW5nRGF0ZXNTaXplIHsgMCB9OwotICAgIE9wZXJhdGluZ0RhdGUgbV9sZWFzdFJlY2VudE9wZXJh
dGluZ0RhdGU7CisgICAgT3B0aW9uYWw8T3BlcmF0aW5nRGF0ZT4gbV9sb25nV2luZG93T3BlcmF0
aW5nRGF0ZTsKKyAgICBPcHRpb25hbDxPcGVyYXRpbmdEYXRlPiBtX3Nob3J0V2luZG93T3BlcmF0
aW5nRGF0ZTsKICAgICBPcGVyYXRpbmdEYXRlIG1fbW9zdFJlY2VudE9wZXJhdGluZ0RhdGU7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
Y3BwCmluZGV4IDgyMzFhZTRiNzU4N2U4ZWY4OGE5NTUzNTMyNWJmZmJkMGFmMmQ4Y2UuLjQ1YzUz
ZjhhZTgzODY5ZDdkMDUzZWRmYWU3YTI3ODhkNjE3ODRmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC0xMTM3LDExICsxMTM3
LDExIEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdGF0aXN0
aWNzRXhwaXJlZChjb25zdCBSZXNvdXJjZUxvYWRTCiAgICAgcmV0dXJuIGhhc1N0YXRpc3RpY3NF
eHBpcmVkKHJlc291cmNlU3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBv
cGVyYXRpbmdEYXRlc1dpbmRvdyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluLCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVk
dWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KQordm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNG
b3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIHVuc2lnbmVkIG51bWJl
ck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNT
Y2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkKIHsK
ICAgICAvLyBQb3B1bGF0ZSB0aGUgT3BlcmF0aW5nIERhdGVzIHRhYmxlIHdpdGggZW5vdWdoIGRh
eXMgdG8gcmVxdWlyZSBwcnVuaW5nLgogICAgIGRvdWJsZSBkYXlzQWdvSW5TZWNvbmRzID0gMDsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZzsg
aSsrKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBudW1iZXJPZk9wZXJhdGluZ0Rh
eXNQYXNzZWQ7IGkrKykgewogICAgICAgICBkb3VibGUgZGF5c1RvU3VidHJhY3QgPSBTZWNvbmRz
Ojpmcm9tSG91cnMoMjQgKiBpKS52YWx1ZSgpOwogICAgICAgICBkYXlzQWdvSW5TZWNvbmRzID0g
V2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSAtIGRheXNUb1N1YnRy
YWN0OwogICAgICAgICBhdXRvIGRhdGVUb0luc2VydCA9IE9wZXJhdGluZ0RhdGU6OmZyb21XYWxs
VGltZShXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZGF5c0Fnb0luU2Vjb25kcykpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCmluZGV4IGZkMWNm
ZmIwOTExZTkyM2UxZGE0OGU3MGUwZDMzMDBjZDg2ZWE4NjkuLmQ1NjRkZWQ4N2JjMmM5ZjQyOGMy
YTcxYWUwOGFmOTJlYTUwMDA4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTEwNiw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMpIG92ZXJyaWRl
OwogICAgIHZvaWQgcmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYp
IG92ZXJyaWRlOwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gYWxsRG9tYWlucygpIGNv
bnN0IGZpbmFsOwotICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1Nj
aGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBi
b29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURh
dGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KSBvdmVycmlkZTsKIAogICAgIC8vIFByaXZhdGUg
Q2xpY2sgTWVhc3VyZW1lbnQgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBJVFAgbWVtb3J5IHN0
b3JlLgogICAgIHZvaWQgaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blR5cGUpIG92ZXJyaWRlIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAppbmRleCA1MjYwZWM5NzkwMGI4YjFjNmIxOWY4YzI3Y2EwMjE5ODI5OTliMDQ3Li43NWI0
YzM2YmMzN2E5YWE2Y2VhMzY5MGI2ZDUyMzY0ZDMzMDQ2NTkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yMDEsNyArMjAxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPcGVyYXRpbmdEYXRlcygpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQoV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdCA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgYm9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxC
dXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRF
eHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVuc2ln
bmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYXNVc2VySW50ZXJhY3Rpb24s
IGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCkgPSAwOwog
ICAgIAogICAgIC8vIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQuCiAgICAgdmlydHVhbCB2b2lk
IGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDAx
MDk4N2VmNDRjODU0Zjc3MmIwMjRhMDM5N2Y5MzMyZDNjZjI5NTUuLmQ1MzgxNGZhYjM0MjJjZmEw
OTJiZDJmMTM2M2E4YzY3ZmY0NWI0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0xNDY0LDEzICsxNDY0LDEzIEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1bWUoKQogICAgICAgICBzdXNwZW5kZWRTdGF0
ZUNoYW5nZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlz
U2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGlu
Zyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJh
dGluZ0RheXNQYXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVk
Rm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCi0gICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IGRvbWFpbi5pc29s
YXRlZENvcHkoKSwgaGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tp
ZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWlu
ID0gZG9tYWluLmlzb2xhdGVkQ29weSgpLCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGhh
ZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwg
aXNQcmV2YWxlbnQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX3N0YXRpc3RpY3NTdG9yZSkKLSAgICAgICAg
ICAgIG1fc3RhdGlzdGljc1N0b3JlLT5pbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhX
VEZNb3ZlKGRvbWFpbiksIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRD
b29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQpOworICAgICAgICAgICAgbV9zdGF0aXN0aWNz
U3RvcmUtPmluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFdURk1vdmUoZG9tYWluKSwg
bnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1
bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50KTsKICAgICAgICAgcG9z
dFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggZTY3ZmFhYWNj
ODU2NzhiM2JmM2EzYTUxYWMzMWRjYzc4NTIwZWJlYS4uZDExNDYyNTc5MzMwMmM4Nzg1Nzg4ODRj
NzI2YjU5NzY4ZTAwNWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaApAQCAtMzA0LDcgKzMwNCw3IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAg
ICAgc3RhdGljIHZvaWQgcmVzdW1lKCk7CiAgICAgCiAgICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNFcGhlbWVyYWwgPT0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6SXNFcGhlbWVyYWw6OlllczsgfTsKLSAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0
aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBoYWRVc2VySW50ZXJh
Y3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBp
c1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGluc2Vy
dEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5z
aWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlv
biwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJl
dmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgLy8gUHJpdmF0ZSBD
bGljayBNZWFzdXJlbWVudC4KICAgICB2b2lkIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50QXR0cmlidXRpb25UeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNjllNzFlZjE4MmIwMzMzMGNlYWEwMDg0NDU2OTA4MmY4
NDQyNWUwMy4uMGVhNWZhZmE2N2U5YTRkMWIxZTRlNTYyZGUxNzYyMWUxYTcwMjNhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTk1
MCwxMSArOTUwLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6Om1lcmdlU3RhdGlzdGljRm9yVGVz
dGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlCiAgICAgfQogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGJvb2wg
aGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJl
bW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Omluc2VydEV4cGlyZWRTdGF0aXN0
aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIGRvbWFpbiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29s
IGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VM
b2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkp
Ci0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pbnNlcnRFeHBpcmVkU3RhdGlz
dGljRm9yVGVzdGluZyhkb21haW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JB
bGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPmluc2VydEV4cGly
ZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGRvbWFpbiwgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2Vk
LCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwsIGlzUHJldmFsZW50LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSBlbHNlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBhNGI1Mjcw
MjljZGY2ZTk4MWU1OGYzOTUxOTdmNTRmZjE5ZDRjMzNmLi4wODMyMmI0MjcyMGRmODI3ZWI1ZTNh
MDM4Y2YxMzgxMWNjYjY3ZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNDMsNyArMjQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25k
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRvbWFpbklERXhpc3Rz
SW5EYXRhYmFzZShQQUw6OlNlc3Npb25JRCwgaW50IGRvbWFpbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFp
biYgdG9wRnJhbWVEb21haW4xLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4y
LCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZh
bGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0
aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2ll
RGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CisgICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGlu
Z0RheXNQYXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVk
KFBBTDo6U2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3QoUEFMOjpT
ZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCA1NTVhNDQwYzMwNTQ3N2RlM2Q0YjUwODU1ZDQ5OWNhYjM0YzEyZjIwLi5j
MzQwYmVmYzBmMGZmYzY1ZWVkOGUxODFjYzY5NmU3ODhjYTMwZTkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTkyLDcgKzkyLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRM
YXN0U2VlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHJlc291cmNlRG9tYWluLCBTZWNvbmRzIHNlY29uZHMpIC0+ICgpIEFzeW5jCiAgICAgTWVy
Z2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHRvcEZyYW1lRG9tYWluMSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVE
b21haW4yLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25k
cyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBp
c1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVpbnQ2NF90IGRhdGFSZWNvcmRzUmVt
b3ZlZCkgLT4gKCkgQXN5bmMKLSAgICBJbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291
cmNlRG9tYWluLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFs
bEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KSAtPiAoKSBBc3luYworICAg
IEluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4sIHVpbnQ2NF90IG51
bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wg
aXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkg
LT4gKCkgQXN5bmMKICAgICBTZXRQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluKSAtPiAoKSBB
c3luYwogICAgIFNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+
ICgpIEFzeW5jCiAgICAgSXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRXBoZW1lcmFsKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgaXNFcGhlbWVyYWwpIEFzeW5jCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cAppbmRleCBlNzFhNjRkYzU4MTU5YmI5MGU3Y2Y1M2FhMjliNGViZWViZTE2NTAyLi5kOTIyODdk
MzNkMDUyMWNiZTUyZTc1YWY5MmNjMzU0MTY1NTZlMGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTIx
NCwxMCArMjE0LDEwIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01lcmdl
U3RhdGlzdGljKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvCiAjZW5kaWYKIH0KIAotdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIGhhZFVz
ZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFs
LCBib29sIGlzUHJldmFsZW50LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzTWVyZ2VTdGF0aXN0aWNGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdW5zaWduZWQgbnVtYmVy
T2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1Nj
aGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWNGdW5j
dGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmluc2VydEV4cGlyZWRT
dGF0aXN0aWNGb3JUZXN0aW5nKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmlu
ZygpKSwgaGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsLCBpc1ByZXZhbGVudCwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAg
V2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRl
c3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBudW1iZXJP
Zk9wZXJhdGluZ0RheXNQYXNzZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JB
bGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQsIFtjb250ZXh0LCBjb21wbGV0aW9u
SGFuZGxlcl0gewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsK
ICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5oCmluZGV4IGZkNDE3NmQ0ZjJlMmUwNGQ2NDM0OGM3YTk5YjE4YTBiZWI5
ZmFkZjcuLmQ1YzllZWUyYTQwNGZkM2NiNDdjOWY4NzczNWMzOTc2ODFkMjkzYTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5oCkBAIC03NSw3ICs3NSw3IEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NMYXN0U2VlbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0CiB0eXBlZGVmIHZv
aWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWNGdW5jdGlvbiko
dm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0b3BGcmFtZURvbWFpbjEsIFdL
U3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluMiwgZG91YmxlIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJ
bnRlcmFjdGlvbiwgZG91YmxlIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFu
ZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWdu
ZWQgZGF0YVJlY29yZHNSZW1vdmVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWNGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpY0Z1
bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwotV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rp
b24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1By
ZXZhbGVudCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0V4cGly
ZWRTdGF0aXN0aWNGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CitXS19FWFBPUlQgdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB1bnNpZ25lZCBudW1i
ZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlz
U2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGlj
RnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9u
Q29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tT
dHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
OwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1ZlcnlQcmV2YWxl
bnRSZXNvdXJjZUZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
aW5kZXggYTJiZWVkODM1YTM0ZmJlMTk2MDM4ZmJmZWE4ZjdhMmJmMjQ2OThjZC4uMjMyYzY2MDlj
YzI1Njg3NTgxNGI3NmM2ODM2Y2FkZmZkN2VmNzg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC03MDAs
OSArNzAwLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjptZXJnZVN0YXRpc3RpY0ZvclRl
c3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb24KICAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpNZXJnZVN0YXRpc3RpY0ZvclRlc3Rpbmcoc2Vz
c2lvbklELCByZXNvdXJjZURvbWFpbiwgdG9wRnJhbWVEb21haW4xLCB0b3BGcmFtZURvbWFpbjIs
IGxhc3RTZWVuLCBoYWRVc2VySW50ZXJhY3Rpb24sIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24s
IGlzR3JhbmRmYXRoZXJlZCwgaXNQcmV2YWxlbnQsIGlzVmVyeVByZXZhbGVudCwgZGF0YVJlY29y
ZHNSZW1vdmVkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWlu
LCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tp
ZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omluc2VydEV4
cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJh
dGluZ0RheXNQYXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVk
Rm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpJbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9y
VGVzdGluZyhzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBoYWRVc2VySW50ZXJhY3Rpb24sIGlz
U2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50KSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6Okluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKHNlc3Npb25J
RCwgcmVzb3VyY2VEb21haW4sIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgaGFkVXNlcklu
dGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZh
bGVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpjbGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGVmOTIxMWQ5
YzAxZDY4YzUyMzkwYzM0MzVmM2ExNDdlOTdlZGVmOWYuLmRjYzFkN2ZjNTNlMDNiMzQ5YTE2MWM5
NjA2ODg5YTM4YmZhYjM5YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKFBBTDo6U2Vzc2lvbklELCBpbnQg
ZG9tYWluSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgc3Rh
dGlzdGljc0RhdGFiYXNlSGFzQWxsVGFibGVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYgdG9wRnJhbWVEb21haW4xLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4yLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1By
ZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3Zl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGluc2VydEV4cGlyZWRT
dGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29v
a2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJh
dGluZ0RheXNQYXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVk
Rm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2ll
cyhQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcChQQUw6OlNlc3Npb25JRCwgU2Vj
b25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEdyYW5kZmF0
aGVyZWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpc0dy
YW5kZmF0aGVyZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CmluZGV4IDhiNDMzZTkxMWE4MjVkMzViMjUwNjViMjE4Mjk1MjZkODYzYWM3NDEuLjgyNjllN2Y4
ZGZmZmJiYmZiYWU1ZTk5N2RkYWY0YmFjNjllZjE0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0x
NTUxLDcgKzE1NTEsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9y
VGVzdGluZyhjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiB0b3BGcgogICAgIG5ldHdvcmtQcm9j
ZXNzKCkubWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB7IHVybCB9LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRvcEZy
YW1lVXJsMSB9LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRvcEZyYW1lVXJsMiB9LCBs
YXN0U2VlbiwgaGFkVXNlckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBp
c0dyYW5kZmF0aGVyZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRz
UmVtb3ZlZCwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCwg
Ym9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVE
YXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjppbnNlcnRFeHBpcmVk
U3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCwgdW5zaWduZWQgbnVtYmVyT2ZPcGVy
YXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxl
ZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHVybC5wcm90
b2NvbElzQWJvdXQoKSB8fCB1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CkBAIC0xNTYwLDcgKzE1NjAsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omluc2Vy
dEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFVSTCYgdXJsLCBib29sIGhhZAogCiAg
ICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICBuZXR3b3JrUHJvY2VzcygpLmluc2Vy
dEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB7IHVybCB9LCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50LCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7
IH0pOworICAgIG5ldHdvcmtQcm9jZXNzKCkuaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3Rp
bmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIG51bWJl
ck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgaGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZv
ckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCwgW2NhbGxiYWNrQWdncmVnYXRv
cl0geyB9KTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5E
YXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCAzZjY2Njg0OTk1YWI2NzVj
Y2Y1NWUxMWFlYjhlMjIwODliZDM3NDUwLi41YTdmNTc3YzRhZTQwODhlNTJkNDcyYWY1ZTg5MDM2
OGRjNTc4NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xOTcsNyArMTk3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKGludCBkb21haW5JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzdGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxU
YWJsZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBtZXJnZVN0
YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgVVJMJiwgY29uc3QgVVJMJiB0b3BGcmFtZVVybDEsIGNv
bnN0IFVSTCYgdG9wRnJhbWVVcmwyLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRm
YXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVk
IGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2
b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFVSTCYsIGJvb2wgaGFk
VXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAg
dm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBVUkwmLCB1bnNpZ25l
ZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBi
b29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxl
bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXROb3RpZnlQYWdl
c1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRJc1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdChi
b29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJ1bmVFbnRy
aWVzRG93blRvKHNpemVfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNzkyYWE2Nzc5OTMz
YjI5NDM0YjQ1ZjRlZWRmNTc5YThhNDdkYjlhLi5mYWIxNTE0MmZjOTI2ODVmOWViODIwNzI2YzY2
MDFiNTZjODQ1YjA5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjEtMDItMjYgIEpvaG4gV2lsYW5kZXIgIDx3aWxh
bmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgTm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEgbm90IGRl
bGV0ZWQgYWZ0ZXIgNyBkYXlzIG9mIGJyb3dzZXIgdXNlIHdpdGhvdXQgdXNlciBpbnRlcmFjdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjQ4
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDYxMjU4OT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIG5ldyBudW1iZXJPZk9wZXJhdGluZ0RheXNQ
YXNzZWQgcGFyYW1ldGVyIHdhcyBhZGRlZCB0bworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRp
c3RpY3NFeHBpcmVkU3RhdGlzdGljKCkgdG8gY29udHJvbCB0aGUgZXhhY3QKKyAgICAgICAgbnVt
YmVyIG9mIG9wZXJhdGluZyBkYXlzIHBhc3NlZCBzaW5jZSB1c2VyIGludGVyYWN0aW9uLgorCisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVu
bmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzRXhwaXJl
ZFN0YXRpc3RpYyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzRXhwaXJlZFN0
YXRpc3RpYyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAo
V1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUp
OgorCiAyMDIxLTAyLTI2ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbYnVpbGQud2Via2l0Lm9yZ10gU3RvcCB1c2luZyBkZXByZWNhdGVkIGJ1aWxkYm90
LnN0YXR1cy5idWlsZGVyCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCAzY2VmYTg2M2Y1
Nzc0OTQzMTM5MDc1ZjRjMDYwM2I5NWZhODU3MzQ5Li5lNzIyMThiOWQ0MGVjYjYyMTgyMTkyZmZi
NzQ0YzFjYWYxMDcxOGM4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTI5NCw3ICsy
OTQsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdW5kZWZpbmVkIHNldFN0YXRpc3Rp
Y3NQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShET01TdHJpbmcgaG9zdE5hbWUsIG9iamVj
dCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdW5kZWZpbmVkIHNldFN0YXRpc3RpY3NMYXN0U2Vl
bihET01TdHJpbmcgaG9zdE5hbWUsIGRvdWJsZSBzZWNvbmRzLCBvYmplY3QgY29tcGxldGlvbkhh
bmRsZXIpOwogICAgIHVuZGVmaW5lZCBzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMoRE9NU3Ry
aW5nIGhvc3ROYW1lLCBET01TdHJpbmcgdG9wRnJhbWVEb21haW4xLCBET01TdHJpbmcgdG9wRnJh
bWVEb21haW4yLCBkb3VibGUgbGFzdFNlZW4sIGJvb2xlYW4gaGFkVXNlckludGVyYWN0aW9uLCBk
b3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbGVhbiBpc0dyYW5kZmF0aGVyZWQs
IGJvb2xlYW4gaXNQcmV2YWxlbnQsIGJvb2xlYW4gaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBs
b25nIGRhdGFSZWNvcmRzUmVtb3ZlZCwgb2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB1
bmRlZmluZWQgc2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoRE9NU3RyaW5nIGhvc3ROYW1l
LCBib29sZWFuIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbGVhbiBpc1NjaGVkdWxlZEZvckFsbEJ1
dENvb2tpZURhdGFSZW1vdmFsLCBib29sZWFuIGlzUHJldmFsZW50LCBvYmplY3QgY29tcGxldGlv
bkhhbmRsZXIpOworICAgIHVuZGVmaW5lZCBzZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhE
T01TdHJpbmcgaG9zdE5hbWUsIHVuc2lnbmVkIGxvbmcgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFz
c2VkLCBib29sZWFuIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbGVhbiBpc1NjaGVkdWxlZEZvckFs
bEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sZWFuIGlzUHJldmFsZW50LCBvYmplY3QgY29tcGxl
dGlvbkhhbmRsZXIpOwogICAgIHVuZGVmaW5lZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3Vy
Y2UoRE9NU3RyaW5nIGhvc3ROYW1lLCBib29sZWFuIHZhbHVlLCBvYmplY3QgY29tcGxldGlvbkhh
bmRsZXIpOwogICAgIHVuZGVmaW5lZCBzZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNl
KERPTVN0cmluZyBob3N0TmFtZSwgYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNvbXBsZXRpb25IYW5k
bGVyKTsKICAgICBib29sZWFuIGlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKERPTVN0cmlu
ZyBob3N0TmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA5NDllZWU4ZjI1NmFlNjNmNjMwNDQ0MzZhNjk3YmNh
MDFkYzBlYzhmLi4wOTI2ZGNhMzU3OGUyMzE4ZTZhNmEwM2M1ZDdlMGJlNzFmYzczZTE5IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAKQEAgLTEyMjgsMTIgKzEyMjgsMTMgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNz
Q2FsbERpZFNldE1lcmdlU3RhdGlzdGljQ2FsbGJhY2soKQogICAgIGNhbGxUZXN0UnVubmVyQ2Fs
bGJhY2soU2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljQ2FsbGJhY2tJRCk7CiB9CiAKLXZvaWQg
VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoSlNTdHJpbmdSZWYgaG9z
dE5hbWUsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0
Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIEpTVmFsdWVSZWYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGlj
KEpTU3RyaW5nUmVmIGhvc3ROYW1lLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNz
ZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29v
a2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soU2V0U3RhdGlzdGljc0V4cGly
ZWRTdGF0aXN0aWNDYWxsYmFja0lELCBjb21wbGV0aW9uSGFuZGxlcik7CiAKICAgICBwb3N0TWVz
c2FnZSgiU2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMiLCBjcmVhdGVXS0RpY3Rpb25hcnko
ewogICAgICAgICB7ICJIb3N0TmFtZSIsIHRvV0soaG9zdE5hbWUpIH0sCisgICAgICAgIHsgIk51
bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCIsIGFkb3B0V0soV0tVSW50NjRDcmVhdGUobnVtYmVy
T2ZPcGVyYXRpbmdEYXlzUGFzc2VkKSkgfSwKICAgICAgICAgeyAiSGFkVXNlckludGVyYWN0aW9u
IiwgYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaGFkVXNlckludGVyYWN0aW9uKSkgfSwKICAgICAg
ICAgeyAiSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCIsIGFkb3B0V0soV0tC
b29sZWFuQ3JlYXRlKGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwpKSB9LAog
ICAgICAgICB7ICJJc1ByZXZhbGVudCIsIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGlzUHJldmFs
ZW50KSkgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaAppbmRleCAyZjNjNTI5ZWQ0ZGE2ZDdkOGQ4MWJhYjg0YWQ2NDcyNmEyYzRiOGQz
Li5jYWY3ZDdmYWNmMmJiNWI2YTMwNzAzMDc3MTk1NzU1MmYwYTBlMWUyIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtMzg2
LDcgKzM4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0TGFzdFNl
ZW5DYWxsYmFjaygpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKEpTU3Ry
aW5nUmVmIGhvc3ROYW1lLCBKU1N0cmluZ1JlZiB0b3BGcmFtZURvbWFpbjEsIEpTU3RyaW5nUmVm
IHRvcEZyYW1lRG9tYWluMiwgZG91YmxlIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlv
biwgZG91YmxlIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVk
LCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJl
Y29yZHNSZW1vdmVkLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0
YXRpc3RpY3NDYWxsRGlkU2V0TWVyZ2VTdGF0aXN0aWNDYWxsYmFjaygpOwotICAgIHZvaWQgc2V0
U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgaGFk
VXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwsIGJvb2wgaXNQcmV2YWxlbnQsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOworICAg
IHZvaWQgc2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoSlNTdHJpbmdSZWYgaG9zdE5hbWUs
IHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJh
Y3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBp
c1ByZXZhbGVudCwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzdGF0
aXN0aWNzQ2FsbERpZFNldEV4cGlyZWRTdGF0aXN0aWNDYWxsYmFjaygpOwogICAgIHZvaWQgc2V0
U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZh
bHVlLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3ND
YWxsRGlkU2V0UHJldmFsZW50UmVzb3VyY2VDYWxsYmFjaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBlNTJhZTEyOGE1Y2MwMjdkMDRiYzgyMWJkMDBk
MzlmYjYyMjNkODVhLi42ZDczYWJjM2I2ZGEzMzFjZjcxMmI3MGIzODRkMGQxOGNjMzkyZGQ2IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtMzA3OSwxMCAr
MzA3OSwxMCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0
aWMoV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgdAogICAgIG1fY3VycmVudEludm9jYXRp
b24tPmRpZE1lcmdlU3RhdGlzdGljKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0
YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgaGFkVXNlcklu
dGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJv
b2wgaXNQcmV2YWxlbnQpCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzRXhwaXJl
ZFN0YXRpc3RpYyhXS1N0cmluZ1JlZiBob3N0LCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0Rh
eXNQYXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQpCiB7CiAgICAgUmVzb3VyY2VT
dGF0aXN0aWNzQ2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOwotICAgIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKHdlYnNpdGVEYXRhU3RvcmUoKSwg
aG9zdCwgaGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsLCBpc1ByZXZhbGVudCwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGljc1ZvaWRSZXN1
bHRDYWxsYmFjayk7CisgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0V4cGlyZWRT
dGF0aXN0aWMod2Vic2l0ZURhdGFTdG9yZSgpLCBob3N0LCBudW1iZXJPZk9wZXJhdGluZ0RheXNQ
YXNzZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRh
UmVtb3ZhbCwgaXNQcmV2YWxlbnQsICZjb250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVz
dWx0Q2FsbGJhY2spOwogICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKICAg
ICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRFeHBpcmVkU3RhdGlzdGljKCk7CiB9CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggOWU1YWE3OWM5OGUzMDA3Nzg1
ODBmNmExODhjYWM2ZmFlNzQ2YjE3MS4uNDM2NGQzYmQ0MTUzNTMxMzNjNDk0ZmY3YWE1ZjE1OTQx
NGQwYjYyYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjE0
LDcgKzIxNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZUZvckRlYnVnTW9kZShXS1N0cmluZ1JlZiBob3N0TmFtZSk7CiAgICAgdm9pZCBzZXRTdGF0
aXN0aWNzTGFzdFNlZW4oV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGRvdWJsZSBzZWNvbmRzKTsKICAg
ICB2b2lkIHNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhXS1N0cmluZ1JlZiBob3N0LCBXS1N0
cmluZ1JlZiB0b3BGcmFtZURvbWFpbjEsIFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluMiwgZG91
YmxlIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgZG91YmxlIG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBi
b29sIGlzVmVyeVByZXZhbGVudCwgaW50IGRhdGFSZWNvcmRzUmVtb3ZlZCk7Ci0gICAgdm9pZCBz
ZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhXS1N0cmluZ1JlZiBob3N0LCBib29sIGhhZFVz
ZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFs
LCBib29sIGlzUHJldmFsZW50KTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlz
dGljKFdLU3RyaW5nUmVmIGhvc3QsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3Nl
ZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29r
aWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNz
UHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpOwogICAg
IHZvaWQgc2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0
TmFtZSwgYm9vbCB2YWx1ZSk7CiAgICAgU3RyaW5nIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IGFlZjgy
MzNiMDM4Y2Y1YTQwZTY5OWFiNzM0OTgxMGI2NzE3NTgwY2YuLjM1ZjFmZTVjYzU3N2VhNzg0ZWVl
YzRmNzI3NzVkYTgyYTE0YjQwNDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwCkBAIC02NzcsMTAgKzY3NywxMSBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRS
ZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQog
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0U3Rh
dGlzdGljc0V4cGlyZWRTdGF0aXN0aWMiKSkgewogICAgICAgICBhdXRvIG1lc3NhZ2VCb2R5RGlj
dGlvbmFyeSA9IGRpY3Rpb25hcnlWYWx1ZShtZXNzYWdlQm9keSk7CiAgICAgICAgIGF1dG8gaG9z
dE5hbWUgPSBzdHJpbmdWYWx1ZShtZXNzYWdlQm9keURpY3Rpb25hcnksICJIb3N0TmFtZSIpOwor
ICAgICAgICBhdXRvIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCA9IHVpbnQ2NFZhbHVlKG1l
c3NhZ2VCb2R5RGljdGlvbmFyeSwgIk51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCIpOwogICAg
ICAgICBhdXRvIGhhZFVzZXJJbnRlcmFjdGlvbiA9IGJvb2xlYW5WYWx1ZShtZXNzYWdlQm9keURp
Y3Rpb25hcnksICJIYWRVc2VySW50ZXJhY3Rpb24iKTsKICAgICAgICAgYXV0byBpc1NjaGVkdWxl
ZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsID0gYm9vbGVhblZhbHVlKG1lc3NhZ2VCb2R5RGlj
dGlvbmFyeSwgIklzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwiKTsKICAgICAg
ICAgYXV0byBpc1ByZXZhbGVudCA9IGJvb2xlYW5WYWx1ZShtZXNzYWdlQm9keURpY3Rpb25hcnks
ICJJc1ByZXZhbGVudCIpOwotICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0
U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoaG9zdE5hbWUsIGhhZFVzZXJJbnRlcmFjdGlvbiwg
aXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQpOworICAg
ICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0
aXN0aWMoaG9zdE5hbWUsIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgaGFkVXNlckludGVy
YWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVu
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1NTMzZjNjMTFmYmNhNmIxN2Yz
ZWIyZDdiODlhNzE2YzZjYWU4OTUyLi45NWQxNDA0ODdjZmJjZGRmOGRjN2RhYTY4M2VjOTk1NWFl
ZWQwMTYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjEtMDItMjYgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgTm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEg
bm90IGRlbGV0ZWQgYWZ0ZXIgNyBkYXlzIG9mIGJyb3dzZXIgdXNlIHdpdGhvdXQgdXNlciBpbnRl
cmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIyMjQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDYxMjU4OT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeGlzdGluZyB0ZXN0IGNhc2VzIG5v
dyBtYWtlIHVzZSBvZiB0aGUgbmV3IG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZAorICAgICAg
ICBwYXJhbWV0ZXIgdG8gdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYygp
IHRvIGNvbnRyb2wgdGhlIGV4YWN0CisgICAgICAgIG51bWJlciBvZiBvcGVyYXRpbmcgZGF5cyBw
YXNzZWQgc2luY2UgdXNlciBpbnRlcmFjdGlvbi4KKyAgICAgICAgQSBuZXcgdGVzdCBjYXNlIG1h
a2VzIHN1cmUgd2Vic2l0ZSBkYXRhIGlzIG5vdCBkZWxldGVkIGJlbG93IHRoZSB0aHJlc2hvbGQu
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5n
LWRhdGVzLWFsbC1idXQtY29va2llcy1ub3QtcmVtb3ZlZC13aXRoLXVzZXItaW50ZXJhY3Rpb24t
Ni1kYXlzLWFnby1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLW5vdC1y
ZW1vdmVkLXdpdGgtdXNlci1pbnRlcmFjdGlvbi02LWRheXMtYWdvLmh0bWw6IEFkZGVkLgorICAg
ICAgICAgICAgU2V0cyBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQgdG8gNi4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1i
dXQtY29va2llcy1yZW1vdmVkLXdpdGgtdXNlci1pbnRlcmFjdGlvbi03LWRheXMtYWdvLWV4cGVj
dGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtc3RhdGlz
dGljcy13aXRoLW5vLXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0LgorICAgICAgICAqIGh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1j
b29raWVzLXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0aW9uLTctZGF5cy1hZ28uaHRtbDogUmVu
YW1lZCBmcm9tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9v
cGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtc3RhdGlzdGljcy13aXRoLW5v
LXVzZXItaW50ZXJhY3Rpb24uaHRtbC4KKyAgICAgICAgICAgIFNldHMgbnVtYmVyT2ZPcGVyYXRp
bmdEYXlzUGFzc2VkIHRvIDcuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQuaHRtbDoKKyAg
ICAgICAgICAgIFNldHMgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkIHRvIDMwLgorICAgICAg
ICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAgICAgVXBkYXRlZCBl
eGlzdGluZyBleHBlY3RhdGlvbiB3aXRoIG5ldyBmaWxlIG5hbWUuCisKIDIwMjEtMDItMjYgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFtQYXltZW50IFJlcXVl
c3RdIGxvZyBpZiBgdXBkYXRlV2l0aGAgaXMgbm90IGNhbGxlZCBzeW5jaHJvbm91c2x5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3Bl
cmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1ub3QtcmVtb3ZlZC13aXRoLXVzZXItaW50ZXJh
Y3Rpb24tNi1kYXlzLWFnby1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1ub3Qt
cmVtb3ZlZC13aXRoLXVzZXItaW50ZXJhY3Rpb24tNi1kYXlzLWFnby1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjRlYTM0ODUxNjVhMzRlMjVhMWYzNTY2MTBlZWNhYTI0ZWVmMDUxMAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLW5vdC1yZW1vdmVkLXdpdGgtdXNlci1p
bnRlcmFjdGlvbi02LWRheXMtYWdvLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACisKK0Jl
Zm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitC
ZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgorQmVm
b3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhp
c3RzLgorQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5IGRv
ZXMgZXhpc3QuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBl
eGlzdC4KKworQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBIdHRwT25seSBjb29raWUgZXhp
c3RzLgorQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBDbGllbnQtc2lkZSBjb29raWUgZXhp
c3RzLgorQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNv
b2tpZSBleGlzdHMuCitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBl
bnRyeSBkb2VzIGV4aXN0LgorQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkg
ZG9lcyBleGlzdC4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1ub3QtcmVt
b3ZlZC13aXRoLXVzZXItaW50ZXJhY3Rpb24tNi1kYXlzLWFnby5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0
LWNvb2tpZXMtbm90LXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0aW9uLTYtZGF5cy1hZ28uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40OGMyMThiZGQ3YzM5M2FiMDQ4ZTczNjdjYjI5NDNhZDhlODIwOGY0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtbm90LXJlbW92ZWQtd2l0aC11
c2VyLWludGVyYWN0aW9uLTYtZGF5cy1hZ28uaHRtbApAQCAtMCwwICsxLDI2MiBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNv
dXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJl
c291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGlt
ZW91dCgncnVuVGVzdCgpJywgMCkiPgorPGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxi
cj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBjb25zdCBodHRwT25seUNvb2tpZU5hbWUgPSAiaHR0
cC1vbmx5LWNvb2tpZSI7CisgICAgY29uc3Qgc2VydmVyU2lkZUNvb2tpZU5hbWUgPSAic2VydmVy
LXNpZGUtY29va2llIjsKKyAgICBjb25zdCBjbGllbnRTaWRlQ29va2llTmFtZSA9ICJjbGllbnQt
c2lkZS1jb29raWUiOworCisgICAgZnVuY3Rpb24gc29ydFN0cmluZ0FycmF5KGEsIGIpIHsKKyAg
ICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgYiA9IGIudG9Mb3dlckNhc2UoKTsK
KworICAgICAgICByZXR1cm4gYSA+IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gYWRkTGluZWJyZWFrVG9PdXRwdXQoKSB7CisgICAgICAgIGxldCBlbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENo
aWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZE91dHB1dChtZXNzYWdlKSB7
CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cisg
ICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gbWVzc2FnZTsKKyAgICAgICAgb3V0cHV0LmFwcGVu
ZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llcyhpc0Fm
dGVyRGVsZXRpb24pIHsKKyAgICAgICAgbGV0IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0g
W107CisgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAg
ICAgaWYgKCFjb29raWVzLmxlbmd0aCAmJiBpc0FmdGVyRGVsZXRpb24pCisgICAgICAgICAgICBh
ZGRPdXRwdXQoIkZBSUw6ICIgKyAiTm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAgICAgZm9yIChs
ZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29va2llLm5hbWUp
IHsKKyAgICAgICAgICAgICAgICBjYXNlIGh0dHBPbmx5Q29va2llTmFtZToKKyAgICAgICAgICAg
ICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9u
ID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiAiICsgKGlz
QWZ0ZXJEZWxldGlvbiA/ICIgIiA6ICIiKSArICJIdHRwT25seSBjb29raWUgZXhpc3RzLiIpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIHNlcnZlclNp
ZGVDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNz
YWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzdGF0
aXN0aWNzIHByb2Nlc3Npbmc6IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBjbGllbnRT
aWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVz
c2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc3Rh
dGlzdGljcyBwcm9jZXNzaW5nOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBs
ZXQgc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMu
c29ydChzb3J0U3RyaW5nQXJyYXkpOworICAgICAgICBmb3IgKGxldCB0ZXN0UGFzc2VkTWVzc2Fn
ZSBvZiBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCh0
ZXN0UGFzc2VkTWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBkYk5hbWUg
PSAiVGVzdERhdGFiYXNlIjsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZUlEQkRhdGFTdG9yZShjYWxs
YmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7Cisg
ICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWRkT3V0
cHV0KCJDb3VsZG4ndCBjcmVhdGUgaW5kZXhlZERCLiIpOworICAgICAgICAgICAgZmluaXNoVGVz
dCgpOworICAgICAgICB9OworICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBsZXQgZGIgPSBldmVudC50YXJnZXQucmVzdWx0Owor
ICAgICAgICAgICAgbGV0IG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7
YXV0b0luY3JlbWVudDogdHJ1ZX0pOworICAgICAgICAgICAgb2JqU3RvcmUuYWRkKCJ2YWx1ZSIp
OworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0
IG1heEludGVydmFscyA9IDIwOworCisgICAgbGV0IGludGVydmFsQ291bnRlcklEQjsKKyAgICBs
ZXQgY2hlY2tJREJDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tJREJJbnRlcnZhbElEOworICAgIGxl
dCBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgIGZ1bmN0aW9uIGNoZWNrSURCRGF0YVN0
b3JlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVl
c3Q7CisgICAgICAgIGludGVydmFsQ291bnRlcklEQiA9IDA7CisgICAgICAgIGNoZWNrSURCQ2Fs
bGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAg
ICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJ
REJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
aWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAg
aWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAg
ICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5
IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVj
ayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4
ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hl
Y2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291
bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhv
cmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgp
OworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9u
dXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBwcm9j
ZXNzaW5nOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVj
a0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8v
IENoZWNrIHVudGlsIHRoZXJlIGlzIG5vIElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2
YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2Vt
YXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytp
bnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAg
IGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAg
YWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIGV4
aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRi
TmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZh
bElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBp
bmRleGVkREIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRl
ZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwo
Y2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgi
QWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuIik7
CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBh
Z2FpbiBiZWNhdXNlIGRlbGV0aW9uIG1pZ2h0IGJlIGRlbGF5ZWQuCisgICAgICAgICAgICAgICAg
ICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlOworICAgIGxldCBjaGVj
a0xvY2FsU3RvcmFnZUNhbGxiYWNrOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUludGVydmFs
SUQ7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlTmFtZSA9ICJ0ZXN0IjsKKyAgICBjb25zdCBsb2Nh
bFN0b3JhZ2VWYWx1ZSA9ICJ2YWx1ZSI7CisgICAgZnVuY3Rpb24gY2hlY2tMb2NhbFN0b3JhZ2VF
eGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAgICAgICBpbnRlcnZhbENvdW50
ZXJMb2NhbFN0b3JhZ2UgPSAwOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrID0g
Y2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAgICAv
LyBDaGVjayB1bnRpbCB0aGVyZSBpcyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xv
Y2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxz
KSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJ
bnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdl
LmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1
dCgiQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAo
dmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4
aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xv
Y2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFy
SW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAg
ICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2lu
ZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8g
ImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSwgMTAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGls
IHRoZXJlIGlzIG5vIExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdl
SW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlm
ICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQp
OworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShs
b2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBz
dGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBs
b2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdl
KG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChj
aGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFs
dWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3Rv
cmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJk
b2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVdlYnNpdGVEYXRh
QW5kQ29udGludWUoKSB7CisgICAgICAgIC8vIFdyaXRlIGNvb2tpZXMuCisgICAgICAgIGF3YWl0
IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwP2Nvb2tp
ZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFsczogInNhbWUtb3JpZ2lu
IiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXRDb29raWVz
LmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZlclNpZGVDb29raWVOYW1lICsg
Ij0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAg
ZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUgKyAiPTEiOworCisgICAgICAg
IGNoZWNrQ29va2llcyhmYWxzZSk7CisKKyAgICAgICAgLy8gV3JpdGUgTG9jYWxTdG9yYWdlCisg
ICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUsIGxvY2FsU3RvcmFn
ZVZhbHVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoZmFsc2UsIGZ1bmN0aW9u
KCkgeworCisgICAgICAgICAgICAvLyBXcml0ZSBJbmRleGVkREIuCisgICAgICAgICAgICBjcmVh
dGVJREJEYXRhU3RvcmUoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGNoZWNrSURCRGF0
YVN0b3JlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRk
TGluZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dlYnNpdGVE
YXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9jZXNzV2Vic2l0ZURhdGFBbmRD
b250aW51ZSgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5E
YXRhUmVjb3Jkc0NhbGxiYWNrKGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSk7CisgICAgICAg
IHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7Cisg
ICAgICAgIGNoZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlz
dHModHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlz
dHModHJ1ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IG9y
aWdpblVuZGVyVGVzdCAgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBvdGhl
ck9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiCisgICAgY29uc3QgdG9wRnJhbWVPcmln
aW4gPSAiaHR0cDovLzEyNy4wLjAuMjo4MDAwIjsKKyAgICBjb25zdCB0aW1lU3RhbXAgPSBNYXRo
LnJvdW5kKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAwKTsKKyAgICBmdW5jdGlvbiBmaW5p
c2hUZXN0KCkgeworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNl
ckludGVyYWN0aW9uKG9yaWdpblVuZGVyVGVzdCkpCisgICAgICAgICAgICBhZGRPdXRwdXQoIkZB
SUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIGRvZXNuJ3QgaGF2ZSB1c2VyIGludGVyYWN0aW9u
IGFmdGVyIHByb2Nlc3NpbmcuIik7CisgICAgICAgIHJlc2V0Q29va2llcygpOworICAgICAgICBz
ZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBEbyBub3QgdXNl
IHNldEVuYWJsZUZlYXR1cmUgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlYnNp
dGUgZGF0YSBkZWxldGlvbiBpcyBub3Qgc2tpcHBlZAorICAgIC8vIGJ5IHRoZSBwcmVzZW5jZSBv
ZiBwYXJhbWV0ZXJzKCkuaXNSdW5uaW5nVGVzdC4KKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgewor
ICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVj
b3Jkc1JlbW92YWwoMzYwMCk7CisgICAgICAgIC8vIE1lcmdlIGEgc3RhdGlzdGljIHdpdGggbm8g
dXNlciBpbnRlcmFjdGlvbiB0byBjaGVjayB0aGUgLTEgY2FzZS4KKyAgICAgICAgdGVzdFJ1bm5l
ci5zZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMob3RoZXJPcmlnaW4sIHRvcEZyYW1lT3JpZ2lu
LCAiIiwgdGltZVN0YW1wLCBmYWxzZSwgLTEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMob3JpZ2luVW5kZXJUZXN0
LAorICAgICAgICAgICAgICAgICAgICA2LCAgICAgLy8gbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFz
c2VkCisgICAgICAgICAgICAgICAgICAgIHRydWUsICAvLyBoYXNVc2VySW50ZXJhY3Rpb24KKyAg
ICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0
YVJlbW92YWwsCisgICAgICAgICAgICAgICAgICAgIGZhbHNlLCAvLyBpc1ByZXZhbGVudAorICAg
ICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVX
ZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
b3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLXN0YXRpc3RpY3Mtd2l0aC1u
by11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJl
bW92ZWQtc3RhdGlzdGljcy13aXRoLW5vLXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWE1ZWEyNDEwODVlNGI1MTFhODEwZjg5NmFj
NGUzNDk5YTg0NzQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRp
bmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtc3RhdGlzdGljcy13aXRoLW5vLXVzZXIt
aW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAot
Ci1CZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3Rz
LgotQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSHR0cE9ubHkgY29va2llIGV4aXN0cy4K
LUJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2ll
IGV4aXN0cy4KLUJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRy
eSBkb2VzIGV4aXN0LgotQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRv
ZXMgZXhpc3QuCi0KLUFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSHR0cE9ubHkgY29va2ll
IGV4aXN0cy4KLUFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogQ2xpZW50LXNpZGUgY29va2ll
IGV4aXN0cy4KLUFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogUmVndWxhciBzZXJ2ZXItc2lk
ZSBjb29raWUgZXhpc3RzLgotQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3Jh
Z2UgZW50cnkgZG9lcyBub3QgZXhpc3QuCi1BZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElE
QiBlbnRyeSBkb2VzIG5vdCBleGlzdC4KLQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29v
a2llcy1yZW1vdmVkLXN0YXRpc3RpY3Mtd2l0aC1uby11c2VyLWludGVyYWN0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRh
dGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLXN0YXRpc3RpY3Mtd2l0aC1uby11c2VyLWludGVy
YWN0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1NWIxYWI2YWVmOGQ5
NDQ0YzRjMTQyYTA2MjZmNWMwZTEyMWIyNTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC1zdGF0aXN0aWNz
LXdpdGgtbm8tdXNlci1pbnRlcmFjdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjU4ICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8c2NyaXB0IHNyYz0i
L2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBv
bmxvYWQ9InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KLTxicj4KLTxkaXYgaWQ9Im91dHB1
dCI+PC9kaXY+Ci08YnI+Ci08c2NyaXB0PgotICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OwotICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgY29uc3QgaHR0cE9ubHlDb29r
aWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOwotICAgIGNvbnN0IHNlcnZlclNpZGVDb29raWVO
YW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7Ci0gICAgY29uc3QgY2xpZW50U2lkZUNvb2tpZU5h
bWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKLQotICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdBcnJh
eShhLCBiKSB7Ci0gICAgICAgIGEgPSBhLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgIGIgPSBiLnRv
TG93ZXJDYXNlKCk7Ci0KLSAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEgOiAw
OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGFkZExpbmVicmVha1RvT3V0cHV0KCkgewotICAgICAg
ICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7Ci0gICAgICAgIG91
dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBhZGRPdXRw
dXQobWVzc2FnZSkgewotICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwotICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9IG1lc3NhZ2U7Ci0gICAgICAg
IG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjaGVj
a0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7Ci0gICAgICAgIGxldCB1bnNvcnRlZFRlc3RQYXNz
ZWRNZXNzYWdlcyA9IFtdOwotICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRDb29r
aWVzKCk7Ci0gICAgICAgIGlmICghY29va2llcy5sZW5ndGggJiYgaXNBZnRlckRlbGV0aW9uKQot
ICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsgIk5vIGNvb2tpZXMgZm91bmQuIik7Ci0g
ICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7Ci0gICAgICAgICAgICBzd2l0Y2gg
KGNvb2tpZS5uYW1lKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBodHRwT25seUNvb2tpZU5hbWU6
Ci0gICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlz
QWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vz
c2luZzogIiArIChpc0FmdGVyRGVsZXRpb24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2ll
IGV4aXN0cy4iKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSBzZXJ2ZXJTaWRlQ29va2llTmFtZToKLSAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRU
ZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZv
cmUiKSArICIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tp
ZSBleGlzdHMuIik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IGNhc2UgY2xpZW50U2lkZUNvb2tpZU5hbWU6Ci0gICAgICAgICAgICAgICAgICAgIHVuc29ydGVk
VGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVm
b3JlIikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0
cy4iKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgbGV0IHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IHVuc29ydGVkVGVzdFBh
c3NlZE1lc3NhZ2VzLnNvcnQoc29ydFN0cmluZ0FycmF5KTsKLSAgICAgICAgZm9yIChsZXQgdGVz
dFBhc3NlZE1lc3NhZ2Ugb2Ygc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzKSB7Ci0gICAgICAgICAg
ICBhZGRPdXRwdXQodGVzdFBhc3NlZE1lc3NhZ2UpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
Y29uc3QgZGJOYW1lID0gIlRlc3REYXRhYmFzZSI7Ci0KLSAgICBmdW5jdGlvbiBjcmVhdGVJREJE
YXRhU3RvcmUoY2FsbGJhY2spIHsKLSAgICAgICAgbGV0IHJlcXVlc3QgPSBpbmRleGVkREIub3Bl
bihkYk5hbWUpOwotICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3QgY3JlYXRlIGluZGV4ZWREQi4iKTsKLSAgICAgICAg
ICAgIGZpbmlzaFRlc3QoKTsKLSAgICAgICAgfTsKLSAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICAgICAgbGV0IGRiID0gZXZlbnQudGFy
Z2V0LnJlc3VsdDsKLSAgICAgICAgICAgIGxldCBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0
b3JlKCJ0ZXN0Iiwge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKLSAgICAgICAgICAgIG9ialN0b3Jl
LmFkZCgidmFsdWUiKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBjb25zdCBtYXhJbnRlcnZhbHMgPSAyMDsKLQotICAgIGxldCBpbnRlcnZhbENvdW50
ZXJJREI7Ci0gICAgbGV0IGNoZWNrSURCQ2FsbGJhY2s7Ci0gICAgbGV0IGNoZWNrSURCSW50ZXJ2
YWxJRDsKLSAgICBsZXQgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKLSAgICBmdW5jdGlvbiBj
aGVja0lEQkRhdGFTdG9yZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7Ci0gICAg
ICAgIGxldCByZXF1ZXN0OwotICAgICAgICBpbnRlcnZhbENvdW50ZXJJREIgPSAwOwotICAgICAg
ICBjaGVja0lEQkNhbGxiYWNrID0gY2FsbGJhY2s7Ci0gICAgICAgIGlmICghaXNBZnRlckRlbGV0
aW9uKSB7Ci0gICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4KLSAgICAg
ICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKLQotICAg
ICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsK
LSAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOwot
ICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Np
bmc6IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKLSAgICAgICAgICAgICAgICAgICAgc2Vt
YXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxs
YmFjaygpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOwotICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjbGVh
ckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBh
ZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZpbmlzaFRlc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJ
bnRlcnZhbElEKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0
YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOwotICAgICAgICAgICAgICAgICAgICB9OwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sIDIwMCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBJREIuCi0gICAgICAgICAgICBj
aGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOwotCi0gICAgICAgICAg
ICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgewotICAgICAg
ICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIg
ZW50cnkgZG9lcyBleGlzdC4iKTsKLSAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hl
Y2sgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOwotICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRl
eGVkREIub3BlbihkYk5hbWUpOwotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNo
ZWNrSURCSW50ZXJ2YWxJRCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNv
dWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBo
b3JlSURCQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3Qo
KTsKLSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5v
bnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBj
bGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMg
bm90IGV4aXN0LiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sg
PSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKLSAgICAgICAg
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBm
dW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50
ZXJ2YWwgY2hlY2sgYWdhaW4gYmVjYXVzZSBkZWxldGlvbiBtaWdodCBiZSBkZWxheWVkLgotICAg
ICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAg
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LCAyMDApOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZTsK
LSAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsKLSAgICBsZXQgY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEOwotICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7Ci0g
ICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSAidmFsdWUiOwotICAgIGZ1bmN0aW9uIGNoZWNr
TG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKLSAgICAgICAg
aW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID0gMDsKLSAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VDYWxsYmFjayA9IGNhbGxiYWNrOwotICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgewot
ICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgotICAgICAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49
IG1heEludGVydmFscykgewotICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNr
TG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7Ci0gICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9
IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOwotICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFn
ZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2Vz
IG5vdCIpICsgIiBleGlzdC4iKTsKLSAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VDYWxsYmFjaygpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgewotICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3Rv
cmFnZU5hbWUpOwotICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0
aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0
b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKLSAgICAgICAg
ICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0sIDEwMCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAv
LyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBMb2NhbFN0b3JhZ2UuCi0gICAgICAgICAgICBjaGVj
a0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2
YWxzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3Jh
Z2VJbnRlcnZhbElEKTsKLSAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9y
YWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIGFkZE91
dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiAr
ICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIg
ZXhpc3QuIik7Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2so
KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hh
c0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKLSAgICAgICAgICAgICAg
ICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7
Ci0gICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNz
aW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUg
PyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7Ci0gICAgICAgICAgICAgICAgICAg
IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9LCAxMDApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgYXN5bmMgZnVuY3Rpb24gd3Jp
dGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgewotICAgICAgICAvLyBXcml0ZSBjb29raWVzLgot
ICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29v
a2llLnBocD9jb29raWVOYW1lPSIgKyBodHRwT25seUNvb2tpZU5hbWUsIHsgY3JlZGVudGlhbHM6
ICJzYW1lLW9yaWdpbiIgfSk7Ci0gICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJj
ZXMvc2V0Q29va2llcy5jZ2kiLCB7IGhlYWRlcnM6IHsgIlNldC1Db29raWUiOiBzZXJ2ZXJTaWRl
Q29va2llTmFtZSArICI9MTsgcGF0aD0vOyIgfSwgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIg
fSk7Ci0gICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNsaWVudFNpZGVDb29raWVOYW1lICsgIj0x
IjsKLQotICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UpOwotCi0gICAgICAgIC8vIFdyaXRlIExv
Y2FsU3RvcmFnZQotICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1l
LCBsb2NhbFN0b3JhZ2VWYWx1ZSk7Ci0gICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGZh
bHNlLCBmdW5jdGlvbigpIHsKLQotICAgICAgICAgICAgLy8gV3JpdGUgSW5kZXhlZERCLgotICAg
ICAgICAgICAgY3JlYXRlSURCRGF0YVN0b3JlKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAg
ICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHBy
b2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcHJvY2Vzc1dl
YnNpdGVEYXRhQW5kQ29udGludWUoKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRp
c3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjaGVja1dlYnNpdGVEYXRhQW5kQ29udGlu
dWUpOwotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERh
dGFSZWNvcmRzKCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2hlY2tXZWJzaXRlRGF0YUFuZENv
bnRpbnVlKCkgewotICAgICAgICBjaGVja0Nvb2tpZXModHJ1ZSk7Ci0gICAgICAgIGNoZWNrTG9j
YWxTdG9yYWdlRXhpc3RzKHRydWUsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGNoZWNrSURC
RGF0YVN0b3JlRXhpc3RzKHRydWUsIGZpbmlzaFRlc3QpOwotICAgICAgICB9KTsKLSAgICB9Ci0K
LSAgICBjb25zdCBvcmlnaW5VbmRlclRlc3QgID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7Ci0g
ICAgY29uc3Qgb3RoZXJPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIgotICAgIGNvbnN0
IHRvcEZyYW1lT3JpZ2luID0gImh0dHA6Ly8xMjcuMC4wLjI6ODAwMCI7Ci0gICAgY29uc3QgdGlt
ZVN0YW1wID0gTWF0aC5yb3VuZCgobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMCk7Ci0gICAg
ZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0
aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKG9yaWdpblVuZGVyVGVzdCkpCi0gICAgICAgICAgICBh
ZGRPdXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIHN0aWxsIGhhcyB1c2VyIGlu
dGVyYWN0aW9uIGFmdGVyIHByb2Nlc3NpbmcuIik7Ci0gICAgICAgIHJlc2V0Q29va2llcygpOwot
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICAvLyBE
byBub3QgdXNlIHNldEVuYWJsZUZlYXR1cmUgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdG8gbWFrZSBz
dXJlIHdlYnNpdGUgZGF0YSBkZWxldGlvbiBpcyBub3Qgc2tpcHBlZAotICAgIC8vIGJ5IHRoZSBw
cmVzZW5jZSBvZiBwYXJhbWV0ZXJzKCkuaXNSdW5uaW5nVGVzdC4KLSAgICBmdW5jdGlvbiBydW5U
ZXN0KCkgewotICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdl
ZW5EYXRhUmVjb3Jkc1JlbW92YWwoMzYwMCk7Ci0gICAgICAgIC8vIE1lcmdlIGEgc3RhdGlzdGlj
IHdpdGggbm8gdXNlciBpbnRlcmFjdGlvbiB0byBjaGVjayB0aGUgLTEgY2FzZS4KLSAgICAgICAg
dGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMob3RoZXJPcmlnaW4sIHRvcEZy
YW1lT3JpZ2luLCAiIiwgdGltZVN0YW1wLCBmYWxzZSwgLTEsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IDAsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUodHJ1ZSwgZnVuY3Rpb24gKCkgewotICAgICAg
ICAgICAgICAgIC8vIGluc2VydFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKGRvbWFpbiwgaGFz
SGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFs
LCBpc1ByZXZhbGVudCkKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NF
eHBpcmVkU3RhdGlzdGljKG9yaWdpblVuZGVyVGVzdCwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgICAgICB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUo
KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAg
ICB9Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1
dC1jb29raWVzLXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0aW9uLTctZGF5cy1hZ28tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29w
ZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC13aXRoLXVzZXItaW50ZXJhY3Rp
b24tNy1kYXlzLWFnby1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRlYTM0ODUxNjVhMzRlMjVh
MWYzNTY2MTBlZWNhYTI0ZWVmMDUxMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1j
b29raWVzLXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0aW9uLTctZGF5cy1hZ28tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKKworQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogQ2xp
ZW50LXNpZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IEh0
dHBPbmx5IGNvb2tpZSBleGlzdHMuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBSZWd1
bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNz
aW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgZG9lcyBleGlzdC4KK0JlZm9yZSBzdGF0aXN0aWNzIHBy
b2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIGV4aXN0LgorCitBZnRlciBzdGF0aXN0aWNzIHByb2Nl
c3Npbmc6IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Np
bmc6IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Np
bmc6IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIHN0YXRpc3RpY3Mg
cHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCitBZnRlciBzdGF0aXN0
aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIGV4aXN0LgorCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0
ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0aW9uLTctZGF5cy1h
Z28uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9v
cGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0
aW9uLTctZGF5cy1hZ28uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YzQ3MmRkYzBjM2IyNjFiNWIxNWUxMjg1
MmViMDRlMTRjODJmOWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMt
cmVtb3ZlZC13aXRoLXVzZXItaW50ZXJhY3Rpb24tNy1kYXlzLWFnby5odG1sCkBAIC0wLDAgKzEs
MjYyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9
Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJzZXRUaW1lb3V0KCdydW5UZXN0KCknLCAwKSI+Cis8YnI+Cis8ZGl2IGlkPSJvdXRw
dXQiPjwvZGl2PgorPGJyPgorPHNjcmlwdD4KKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUo
KTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgIGNvbnN0IGh0dHBPbmx5Q29v
a2llTmFtZSA9ICJodHRwLW9ubHktY29va2llIjsKKyAgICBjb25zdCBzZXJ2ZXJTaWRlQ29va2ll
TmFtZSA9ICJzZXJ2ZXItc2lkZS1jb29raWUiOworICAgIGNvbnN0IGNsaWVudFNpZGVDb29raWVO
YW1lID0gImNsaWVudC1zaWRlLWNvb2tpZSI7CisKKyAgICBmdW5jdGlvbiBzb3J0U3RyaW5nQXJy
YXkoYSwgYikgeworICAgICAgICBhID0gYS50b0xvd2VyQ2FzZSgpOworICAgICAgICBiID0gYi50
b0xvd2VyQ2FzZSgpOworCisgICAgICAgIHJldHVybiBhID4gYiA/IDEgOiBiID4gYSA/IC0xIDog
MDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRMaW5lYnJlYWtUb091dHB1dCgpIHsKKyAgICAg
ICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpOworICAgICAgICBv
dXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkT3V0
cHV0KG1lc3NhZ2UpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgZWxlbWVudC5pbm5lclRleHQgPSBtZXNzYWdlOworICAgICAg
ICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hl
Y2tDb29raWVzKGlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICBsZXQgdW5zb3J0ZWRUZXN0UGFz
c2VkTWVzc2FnZXMgPSBbXTsKKyAgICAgICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29v
a2llcygpOworICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoICYmIGlzQWZ0ZXJEZWxldGlvbikK
KyAgICAgICAgICAgIGFkZE91dHB1dCgiRkFJTDogIiArICJObyBjb29raWVzIGZvdW5kLiIpOwor
ICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAgICAgICAgc3dpdGNo
IChjb29raWUubmFtZSkgeworICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29raWVOYW1l
OgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChp
c0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzdGF0aXN0aWNzIHByb2Nl
c3Npbmc6ICIgKyAoaXNBZnRlckRlbGV0aW9uID8gIiAiIDogIiIpICsgIkh0dHBPbmx5IGNvb2tp
ZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2Ugc2VydmVyU2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVk
VGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVm
b3JlIikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29r
aWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIGNsaWVudFNpZGVDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRl
ZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJl
Zm9yZSIpICsgIiBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IENsaWVudC1zaWRlIGNvb2tpZSBleGlz
dHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSB1bnNvcnRlZFRlc3RQ
YXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7CisgICAgICAgIGZvciAobGV0IHRl
c3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcykgeworICAgICAgICAg
ICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOworCisgICAgZnVuY3Rpb24gY3JlYXRlSURC
RGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0ID0gaW5kZXhlZERCLm9w
ZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0ZSBpbmRleGVkREIuIik7CisgICAgICAg
ICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcXVlc3Qub251cGdyYWRl
bmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGxldCBkYiA9IGV2ZW50LnRh
cmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RT
dG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7CisgICAgICAgICAgICBvYmpTdG9y
ZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9CisgICAg
fQorCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7CisKKyAgICBsZXQgaW50ZXJ2YWxDb3Vu
dGVySURCOworICAgIGxldCBjaGVja0lEQkNhbGxiYWNrOworICAgIGxldCBjaGVja0lEQkludGVy
dmFsSUQ7CisgICAgbGV0IHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgZnVuY3Rpb24g
Y2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAg
ICAgICBsZXQgcmVxdWVzdDsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVySURCID0gMDsKKyAgICAg
ICAgY2hlY2tJREJDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxl
dGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgYSBJREIuCisgICAg
ICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAg
ICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7
CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsK
KyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNz
aW5nOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIHNl
bWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2Fs
bGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xl
YXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAg
YWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAg
ICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluLgorICAgICAg
ICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURC
SW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBz
dGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8gSURCLgorICAgICAgICAgICAg
Y2hlY2tJREJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAg
ICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAg
ICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURC
IGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNo
ZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5k
ZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChj
aGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJD
b3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0
KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
b251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
Y2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2Vz
IG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNr
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGlu
dGVydmFsIGNoZWNrIGFnYWluIGJlY2F1c2UgZGVsZXRpb24gbWlnaHQgYmUgZGVsYXllZC4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMjAwKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2U7
CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2s7CisgICAgbGV0IGNoZWNrTG9jYWxT
dG9yYWdlSW50ZXJ2YWxJRDsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VOYW1lID0gInRlc3QiOwor
ICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZhbHVlID0gInZhbHVlIjsKKyAgICBmdW5jdGlvbiBjaGVj
a0xvY2FsU3RvcmFnZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7CisgICAgICAg
IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA9IDA7CisgICAgICAgIGNoZWNrTG9jYWxTdG9y
YWdlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsK
KyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIExvY2FsU3RvcmFnZS4KKyAgICAg
ICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+
PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVj
a0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUg
PSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3Jh
Z2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9l
cyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9y
YWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAg
ICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0
b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlz
dGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxT
dG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAg
ICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Ly8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8gTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hl
Y2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVy
dmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9y
YWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3Rv
cmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRP
dXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIg
KyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAi
IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNr
KCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NI
YXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAgICAgICAgICAgICAgICBj
bGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAg
ICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUp
OworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vz
c2luZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVl
ID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAg
ICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSwgMTAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIHdy
aXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgLy8gV3JpdGUgY29va2llcy4K
KyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNv
b2tpZS5waHA/Y29va2llTmFtZT0iICsgaHR0cE9ubHlDb29raWVOYW1lLCB7IGNyZWRlbnRpYWxz
OiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3Vy
Y2VzL3NldENvb2tpZXMuY2dpIiwgeyBoZWFkZXJzOiB7ICJTZXQtQ29va2llIjogc2VydmVyU2lk
ZUNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LzsiIH0sIGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4i
IH0pOworICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjbGllbnRTaWRlQ29va2llTmFtZSArICI9
MSI7CisKKyAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsKKworICAgICAgICAvLyBXcml0ZSBM
b2NhbFN0b3JhZ2UKKyAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9jYWxTdG9yYWdlTmFt
ZSwgbG9jYWxTdG9yYWdlVmFsdWUpOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhm
YWxzZSwgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIFdyaXRlIEluZGV4ZWREQi4KKyAg
ICAgICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAgICAgICAgICAgICAgICAgICBw
cm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHByb2Nlc3NX
ZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0
aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRp
bnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmRE
YXRhUmVjb3JkcygpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrV2Vic2l0ZURhdGFBbmRD
b250aW51ZSgpIHsKKyAgICAgICAgY2hlY2tDb29raWVzKHRydWUpOworICAgICAgICBjaGVja0xv
Y2FsU3RvcmFnZUV4aXN0cyh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBjaGVja0lE
QkRhdGFTdG9yZUV4aXN0cyh0cnVlLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgfSk7CisgICAgfQor
CisgICAgY29uc3Qgb3JpZ2luVW5kZXJUZXN0ICA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOwor
ICAgIGNvbnN0IG90aGVyT3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIKKyAgICBjb25z
dCB0b3BGcmFtZU9yaWdpbiA9ICJodHRwOi8vMTI3LjAuMC4yOjgwMDAiOworICAgIGNvbnN0IHRp
bWVTdGFtcCA9IE1hdGgucm91bmQoKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDApOworICAg
IGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRp
c3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24ob3JpZ2luVW5kZXJUZXN0KSkKKyAgICAgICAgICAg
IGFkZE91dHB1dCgiRkFJTDogIiArIG9yaWdpblVuZGVyVGVzdCArICIgZG9lc24ndCBoYXZlIHVz
ZXIgaW50ZXJhY3Rpb24gYWZ0ZXIgcHJvY2Vzc2luZy4iKTsKKyAgICAgICAgcmVzZXRDb29raWVz
KCk7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAg
IC8vIERvIG5vdCB1c2Ugc2V0RW5hYmxlRmVhdHVyZSBoZXJlIGJlY2F1c2Ugd2Ugd2FudCB0byBt
YWtlIHN1cmUgd2Vic2l0ZSBkYXRhIGRlbGV0aW9uIGlzIG5vdCBza2lwcGVkCisgICAgLy8gYnkg
dGhlIHByZXNlbmNlIG9mIHBhcmFtZXRlcnMoKS5pc1J1bm5pbmdUZXN0LgorICAgIGZ1bmN0aW9u
IHJ1blRlc3QoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01pbmltdW1UaW1l
QmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbCgzNjAwKTsKKyAgICAgICAgLy8gTWVyZ2UgYSBzdGF0
aXN0aWMgd2l0aCBubyB1c2VyIGludGVyYWN0aW9uIHRvIGNoZWNrIHRoZSAtMSBjYXNlLgorICAg
ICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhvdGhlck9yaWdpbiwg
dG9wRnJhbWVPcmlnaW4sICIiLCB0aW1lU3RhbXAsIGZhbHNlLCAtMSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgMCwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3Rp
Y3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSh0cnVlLCBmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhv
cmlnaW5VbmRlclRlc3QsCisgICAgICAgICAgICAgICAgICAgIDcsICAgICAvLyBudW1iZXJPZk9w
ZXJhdGluZ0RheXNQYXNzZWQKKyAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgIC8vIGhhc1VzZXJJ
bnRlcmFjdGlvbgorICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gaXNTY2hlZHVsZWRGb3JB
bGxCdXRDb29raWVEYXRhUmVtb3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIGlz
UHJldmFsZW50CisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgICAgICB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLXdlYnNpdGUtZGF0YS1yZW1vdmVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0
aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEtcmVtb3ZlZC5odG1sCmluZGV4IDk3NzE5NjkyZTI4
YzBhZTkzY2I4NzM2NGY4MjY5YTVmZDMzNzdmYzkuLmEzZGNmY2VhZTVmMTAxNjJkNmM0ZDE1ZWY0
N2QwM2Y5YmI2ZWE4NDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLXdlYnNpdGUtZGF0YS1yZW1vdmVk
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQuaHRtbApAQCAtMjM4LDgg
KzIzOCwxMiBAQAogCiAgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAvLyBpbnNlcnRTdGF0aXN0
aWNzRXhwaXJlZFN0YXRpc3RpYyhkb21haW4sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hl
ZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQpCi0gICAgICAgICAg
ICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKG9yaWdpblVuZGVyVGVz
dCwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5l
ci5zZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhvcmlnaW5VbmRlclRlc3QsCisgICAgICAg
ICAgICAgICAgMzAsICAgIC8vIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZAorICAgICAgICAg
ICAgICAgIHRydWUsICAvLyBoYXNVc2VySW50ZXJhY3Rpb24KKyAgICAgICAgICAgICAgICBmYWxz
ZSwgLy8gaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwKKyAgICAgICAgICAg
ICAgICB0cnVlLCAgLy8gaXNQcmV2YWxlbnQKKyAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsK
ICAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2Uob3JpZ2luVW5kZXJUZXN0KSkKICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJG
QUlMOiAiICsgb3JpZ2luVW5kZXJUZXN0ICsgIiBkaWQgbm90IGdldCBpbnNlcnRlZCBpbnRvIGRh
dGFiYXNlLiIpOwogICAgICAgICAgICAgICAgIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAzZmIwNWNm
OTRjNzhhNTA2NDA5MjA5YTdjOTY2NzAwMjcwMDZkZDdhLi44Zjc5ZjE4NzM2ODhhOGY2MDc0NWRm
MDdhZjZjZjZmNTkxMzc5YzhkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIv
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtODQxLDcgKzg0MSw3IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9zZXQtYWxsLWNvb2tpZXMtdG8tc2FtZS1zaXRlLXN0cmljdC5odG1sIFsgU2tpCiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvZW5mb3JjZS1zYW1lc2l0ZS1zdHJpY3QtYmFz
ZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbCBbIFNraXAgXQogCiAjIFRo
aXMgdGVzdCBpcyBmbGFreS4gPHJkYXI6Ly9wcm9ibGVtLzY5NzQ4NzIwPgotaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVt
b3ZlZC1zdGF0aXN0aWNzLXdpdGgtbm8tdXNlci1pbnRlcmFjdGlvbi5odG1sIFsgUGFzcyBGYWls
dXJlIF0KK2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMt
YWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0aW9uLTctZGF5cy1hZ28u
aHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKICMgVGhlIENOQU1FIGFuZCBjb29raWUgdHJhbnNmb3Jt
IFNQSXMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIG1hY09TIEJpZyBTdXIgKyBpT1MgMTQgYW5kIGFi
b3ZlLgogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NuYW1lLWNsb2FraW5nLXRv
cC1jbmFtZS1zdWItMXAtY25hbWUuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421680</attachid>
            <date>2021-02-26 11:22:58 -0800</date>
            <delta_ts>2021-02-26 14:26:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222248-20210226112257.patch</filename>
            <type>text/plain</type>
            <size>88875</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVjODBkNTFmMzQ2OTE4ODQ4
YTljZDI0ZWMzMzk4ZmVkOWIzNWE4NDUuLjUwNjg4ZTM5YWMzYzc1MGFiNTUxNzdkMDEyYWQ2OGE0
ZWI2YzdmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjEtMDItMjYgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgTm9uLWNvb2tpZSB3ZWJzaXRl
IGRhdGEgbm90IGRlbGV0ZWQgYWZ0ZXIgNyBkYXlzIG9mIGJyb3dzZXIgdXNlIHdpdGhvdXQgdXNl
ciBpbnRlcmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyMjQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NDYxMjU4OT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtIGFuZCBpbmZvcm1hbGx5IGJ5IEthdGUgQ2hlbmV5
LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3Bl
cmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1ub3QtcmVtb3ZlZC13aXRoLXVzZXItaW50ZXJh
Y3Rpb24tNi1kYXlzLWFnby5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLXdp
dGgtdXNlci1pbnRlcmFjdGlvbi03LWRheXMtYWdvLmh0bWwKKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
dXBkYXRlT3BlcmF0aW5nRGF0ZXNQYXJhbWV0ZXJzKToKKyAgICAgICAgICAgIE5vdyBzZXRzIHR3
byBuZXcgbWVtYmVyIHZhcmlhYmxlczoKKyAgICAgICAgICAgIC0gT3B0aW9uYWw8T3BlcmF0aW5n
RGF0ZT4gbV9sb25nV2luZG93T3BlcmF0aW5nRGF0ZQorICAgICAgICAgICAgLSBPcHRpb25hbDxP
cGVyYXRpbmdEYXRlPiBtX3Nob3J0V2luZG93T3BlcmF0aW5nRGF0ZQorICAgICAgICAgICAgVGhl
c2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBtaW5pbXVtIG51bWJlciBvZiBvcGVyYXRpbmcgZGF5cyBo
YXMgcGFzc2VkLgorICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBubyBsb25nZXIgc2V0cyBtX2xl
YXN0UmVjZW50T3BlcmF0aW5nRGF0ZS4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkIGNvbnN0KToKKyAgICAg
ICAgICAgIE5vdyBjaGVja3MgYWdhaW5zdCB0aGUgdHdvIG5ldyBtZW1iZXIgdmFyaWFibGVzIG1f
bG9uZ1dpbmRvd09wZXJhdGluZ0RhdGUKKyAgICAgICAgICAgIGFuZCBtX3Nob3J0V2luZG93T3Bl
cmF0aW5nRGF0ZS4gVGhpcyBmaXhlcyB0aGUgYnVnLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRl
c3RpbmcpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4gTm93IHRha2VzIHRoZSBu
ZXcgcGFyYW1ldGVyIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZAorICAgICAgICAgICAgd2l0
aCB3aGljaCBsYXlvdXQgdGVzdHMgY2FuIGNvbnRyb2wgdGhlIGV4YWN0IG51bWJlciBvZiBvcGVy
YXRpbmcgZGF5cworICAgICAgICAgICAgcGFzc2VkIHNpbmNlIHVzZXIgaW50ZXJhY3Rpb24uCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAgICAgQWRkZWQgbV9sb25nV2luZG93T3BlcmF0aW5n
RGF0ZSBhbmQgbV9zaG9ydFdpbmRvd09wZXJhdGluZ0RhdGUsIGFuZAorICAgICAgICAgICAgcmVt
b3ZlZCBtX2xlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZSBzaW5jZSBpdCdzIG5vIGxvbmdlciB1c2Vk
LgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAg
ICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJlLiBUaGUgc2FtZSBjaGFuZ2VzIGFzIGluIHRoZSBE
QiBzdG9yZS4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omluc2VydEV4cGly
ZWRTdGF0aXN0aWNGb3JUZXN0aW5nKToKKyAgICAgICAgICAgIFRlc3QgaW5mcmFzdHJ1Y3R1cmUu
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbnNlcnRFeHBpcmVkU3RhdGlz
dGljRm9yVGVzdGluZyk6CisgICAgICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyk6CisgICAgICAgICAgICBUZXN0IGluZnJh
c3RydWN0dXJlLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6aW5zZXJ0RXhwaXJlZFN0
YXRpc3RpY0ZvclRlc3RpbmcpOgorICAgICAgICAgICAgVGVzdCBpbmZyYXN0cnVjdHVyZS4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGlu
Zyk6CisgICAgICAgICAgICBUZXN0IGluZnJhc3RydWN0dXJlLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisKIDIwMjEtMDItMjYgIFBlciBBcm5l
ICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBSZWdpc3RlciBWUDkgZGVj
b2RlcnMgd2hlbiBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgaXMgY3JlYXRlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5k
ZXggYmEzMmY3NmJiMzc4NThlMzJmMDJhY2YzNzY3ZGQyNTFmOWY0ZTA1MS4uYzRhZDEzMWMxZWU4
Y2NkM2ZhZDA5MTMxZjA1Zjc4YTI0YjQ0OGRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0yODAxLDcgKzI4MDEsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRp
bmdEYXRlc1BhcmFtZXRlcnMoKQogewogICAgIFNRTGl0ZVN0YXRlbWVudCBjb3VudE9wZXJhdGlu
Z0RhdGVzU3RhdGVtZW50KG1fZGF0YWJhc2UsICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBPcGVyYXRp
bmdEYXRlczsiX3MpOwogICAgIFNRTGl0ZVN0YXRlbWVudCBnZXRNb3N0UmVjZW50T3BlcmF0aW5n
RGF0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUICogRlJPTSBPcGVyYXRpbmdEYXRlcyBP
UkRFUiBCWSB5ZWFyIERFU0MsIG1vbnRoIERFU0MsIG1vbnRoRGF5IERFU0MgTElNSVQgMTsiX3Mp
OwotICAgIFNRTGl0ZVN0YXRlbWVudCBnZXRMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1l
bnQobV9kYXRhYmFzZSwgIlNFTEVDVCAqIEZST00gT3BlcmF0aW5nRGF0ZXMgT1JERVIgQlkgeWVh
ciwgbW9udGgsIG1vbnRoRGF5IExJTUlUIDE7Il9zKTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgZ2V0
T3BlcmF0aW5nRGF0ZVdpbmRvd1N0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VMRUNUICogRlJPTSBP
cGVyYXRpbmdEYXRlcyBPUkRFUiBCWSB5ZWFyIERFU0MsIG1vbnRoIERFU0MsIG1vbnRoRGF5IERF
U0MgTElNSVQgMSBPRkZTRVQgPzsiX3MpOwogCiAgICAgaWYgKGNvdW50T3BlcmF0aW5nRGF0ZXNT
dGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAgICB8fCBjb3VudE9wZXJhdGlu
Z0RhdGVzU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CkBAIC0yODE4LDE3ICsyODE4
LDM4IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9w
ZXJhdGluZ0RhdGVzUGFyYW1ldGVycygpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotCiAgICAgbV9tb3N0UmVjZW50T3BlcmF0aW5nRGF0ZSA9
IE9wZXJhdGluZ0RhdGUoZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuZ2V0Q29s
dW1uSW50KDApLCBnZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5nZXRDb2x1bW5J
bnQoMSksIGdldE1vc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgy
KSk7CiAKLSAgICBpZiAoZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LnByZXBh
cmUoKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRl
U3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMgZ2V0TGVhc3RSZWNl
bnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAl
e3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgIGlmIChn
ZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVz
UGFyYW1ldGVycyBnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50IGZhaWxlZCBkdXJpbmcg
dGhlIGNhbGwgdG8gcHJlcGFyZSgpIHdpdGggZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMuIiwg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9sZWFzdFJlY2VudE9wZXJh
dGluZ0RhdGUgPSBPcGVyYXRpbmdEYXRlKGdldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRl
bWVudC5nZXRDb2x1bW5JbnQoMCksIGdldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVu
dC5nZXRDb2x1bW5JbnQoMSksIGdldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5n
ZXRDb2x1bW5JbnQoMikpOworICAgIGlmIChtX29wZXJhdGluZ0RhdGVzU2l6ZSA8PSBvcGVyYXRp
bmdEYXRlc1dpbmRvd1Nob3J0IC0gMSkKKyAgICAgICAgbV9zaG9ydFdpbmRvd09wZXJhdGluZ0Rh
dGUgPSBXVEY6Om51bGxvcHQ7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChnZXRPcGVyYXRpbmdE
YXRlV2luZG93U3RhdGVtZW50LmJpbmRJbnQoMSwgb3BlcmF0aW5nRGF0ZXNXaW5kb3dTaG9ydCAt
IDEpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgZ2V0T3BlcmF0aW5nRGF0ZVdpbmRvd1N0
YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFyYW1ldGVycyBnZXRPcGVyYXRp
bmdEYXRlV2luZG93U3RhdGVtZW50IGZhaWxlZCB3aXRoIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0
ZX1zLiBUaGUgZXJyb3IgY291bGQgYmUgaW4gdGhlIGNhbGxzIHRvIGJpbmQoKSBvciBzdGVwKCku
IiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBt
X3Nob3J0V2luZG93T3BlcmF0aW5nRGF0ZSA9IE9wZXJhdGluZ0RhdGUoZ2V0T3BlcmF0aW5nRGF0
ZVdpbmRvd1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCksIGdldE9wZXJhdGluZ0RhdGVXaW5kb3dT
dGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDEpLCBnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50
LmdldENvbHVtbkludCgyKSk7CisgICAgfQorCisgICAgaWYgKG1fb3BlcmF0aW5nRGF0ZXNTaXpl
IDw9IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZyAtIDEpCisgICAgICAgIG1fbG9uZ1dpbmRvd09w
ZXJhdGluZ0RhdGUgPSBXVEY6Om51bGxvcHQ7CisgICAgZWxzZSB7CisgICAgICAgIGdldE9wZXJh
dGluZ0RhdGVXaW5kb3dTdGF0ZW1lbnQucmVzZXQoKTsKKyAgICAgICAgaWYgKGdldE9wZXJhdGlu
Z0RhdGVXaW5kb3dTdGF0ZW1lbnQuYmluZEludCgxLCBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcg
LSAxKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IGdldE9wZXJhdGluZ0RhdGVXaW5kb3dT
dGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMgZ2V0T3BlcmF0
aW5nRGF0ZVdpbmRvd1N0YXRlbWVudCBmYWlsZWQgd2l0aCBlcnJvciBtZXNzYWdlOiAle3ByaXZh
dGV9cy4gVGhlIGVycm9yIGNvdWxkIGJlIGluIHRoZSBjYWxscyB0byBiaW5kKCkgb3Igc3RlcCgp
LiIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAg
bV9sb25nV2luZG93T3BlcmF0aW5nRGF0ZSA9IE9wZXJhdGluZ0RhdGUoZ2V0T3BlcmF0aW5nRGF0
ZVdpbmRvd1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCksIGdldE9wZXJhdGluZ0RhdGVXaW5kb3dT
dGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDEpLCBnZXRPcGVyYXRpbmdEYXRlV2luZG93U3RhdGVtZW50
LmdldENvbHVtbkludCgyKSk7CisgICAgfQogfQogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgp
CkBAIC0yODY5LDEzICsyODkwLDE0IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1lIG1vc3RSZWNlCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICB1bnNpZ25lZCBvcGVyYXRpbmdEYXRl
c1dpbmRvd0luRGF5cyA9IDA7CiAgICAgc3dpdGNoIChvcGVyYXRpbmdEYXRlc1dpbmRvdykgewog
ICAgIGNhc2UgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6Okxvbmc6Ci0gICAgICAgIG9wZXJhdGluZ0Rh
dGVzV2luZG93SW5EYXlzID0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nOworICAgICAgICBpZiAo
bV9sb25nV2luZG93T3BlcmF0aW5nRGF0ZSAmJiBPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUo
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUpIDwgKm1fbG9uZ1dpbmRvd09wZXJhdGluZ0Rh
dGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBP
cGVyYXRpbmdEYXRlc1dpbmRvdzo6U2hvcnQ6Ci0gICAgICAgIG9wZXJhdGluZ0RhdGVzV2luZG93
SW5EYXlzID0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dTaG9ydDsKKyAgICAgICAgaWYgKG1fc2hvcnRX
aW5kb3dPcGVyYXRpbmdEYXRlICYmIE9wZXJhdGluZ0RhdGU6OmZyb21XYWxsVGltZShtb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uVGltZSkgPCAqbV9zaG9ydFdpbmRvd09wZXJhdGluZ0RhdGUpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBPcGVyYXRp
bmdEYXRlc1dpbmRvdzo6Rm9yTGl2ZU9uVGVzdGluZzoKICAgICAgICAgcmV0dXJuIFdhbGxUaW1l
Ojpub3coKSA+IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lICsgb3BlcmF0aW5nVGltZVdp
bmRvd0ZvckxpdmVPblRlc3Rpbmc7CkBAIC0yODgzLDExICsyOTA1LDYgQEAgYm9vbCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQoV2FsbFRp
bWUgbW9zdFJlY2UKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgaWYgKG1fb3Bl
cmF0aW5nRGF0ZXNTaXplID49IG9wZXJhdGluZ0RhdGVzV2luZG93SW5EYXlzKSB7Ci0gICAgICAg
IGlmIChPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
blRpbWUpIDwgbV9sZWFzdFJlY2VudE9wZXJhdGluZ0RhdGUpCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KICAgICAvLyBJZiB3ZSBkb24ndCBtZWV0IHRoZSByZWFsIGNyaXRlcmlh
IGZvciBhbiBleHBpcmVkIHN0YXRpc3RpYywgY2hlY2sgdGhlIHVzZXIgc2V0dGluZyBmb3IgYSB0
aWdodGVyIHJlc3RyaWN0aW9uIChtYWlubHkgZm9yIHRlc3RpbmcpLgogICAgIGlmICh0aGlzLT5w
YXJhbWV0ZXJzKCkudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbikgewogICAgICAgICBpZiAoV2Fs
bFRpbWU6Om5vdygpID4gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgKyB0aGlzLT5wYXJh
bWV0ZXJzKCkudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbi52YWx1ZSgpKQpAQCAtMjg5NiwxMSAr
MjkxMywxMSBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNT
dGF0aXN0aWNzRXhwaXJlZChXYWxsVGltZSBtb3N0UmVjZQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5zZXJ0RXhwaXJl
ZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgYm9v
bCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRh
UmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBkb21haW4sIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3Nl
ZCwgYm9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29r
aWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkKIHsKICAgICAvLyBQb3B1bGF0ZSB0aGUg
T3BlcmF0aW5nIERhdGVzIHRhYmxlIHdpdGggZW5vdWdoIGRheXMgdG8gcmVxdWlyZSBwcnVuaW5n
LgogICAgIGRvdWJsZSBkYXlzQWdvSW5TZWNvbmRzID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAxOyBpIDw9IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZzsgaSsrKSB7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8PSBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQ7IGkrKykgewogICAg
ICAgICBkb3VibGUgZGF5c1RvU3VidHJhY3QgPSBTZWNvbmRzOjpmcm9tSG91cnMoMjQgKiBpKS52
YWx1ZSgpOwogICAgICAgICBkYXlzQWdvSW5TZWNvbmRzID0gV2FsbFRpbWU6Om5vdygpLnNlY29u
ZHNTaW5jZUVwb2NoKCkudmFsdWUoKSAtIGRheXNUb1N1YnRyYWN0OwogICAgICAgICBhdXRvIGRh
dGVUb0luc2VydCA9IE9wZXJhdGluZ0RhdGU6OmZyb21XYWxsVGltZShXYWxsVGltZTo6ZnJvbVJh
d1NlY29uZHMoZGF5c0Fnb0luU2Vjb25kcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCA0Y2E5NDcwOTRkOTU0Y2IzYzE4NDg3
ZWM2YzY3NjJmY2FiOTQ4Yjk3Li4yYjQ4Njk5ZTNlZTIxMzRkZTlmYjMzZGQ3ZjNjNzM1MmU5ZmVk
ZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICBWZWN0b3I8UmVnaXN0cmFi
bGVEb21haW4+IGFsbERvbWFpbnMoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGRvbWFpbklERXhp
c3RzSW5EYXRhYmFzZShpbnQpOwogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBjaGVja0Zv
ck1pc3NpbmdUYWJsZXNJblNjaGVtYSgpOwotICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3Rp
Y0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhc1VzZXJJbnRlcmFj
dGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlz
UHJldmFsZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JU
ZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRp
bmdEYXlzUGFzc2VkLCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZv
ckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KSBvdmVycmlkZTsKICAg
ICB2b2lkIGludGVycnVwdCgpOwogCiAgICAgLy8gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudC4K
QEAgLTI5Miw3ICsyOTIsOCBAQCBwcml2YXRlOgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lv
bklEOwogICAgIGJvb2wgbV9pc05ld1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZUZpbGUg
eyBmYWxzZSB9OwogICAgIHVuc2lnbmVkIG1fb3BlcmF0aW5nRGF0ZXNTaXplIHsgMCB9OwotICAg
IE9wZXJhdGluZ0RhdGUgbV9sZWFzdFJlY2VudE9wZXJhdGluZ0RhdGU7CisgICAgT3B0aW9uYWw8
T3BlcmF0aW5nRGF0ZT4gbV9sb25nV2luZG93T3BlcmF0aW5nRGF0ZTsKKyAgICBPcHRpb25hbDxP
cGVyYXRpbmdEYXRlPiBtX3Nob3J0V2luZG93T3BlcmF0aW5nRGF0ZTsKICAgICBPcGVyYXRpbmdE
YXRlIG1fbW9zdFJlY2VudE9wZXJhdGluZ0RhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDgyMzFhZTRiNzU4N2U4
ZWY4OGE5NTUzNTMyNWJmZmJkMGFmMmQ4Y2UuLjQ1YzUzZjhhZTgzODY5ZDdkMDUzZWRmYWU3YTI3
ODhkNjE3ODRmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuY3BwCkBAIC0xMTM3LDExICsxMTM3LDExIEBAIGJvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdGF0aXN0aWNzRXhwaXJlZChjb25zdCBSZXNvdXJj
ZUxvYWRTCiAgICAgcmV0dXJuIGhhc1N0YXRpc3RpY3NFeHBpcmVkKHJlc291cmNlU3RhdGlzdGlj
Lm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBvcGVyYXRpbmdEYXRlc1dpbmRvdyk7CiB9
CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjppbnNlcnRFeHBpcmVk
U3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBib29s
IGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsLCBib29sIGlzUHJldmFsZW50KQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW4sIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwg
Ym9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVE
YXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkKIHsKICAgICAvLyBQb3B1bGF0ZSB0aGUgT3Bl
cmF0aW5nIERhdGVzIHRhYmxlIHdpdGggZW5vdWdoIGRheXMgdG8gcmVxdWlyZSBwcnVuaW5nLgog
ICAgIGRvdWJsZSBkYXlzQWdvSW5TZWNvbmRzID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAx
OyBpIDw9IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZzsgaSsrKSB7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8PSBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQ7IGkrKykgewogICAgICAg
ICBkb3VibGUgZGF5c1RvU3VidHJhY3QgPSBTZWNvbmRzOjpmcm9tSG91cnMoMjQgKiBpKS52YWx1
ZSgpOwogICAgICAgICBkYXlzQWdvSW5TZWNvbmRzID0gV2FsbFRpbWU6Om5vdygpLnNlY29uZHNT
aW5jZUVwb2NoKCkudmFsdWUoKSAtIGRheXNUb1N1YnRyYWN0OwogICAgICAgICBhdXRvIGRhdGVU
b0luc2VydCA9IE9wZXJhdGluZ0RhdGU6OmZyb21XYWxsVGltZShXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoZGF5c0Fnb0luU2Vjb25kcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZS5oCmluZGV4IGZkMWNmZmIwOTExZTkyM2UxZGE0OGU3MGUwZDMz
MDBjZDg2ZWE4NjkuLmQ1NjRkZWQ4N2JjMmM5ZjQyOGMyYTcxYWUwOGFmOTJlYTUwMDA4YmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAg
LTEwNiw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYsIFNlY29uZHMpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlRGF0YUZv
ckRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIG92ZXJyaWRlOwogICAgIFZlY3RvcjxS
ZWdpc3RyYWJsZURvbWFpbj4gYWxsRG9tYWlucygpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgaW5z
ZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBi
b29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURh
dGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGluc2VydEV4
cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5zaWdu
ZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwg
Ym9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFs
ZW50KSBvdmVycmlkZTsKIAogICAgIC8vIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgaXMgbm90
IGltcGxlbWVudGVkIGluIHRoZSBJVFAgbWVtb3J5IHN0b3JlLgogICAgIHZvaWQgaW5zZXJ0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpIG92ZXJyaWRlIHsgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCA1MjYwZWM5NzkwMGI4
YjFjNmIxOWY4YzI3Y2EwMjE5ODI5OTliMDQ3Li43NWI0YzM2YmMzN2E5YWE2Y2VhMzY5MGI2ZDUy
MzY0ZDMzMDQ2NTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CkBAIC0yMDEsNyArMjAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbmNsdWRlVG9k
YXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJPcGVyYXRpbmdEYXRlcygpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzU3RhdGlzdGljc0V4
cGlyZWQoV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUsIE9wZXJhdGluZ0Rh
dGVzV2luZG93KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGluc2VydEV4cGlyZWRTdGF0
aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBoYXNVc2VySW50
ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9v
bCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGlu
Zyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5
c1Bhc3NlZCwgYm9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxC
dXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCkgPSAwOwogICAgIAogICAgIC8vIFByaXZhdGUgQ2xp
Y2sgTWVhc3VyZW1lbnQuCiAgICAgdmlydHVhbCB2b2lkIGluc2VydFByaXZhdGVDbGlja01lYXN1
cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25UeXBlKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDAxMDk4N2VmNDRjODU0Zjc3MmIwMjRhMDM5
N2Y5MzMyZDNjZjI5NTUuLmQ1MzgxNGZhYjM0MjJjZmEwOTJiZDJmMTM2M2E4YzY3ZmY0NWI0Yzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBA
IC0xNDY0LDEzICsxNDY0LDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZXN1bWUoKQogICAgICAgICBzdXNwZW5kZWRTdGF0ZUNoYW5nZUNvbmRpdGlvbi5ub3RpZnlP
bmUoKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omluc2VydEV4
cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4s
IGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2ll
RGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFk
VXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgcG9z
dFRhc2soW3RoaXMsIGRvbWFpbiA9IGRvbWFpbi5pc29sYXRlZENvcHkoKSwgaGFkVXNlckludGVy
YWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVu
dCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlzb2xhdGVkQ29weSgp
LCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hl
ZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAg
IGlmIChtX3N0YXRpc3RpY3NTdG9yZSkKLSAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5p
bnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhXVEZNb3ZlKGRvbWFpbiksIGhhZFVzZXJJ
bnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2
YWxlbnQpOworICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmluc2VydEV4cGlyZWRTdGF0
aXN0aWNGb3JUZXN0aW5nKFdURk1vdmUoZG9tYWluKSwgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFz
c2VkLCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJl
bW92YWwsIGlzUHJldmFsZW50KTsKICAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgKaW5kZXggZTY3ZmFhYWNjODU2NzhiM2JmM2EzYTUxYWMzMWRjYzc4
NTIwZWJlYS4uZDExNDYyNTc5MzMwMmM4Nzg1Nzg4ODRjNzI2YjU5NzY4ZTAwNWIyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMzA0LDcgKzMw
NCw3IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAgICAgc3RhdGljIHZvaWQgcmVzdW1lKCk7
CiAgICAgCiAgICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFcGhlbWVy
YWwgPT0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6Olllczsg
fTsKLSAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRG
b3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdE
YXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFs
bEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogCiAgICAgLy8gUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudC4KICAgICB2
b2lkIGluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXgg
NjllNzFlZjE4MmIwMzMzMGNlYWEwMDg0NDU2OTA4MmY4NDQyNWUwMy4uMGVhNWZhZmE2N2U5YTRk
MWIxZTRlNTYyZGUxNzYyMWUxYTcwMjNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTk1MCwxMSArOTUwLDExIEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3M6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjppbnNlcnRF
eHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29s
IGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgdW5zaWduZWQg
bnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9v
bCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtT
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5pbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhkb21haW4sIGhh
ZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwg
aXNQcmV2YWxlbnQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MtPmluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGRv
bWFpbiwgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBoYWRVc2VySW50ZXJhY3Rpb24sIGlz
U2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50LCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBhNGI1MjcwMjljZGY2ZTk4MWU1OGYzOTUxOTdmNTRm
ZjE5ZDRjMzNmLi4wODMyMmI0MjcyMGRmODI3ZWI1ZTNhMDM4Y2YxMzgxMWNjYjY3ZDc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNDMs
NyArMjQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGRvbWFpbklERXhpc3RzSW5EYXRhYmFzZShQQUw6OlNlc3Npb25J
RCwgaW50IGRvbWFpbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2
b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4xLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4yLCBTZWNvbmRzIGxhc3RTZWVuLCBib29s
IGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBi
b29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxl
bnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKLSAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaGFkVXNlckludGVyYWN0aW9u
LCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2
YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBpbnNlcnRFeHBp
cmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFkVXNl
ckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWws
IGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQs
IFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXROb3Rp
ZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKFBBTDo6U2Vzc2lvbklELCBib29sIHZh
bHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0SXNSdW5uaW5n
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3QoUEFMOjpTZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1NTVhNDQwYzMw
NTQ3N2RlM2Q0YjUwODU1ZDQ5OWNhYjM0YzEyZjIwLi5jMzQwYmVmYzBmMGZmYzY1ZWVkOGUxODFj
YzY5NmU3ODhjYTMwZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTkyLDcgKzkyLDcgQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEFnZUNhcEZvckNs
aWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25k
cz4gc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluLCBTZWNv
bmRzIHNlY29uZHMpIC0+ICgpIEFzeW5jCiAgICAgTWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3Vy
Y2VEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluMSwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4yLCBTZWNvbmRzIGxhc3RTZWVu
LCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0
aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQ
cmV2YWxlbnQsIHVpbnQ2NF90IGRhdGFSZWNvcmRzUmVtb3ZlZCkgLT4gKCkgQXN5bmMKLSAgICBJ
bnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluLCBib29sIGhhZFVzZXJJ
bnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBi
b29sIGlzUHJldmFsZW50KSAtPiAoKSBBc3luYworICAgIEluc2VydEV4cGlyZWRTdGF0aXN0aWNG
b3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gcmVzb3VyY2VEb21haW4sIHVpbnQ2NF90IG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3Nl
ZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29r
aWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkgLT4gKCkgQXN5bmMKICAgICBTZXRQcmV2
YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFNldFByZXZhbGVudFJl
c291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCiAgICAgSXNSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRXBoZW1lcmFsKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJv
b2wgaXNFcGhlbWVyYWwpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCBlNzFhNjRkYzU4MTU5YmI5
MGU3Y2Y1M2FhMjliNGViZWViZTE2NTAyLi5kOTIyODdkMzNkMDUyMWNiZTUyZTc1YWY5MmNjMzU0
MTY1NTZlMGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTIxNCwxMCArMjE0LDEwIEBAIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvCiAjZW5kaWYKIH0KIAotdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3Jl
UmVmLCBXS1N0cmluZ1JlZiBob3N0LCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1Nj
aGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCB2b2lk
KiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWNGdW5j
dGlvbiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc0V4cGlyZWRTdGF0aXN0aWMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwg
V0tTdHJpbmdSZWYgaG9zdCwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBi
b29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURh
dGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWNGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9J
bXBsKGRhdGFTdG9yZVJlZiktPmluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFVSTChV
UkwoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0cmluZygpKSwgaGFkVXNlckludGVyYWN0aW9u
LCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCwgW2Nv
bnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3Jl
UmVmKS0+aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6
OnRvSW1wbChob3N0KS0+c3RyaW5nKCkpLCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGhh
ZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwg
aXNQcmV2YWxlbnQsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0gewogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihjb250ZXh0KTsKICAgICB9KTsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4IGZk
NDE3NmQ0ZjJlMmUwNGQ2NDM0OGM3YTk5YjE4YTBiZWI5ZmFkZjcuLmQ1YzllZWUyYTQwNGZkM2Ni
NDdjOWY4NzczNWMzOTc2ODFkMjkzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC03NSw3ICs3NSw3IEBAIFdL
X0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0U2VlbihXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWNGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsK
IFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNZXJnZVN0YXRp
c3RpYyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0
LCBXS1N0cmluZ1JlZiB0b3BGcmFtZURvbWFpbjEsIFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWlu
MiwgZG91YmxlIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgZG91YmxlIG1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFs
ZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCB2
b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWNG
dW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpY0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNv
bnRleHQpOwotV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0V4
cGlyZWRTdGF0aXN0aWMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJp
bmdSZWYgaG9zdCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JB
bGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWNGdW5jdGlvbiBjb21w
bGV0aW9uSGFuZGxlcik7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQs
IGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2ll
RGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljRnVuY3Rpb24gY29tcGxldGlvbkhhbmRs
ZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1ByZXZhbGVu
dFJlc291cmNlRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1
ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZUZ1bmN0aW9uKSh2b2lk
KiBmdW5jdGlvbkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggYTJiZWVkODM1YTM0ZmJlMTk2
MDM4ZmJmZWE4ZjdhMmJmMjQ2OThjZC4uMjMyYzY2MDljYzI1Njg3NTgxNGI3NmM2ODM2Y2FkZmZk
N2VmNzg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC03MDAsOSArNzAwLDkgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb24KICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpNZXJnZVN0YXRpc3RpY0ZvclRlc3Rpbmcoc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwg
dG9wRnJhbWVEb21haW4xLCB0b3BGcmFtZURvbWFpbjIsIGxhc3RTZWVuLCBoYWRVc2VySW50ZXJh
Y3Rpb24sIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGlzR3JhbmRmYXRoZXJlZCwgaXNQcmV2
YWxlbnQsIGlzVmVyeVByZXZhbGVudCwgZGF0YVJlY29yZHNSZW1vdmVkKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omluc2VydEV4
cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBib29sIGhhZFVzZXJJbnRlcmFjdGlv
biwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJl
dmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291
cmNlRG9tYWluLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFk
VXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpJbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhzZXNzaW9uSUQsIHJlc291
cmNlRG9tYWluLCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2ll
RGF0YVJlbW92YWwsIGlzUHJldmFsZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okluc2VydEV4
cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIG51bWJl
ck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwgaGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZv
ckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpjbGVhclByZXZhbGVu
dFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHJlc291cmNlRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IGVmOTIxMWQ5YzAxZDY4YzUyMzkwYzM0MzVmM2ExNDdl
OTdlZGVmOWYuLmRjYzFkN2ZjNTNlMDNiMzQ5YTE2MWM5NjA2ODg5YTM4YmZhYjM5YjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCkBAIC0xNTAsNyArMTUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZG9tYWluSURFeGlz
dHNJbkRhdGFiYXNlKFBBTDo6U2Vzc2lvbklELCBpbnQgZG9tYWluSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgc3RhdGlzdGljc0RhdGFiYXNlSGFzQWxsVGFi
bGVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICB2b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4xLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4yLCBTZWNvbmRzIGxhc3RTZWVuLCBi
b29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9u
LCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2
YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaGFkVXNlckludGVyYWN0
aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQ
cmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBpbnNlcnRF
eHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQsIGJvb2wgaGFk
VXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25JRCwgT3B0aW9u
YWw8U2Vjb25kcz4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRD
YWNoZU1heEFnZUNhcChQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDhiNDMzZTkxMWE4MjVkMzVi
MjUwNjViMjE4Mjk1MjZkODYzYWM3NDEuLjgyNjllN2Y4ZGZmZmJiYmZiYWU1ZTk5N2RkYWY0YmFj
NjllZjE0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNTUxLDcgKzE1NTEsNyBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCwg
Y29uc3QgVVJMJiB0b3BGcgogICAgIG5ldHdvcmtQcm9jZXNzKCkubWVyZ2VTdGF0aXN0aWNGb3JU
ZXN0aW5nKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHRvcEZyYW1lVXJsMSB9LCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB7IHRvcEZyYW1lVXJsMiB9LCBsYXN0U2VlbiwgaGFkVXNlckludGVyYWN0
aW9uLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBpc0dyYW5kZmF0aGVyZWQsIGlzUHJldmFs
ZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3ZlZCwgW2NhbGxiYWNrQWdncmVn
YXRvcl0geyB9KTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjppbnNlcnRFeHBpcmVkU3Rh
dGlzdGljRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24s
IGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZh
bGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25z
dCBVUkwmIHVybCwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhh
ZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1v
dmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHVybC5wcm90b2NvbElzQWJvdXQoKSB8fCB1cmwuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xNTYwLDcgKzE1NjAs
NyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKGNvbnN0IFVSTCYgdXJsLCBib29sIGhhZAogCiAgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiAKLSAgICBuZXR3b3JrUHJvY2VzcygpLmluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBoYWRV
c2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGlz
UHJldmFsZW50LCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgIG5ldHdvcmtQcm9jZXNz
KCkuaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcobV9zZXNzaW9uSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHsgdXJsIH0sIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCwg
aGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFs
LCBpc1ByZXZhbGVudCwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKIH0KIAogdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJv
b2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAppbmRleCAzZjY2Njg0OTk1YWI2NzVjY2Y1NWUxMWFlYjhlMjIwODliZDM3NDUw
Li41YTdmNTc3YzRhZTQwODhlNTJkNDcyYWY1ZTg5MDM2OGRjNTc4NGZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
CkBAIC0xOTcsNyArMTk3LDcgQEAgcHVibGljOgogICAgIHZvaWQgZG9tYWluSURFeGlzdHNJbkRh
dGFiYXNlKGludCBkb21haW5JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAg
ICAgdm9pZCBzdGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJsZXMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3Qg
VVJMJiwgY29uc3QgVVJMJiB0b3BGcmFtZVVybDEsIGNvbnN0IFVSTCYgdG9wRnJhbWVVcmwyLCBT
ZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVu
dCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0
aWNGb3JUZXN0aW5nKGNvbnN0IFVSTCYsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlz
U2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlz
dGljRm9yVGVzdGluZyhjb25zdCBVUkwmLCB1bnNpZ25lZCBudW1iZXJPZk9wZXJhdGluZ0RheXNQ
YXNzZWQsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0
Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2Fu
bmVkKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRJc1J1
bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVzdChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJ1bmVFbnRyaWVzRG93blRvKHNpemVfdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBjNzkyYWE2Nzc5OTMzYjI5NDM0YjQ1ZjRlZWRmNTc5YThhNDdk
YjlhLi5kMGRlYTQ0ZWRlOGMwNmZjYjVjOGU4NjA4YzZkYzg5Yzk5ZjE1MGYyIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMjEtMDItMjYgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgTm9uLWNvb2tpZSB3ZWJzaXRlIGRhdGEgbm90IGRlbGV0ZWQgYWZ0ZXIgNyBkYXlzIG9mIGJy
b3dzZXIgdXNlIHdpdGhvdXQgdXNlciBpbnRlcmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjQ4CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS83NDYxMjU4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtIGFuZCBpbmZv
cm1hbGx5IGJ5IEthdGUgQ2hlbmV5LgorCisgICAgICAgIEEgbmV3IG51bWJlck9mT3BlcmF0aW5n
RGF5c1Bhc3NlZCBwYXJhbWV0ZXIgd2FzIGFkZGVkIHRvCisgICAgICAgIHRlc3RSdW5uZXIuc2V0
U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoKSB0byBjb250cm9sIHRoZSBleGFjdAorICAgICAg
ICBudW1iZXIgb2Ygb3BlcmF0aW5nIGRheXMgcGFzc2VkIHNpbmNlIHVzZXIgaW50ZXJhY3Rpb24u
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NF
eHBpcmVkU3RhdGlzdGljKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NFeHBp
cmVkU3RhdGlzdGljKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZSk6CisKIDIwMjEtMDItMjYgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtidWlsZC53ZWJraXQub3JnXSBTdG9wIHVzaW5nIGRlcHJlY2F0ZWQgYnVp
bGRib3Quc3RhdHVzLmJ1aWxkZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDNjZWZh
ODYzZjU3NzQ5NDMxMzkwNzVmNGMwNjAzYjk1ZmE4NTczNDkuLmU3MjIxOGI5ZDQwZWNiNjIxODIx
OTJmZmI3NDRjMWNhZjEwNzE4YzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMjk0
LDcgKzI5NCw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB1bmRlZmluZWQgc2V0U3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKERPTVN0cmluZyBob3N0TmFtZSwg
b2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB1bmRlZmluZWQgc2V0U3RhdGlzdGljc0xh
c3RTZWVuKERPTVN0cmluZyBob3N0TmFtZSwgZG91YmxlIHNlY29uZHMsIG9iamVjdCBjb21wbGV0
aW9uSGFuZGxlcik7CiAgICAgdW5kZWZpbmVkIHNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhE
T01TdHJpbmcgaG9zdE5hbWUsIERPTVN0cmluZyB0b3BGcmFtZURvbWFpbjEsIERPTVN0cmluZyB0
b3BGcmFtZURvbWFpbjIsIGRvdWJsZSBsYXN0U2VlbiwgYm9vbGVhbiBoYWRVc2VySW50ZXJhY3Rp
b24sIGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sZWFuIGlzR3JhbmRmYXRo
ZXJlZCwgYm9vbGVhbiBpc1ByZXZhbGVudCwgYm9vbGVhbiBpc1ZlcnlQcmV2YWxlbnQsIHVuc2ln
bmVkIGxvbmcgZGF0YVJlY29yZHNSZW1vdmVkLCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOwot
ICAgIHVuZGVmaW5lZCBzZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhET01TdHJpbmcgaG9z
dE5hbWUsIGJvb2xlYW4gaGFkVXNlckludGVyYWN0aW9uLCBib29sZWFuIGlzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2xlYW4gaXNQcmV2YWxlbnQsIG9iamVjdCBjb21w
bGV0aW9uSGFuZGxlcik7CisgICAgdW5kZWZpbmVkIHNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlz
dGljKERPTVN0cmluZyBob3N0TmFtZSwgdW5zaWduZWQgbG9uZyBudW1iZXJPZk9wZXJhdGluZ0Rh
eXNQYXNzZWQsIGJvb2xlYW4gaGFkVXNlckludGVyYWN0aW9uLCBib29sZWFuIGlzU2NoZWR1bGVk
Rm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2xlYW4gaXNQcmV2YWxlbnQsIG9iamVjdCBj
b21wbGV0aW9uSGFuZGxlcik7CiAgICAgdW5kZWZpbmVkIHNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZShET01TdHJpbmcgaG9zdE5hbWUsIGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjb21wbGV0
aW9uSGFuZGxlcik7CiAgICAgdW5kZWZpbmVkIHNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVz
b3VyY2UoRE9NU3RyaW5nIGhvc3ROYW1lLCBib29sZWFuIHZhbHVlLCBvYmplY3QgY29tcGxldGlv
bkhhbmRsZXIpOwogICAgIGJvb2xlYW4gaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoRE9N
U3RyaW5nIGhvc3ROYW1lKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDk0OWVlZThmMjU2YWU2M2Y2MzA0NDQzNmE2
OTdiY2EwMWRjMGVjOGYuLjA5MjZkY2EzNTc4ZTIzMThlNmE2YTAzYzVkN2UwYmU3MWZjNzNlMTkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcApAQCAtMTIyOCwxMiArMTIyOCwxMyBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRp
c3RpY3NDYWxsRGlkU2V0TWVyZ2VTdGF0aXN0aWNDYWxsYmFjaygpCiAgICAgY2FsbFRlc3RSdW5u
ZXJDYWxsYmFjayhTZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWNDYWxsYmFja0lEKTsKIH0KIAot
dm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhKU1N0cmluZ1Jl
ZiBob3N0TmFtZSwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JB
bGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgSlNWYWx1ZVJlZiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0
aXN0aWMoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0aW5nRGF5
c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxC
dXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgSlNWYWx1ZVJlZiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhTZXRTdGF0aXN0aWNz
RXhwaXJlZFN0YXRpc3RpY0NhbGxiYWNrSUQsIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHBv
c3RNZXNzYWdlKCJTZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyIsIGNyZWF0ZVdLRGljdGlv
bmFyeSh7CiAgICAgICAgIHsgIkhvc3ROYW1lIiwgdG9XSyhob3N0TmFtZSkgfSwKKyAgICAgICAg
eyAiTnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkIiwgYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShu
dW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQpKSB9LAogICAgICAgICB7ICJIYWRVc2VySW50ZXJh
Y3Rpb24iLCBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShoYWRVc2VySW50ZXJhY3Rpb24pKSB9LAog
ICAgICAgICB7ICJJc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsIiwgYWRvcHRX
SyhXS0Jvb2xlYW5DcmVhdGUoaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCkp
IH0sCiAgICAgICAgIHsgIklzUHJldmFsZW50IiwgYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNQ
cmV2YWxlbnQpKSB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCmluZGV4IDJmM2M1MjllZDRkYTZkN2Q4ZDgxYmFiODRhZDY0NzI2YTJj
NGI4ZDMuLmNhZjdkN2ZhY2YyYmI1YjZhMzA3MDMwNzcxOTU3NTUyZjBhMGUxZTIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBA
IC0zODYsNyArMzg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRM
YXN0U2VlbkNhbGxiYWNrKCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMo
SlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluMSwgSlNTdHJp
bmdSZWYgdG9wRnJhbWVEb21haW4yLCBkb3VibGUgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVy
YWN0aW9uLCBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0
aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBk
YXRhUmVjb3Jkc1JlbW92ZWQsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZv
aWQgc3RhdGlzdGljc0NhbGxEaWRTZXRNZXJnZVN0YXRpc3RpY0NhbGxiYWNrKCk7Ci0gICAgdm9p
ZCBzZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9v
bCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRh
UmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7
CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhKU1N0cmluZ1JlZiBob3N0
TmFtZSwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJ
bnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBi
b29sIGlzUHJldmFsZW50LCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lk
IHN0YXRpc3RpY3NDYWxsRGlkU2V0RXhwaXJlZFN0YXRpc3RpY0NhbGxiYWNrKCk7CiAgICAgdm9p
ZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJv
b2wgdmFsdWUsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlz
dGljc0NhbGxEaWRTZXRQcmV2YWxlbnRSZXNvdXJjZUNhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGU1MmFlMTI4YTVjYzAyN2QwNGJjODIx
YmQwMGQzOWZiNjIyM2Q4NWEuLjZkNzNhYmMzYjZkYTMzMWNmNzEyYjcwYjM4NGQwZDE4Y2MzOTJk
ZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zMDc5
LDEwICszMDc5LDEwIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NNZXJnZVN0
YXRpc3RpYyhXS1N0cmluZ1JlZiBob3N0LCBXS1N0cmluZ1JlZiB0CiAgICAgbV9jdXJyZW50SW52
b2NhdGlvbi0+ZGlkTWVyZ2VTdGF0aXN0aWMoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6
c2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBoYWRV
c2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3Zh
bCwgYm9vbCBpc1ByZXZhbGVudCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NF
eHBpcmVkU3RhdGlzdGljKFdLU3RyaW5nUmVmIGhvc3QsIHVuc2lnbmVkIG51bWJlck9mT3BlcmF0
aW5nRGF5c1Bhc3NlZCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRG
b3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkKIHsKICAgICBSZXNv
dXJjZVN0YXRpc3RpY3NDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7Ci0gICAgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMod2Vic2l0ZURhdGFTdG9y
ZSgpLCBob3N0LCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2ll
RGF0YVJlbW92YWwsIGlzUHJldmFsZW50LCAmY29udGV4dCwgcmVzb3VyY2VTdGF0aXN0aWNzVm9p
ZFJlc3VsdENhbGxiYWNrKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzRXhw
aXJlZFN0YXRpc3RpYyh3ZWJzaXRlRGF0YVN0b3JlKCksIGhvc3QsIG51bWJlck9mT3BlcmF0aW5n
RGF5c1Bhc3NlZCwgaGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tp
ZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCwgJmNvbnRleHQsIHJlc291cmNlU3RhdGlzdGljc1Zv
aWRSZXN1bHRDYWxsYmFjayk7CiAgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQp
OwogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNldEV4cGlyZWRTdGF0aXN0aWMoKTsKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCA5ZTVhYTc5Yzk4ZTMw
MDc3ODU4MGY2YTE4OGNhYzZmYWU3NDZiMTcxLi40MzY0ZDNiZDQxNTM1MzEzM2M0OTRmZjdhYTVm
MTU5NDE0ZDBiNjJjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBA
IC0yMTQsNyArMjE0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ByZXZhbGVu
dFJlc291cmNlRm9yRGVidWdNb2RlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NMYXN0U2VlbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgZG91YmxlIHNlY29uZHMp
OwogICAgIHZvaWQgc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKFdLU3RyaW5nUmVmIGhvc3Qs
IFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluMSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVEb21haW4y
LCBkb3VibGUgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUgbW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxl
bnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCBpbnQgZGF0YVJlY29yZHNSZW1vdmVkKTsKLSAgICB2
b2lkIHNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wg
aGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJl
bW92YWwsIGJvb2wgaXNQcmV2YWxlbnQpOworICAgIHZvaWQgc2V0U3RhdGlzdGljc0V4cGlyZWRT
dGF0aXN0aWMoV0tTdHJpbmdSZWYgaG9zdCwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdEYXlz
UGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1
dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KTsKICAgICB2b2lkIHNldFN0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSk7
CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVmVyeVByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVm
IGhvc3ROYW1lLCBib29sIHZhbHVlKTsKICAgICBTdHJpbmcgZHVtcFJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXgg
YWVmODIzM2IwMzhjZjVhNDBlNjk5YWI3MzQ5ODEwYjY3MTc1ODBjZi4uMzVmMWZlNWNjNTc3ZWE3
ODRlZWVjNGY3Mjc3NWRhODJhMTRiNDA0OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAKQEAgLTY3NywxMCArNjc3LDExIEBAIHZvaWQgVGVzdEludm9jYXRpb246
OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VO
YW1lCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJT
ZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyIpKSB7CiAgICAgICAgIGF1dG8gbWVzc2FnZUJv
ZHlEaWN0aW9uYXJ5ID0gZGljdGlvbmFyeVZhbHVlKG1lc3NhZ2VCb2R5KTsKICAgICAgICAgYXV0
byBob3N0TmFtZSA9IHN0cmluZ1ZhbHVlKG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgIkhvc3ROYW1l
Iik7CisgICAgICAgIGF1dG8gbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkID0gdWludDY0VmFs
dWUobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCAiTnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkIik7
CiAgICAgICAgIGF1dG8gaGFkVXNlckludGVyYWN0aW9uID0gYm9vbGVhblZhbHVlKG1lc3NhZ2VC
b2R5RGljdGlvbmFyeSwgIkhhZFVzZXJJbnRlcmFjdGlvbiIpOwogICAgICAgICBhdXRvIGlzU2No
ZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwgPSBib29sZWFuVmFsdWUobWVzc2FnZUJv
ZHlEaWN0aW9uYXJ5LCAiSXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCIpOwog
ICAgICAgICBhdXRvIGlzUHJldmFsZW50ID0gYm9vbGVhblZhbHVlKG1lc3NhZ2VCb2R5RGljdGlv
bmFyeSwgIklzUHJldmFsZW50Iik7Ci0gICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5zZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhob3N0TmFtZSwgaGFkVXNlckludGVyYWN0
aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCk7
CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzRXhwaXJl
ZFN0YXRpc3RpYyhob3N0TmFtZSwgbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkLCBoYWRVc2Vy
SW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGlzUHJl
dmFsZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU1MzNmM2MxMWZiY2E2
YjE3ZjNlYjJkN2I4OWE3MTZjNmNhZTg5NTIuLmZjMGZiYTMwNDZjOTc3ZmE2MjRiYThlYjhhYmEw
YjZjYzM2OTQ0NzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMS0wMi0yNiAgSm9obiBXaWxh
bmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBOb24tY29va2llIHdlYnNpdGUg
ZGF0YSBub3QgZGVsZXRlZCBhZnRlciA3IGRheXMgb2YgYnJvd3NlciB1c2Ugd2l0aG91dCB1c2Vy
IGludGVyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjIyNDgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzc0NjEyNTg5PgorCisgICAgICAg
IFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0gYW5kIGluZm9ybWFsbHkgYnkgS2F0ZSBDaGVuZXku
CisKKyAgICAgICAgRXhpc3RpbmcgdGVzdCBjYXNlcyBub3cgbWFrZSB1c2Ugb2YgdGhlIG5ldyBu
dW1iZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQKKyAgICAgICAgcGFyYW1ldGVyIHRvIHRlc3RSdW5u
ZXIuc2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoKSB0byBjb250cm9sIHRoZSBleGFjdAor
ICAgICAgICBudW1iZXIgb2Ygb3BlcmF0aW5nIGRheXMgcGFzc2VkIHNpbmNlIHVzZXIgaW50ZXJh
Y3Rpb24uCisgICAgICAgIEEgbmV3IHRlc3QgY2FzZSBtYWtlcyBzdXJlIHdlYnNpdGUgZGF0YSBp
cyBub3QgZGVsZXRlZCBiZWxvdyB0aGUgdGhyZXNob2xkLgorCisgICAgICAgICogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMt
bm90LXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0aW9uLTYtZGF5cy1hZ28tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3Bl
cmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1ub3QtcmVtb3ZlZC13aXRoLXVzZXItaW50ZXJh
Y3Rpb24tNi1kYXlzLWFnby5odG1sOiBBZGRlZC4KKyAgICAgICAgICAgIFNldHMgbnVtYmVyT2ZP
cGVyYXRpbmdEYXlzUGFzc2VkIHRvIDYuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC13aXRo
LXVzZXItaW50ZXJhY3Rpb24tNy1kYXlzLWFnby1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRh
dGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLXN0YXRpc3RpY3Mtd2l0aC1uby11c2VyLWludGVy
YWN0aW9uLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLXdpdGgtdXNl
ci1pbnRlcmFjdGlvbi03LWRheXMtYWdvLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQt
Y29va2llcy1yZW1vdmVkLXN0YXRpc3RpY3Mtd2l0aC1uby11c2VyLWludGVyYWN0aW9uLmh0bWwu
CisgICAgICAgICAgICBTZXRzIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZCB0byA3LgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMt
YWxsLXdlYnNpdGUtZGF0YS1yZW1vdmVkLmh0bWw6CisgICAgICAgICAgICBTZXRzIG51bWJlck9m
T3BlcmF0aW5nRGF5c1Bhc3NlZCB0byAzMC4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4
cGVjdGF0aW9uczoKKyAgICAgICAgICAgIFVwZGF0ZWQgZXhpc3RpbmcgZXhwZWN0YXRpb24gd2l0
aCBuZXcgZmlsZSBuYW1lLgorCiAyMDIxLTAyLTI2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBbUGF5bWVudCBSZXF1ZXN0XSBsb2cgaWYgYHVwZGF0ZVdpdGhg
IGlzIG5vdCBjYWxsZWQgc3luY2hyb25vdXNseQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNv
b2tpZXMtbm90LXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0aW9uLTYtZGF5cy1hZ28tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29w
ZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtbm90LXJlbW92ZWQtd2l0aC11c2VyLWludGVy
YWN0aW9uLTYtZGF5cy1hZ28tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0ZWEzNDg1MTY1YTM0
ZTI1YTFmMzU2NjEwZWVjYWEyNGVlZjA1MTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1i
dXQtY29va2llcy1ub3QtcmVtb3ZlZC13aXRoLXVzZXItaW50ZXJhY3Rpb24tNi1kYXlzLWFnby1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNz
aW5nOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vz
c2luZzogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0JlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Np
bmc6IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBzdGF0aXN0aWNz
IHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIGV4aXN0LgorQmVmb3JlIHN0YXRp
c3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKK0FmdGVyIHN0YXRpc3Rp
Y3MgcHJvY2Vzc2luZzogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0FmdGVyIHN0YXRpc3RpY3Mg
cHJvY2Vzc2luZzogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIHN0YXRpc3RpY3Mg
cHJvY2Vzc2luZzogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgc3Rh
dGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgZG9lcyBleGlzdC4KK0FmdGVy
IHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJh
dGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtbm90LXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0
aW9uLTYtZGF5cy1hZ28uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLW5vdC1yZW1vdmVkLXdp
dGgtdXNlci1pbnRlcmFjdGlvbi02LWRheXMtYWdvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhjMjE4YmRk
N2MzOTNhYjA0OGU3MzY3Y2IyOTQzYWQ4ZTgyMDhmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMt
YWxsLWJ1dC1jb29raWVzLW5vdC1yZW1vdmVkLXdpdGgtdXNlci1pbnRlcmFjdGlvbi02LWRheXMt
YWdvLmh0bWwKQEAgLTAsMCArMSwyNjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4K
Kzxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8YnI+Cis8c2NyaXB0PgorICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisg
ICAgY29uc3QgaHR0cE9ubHlDb29raWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNv
bnN0IHNlcnZlclNpZGVDb29raWVOYW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29u
c3QgY2xpZW50U2lkZUNvb2tpZU5hbWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1
bmN0aW9uIHNvcnRTdHJpbmdBcnJheShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNl
KCk7CisgICAgICAgIGIgPSBiLnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBi
ID8gMSA6IGIgPiBhID8gLTEgOiAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVicmVh
a1RvT3V0cHV0KCkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImJyIik7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBhZGRPdXRwdXQobWVzc2FnZSkgeworICAgICAgICBsZXQgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmlubmVyVGV4
dCA9IG1lc3NhZ2U7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAg
IGxldCB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBsZXQgY29va2ll
cyA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgIGlmICghY29va2llcy5sZW5ndGgg
JiYgaXNBZnRlckRlbGV0aW9uKQorICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsgIk5v
IGNvb2tpZXMgZm91bmQuIik7CisgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7
CisgICAgICAgICAgICBzd2l0Y2ggKGNvb2tpZS5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2Fz
ZSBodHRwT25seUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBh
c3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikg
KyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogIiArIChpc0FmdGVyRGVsZXRpb24gPyAiICIgOiAi
IikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2ZXJTaWRlQ29va2llTmFtZToKKyAgICAgICAg
ICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0
aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBSZWd1
bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgY2xpZW50U2lkZUNvb2tpZU5hbWU6CisgICAgICAg
ICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxl
dGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogQ2xp
ZW50LXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGV0IHNvcnRlZFRlc3RQYXNzZWRNZXNz
YWdlcyA9IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnNvcnQoc29ydFN0cmluZ0FycmF5KTsK
KyAgICAgICAgZm9yIChsZXQgdGVzdFBhc3NlZE1lc3NhZ2Ugb2Ygc29ydGVkVGVzdFBhc3NlZE1l
c3NhZ2VzKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQodGVzdFBhc3NlZE1lc3NhZ2UpOworICAg
ICAgICB9CisgICAgfQorCisgICAgY29uc3QgZGJOYW1lID0gIlRlc3REYXRhYmFzZSI7CisKKyAg
ICBmdW5jdGlvbiBjcmVhdGVJREJEYXRhU3RvcmUoY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJl
cXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3QgY3JlYXRlIGlu
ZGV4ZWREQi4iKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfTsKKyAgICAg
ICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAg
ICAgbGV0IGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGxldCBvYmpTdG9y
ZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0Iiwge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsK
KyAgICAgICAgICAgIG9ialN0b3JlLmFkZCgidmFsdWUiKTsKKyAgICAgICAgICAgIGNhbGxiYWNr
KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBtYXhJbnRlcnZhbHMgPSAyMDsKKwor
ICAgIGxldCBpbnRlcnZhbENvdW50ZXJJREI7CisgICAgbGV0IGNoZWNrSURCQ2FsbGJhY2s7Cisg
ICAgbGV0IGNoZWNrSURCSW50ZXJ2YWxJRDsKKyAgICBsZXQgc2VtYXBob3JlSURCQ2hlY2sgPSBm
YWxzZTsKKyAgICBmdW5jdGlvbiBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhpc0FmdGVyRGVsZXRp
b24sIGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0OworICAgICAgICBpbnRlcnZhbENv
dW50ZXJJREIgPSAwOworICAgICAgICBjaGVja0lEQkNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAg
ICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0
aGVyZSBpcyBhIElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVy
dmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlE
QkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklE
QiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChj
aGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9y
ZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAg
fTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwg
Y2hlY2sgYWdhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMg
ZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBu
byBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sg
PSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1h
eEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURC
SW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlz
dGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hl
Y2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vz
c2luZzogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZp
bmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4gYmVjYXVzZSBkZWxldGlvbiBt
aWdodCBiZSBkZWxheWVkLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hl
Y2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGludGVydmFs
Q291bnRlckxvY2FsU3RvcmFnZTsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsK
KyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEOworICAgIGNvbnN0IGxvY2FsU3Rv
cmFnZU5hbWUgPSAidGVzdCI7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSAidmFsdWUi
OworICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwg
Y2FsbGJhY2spIHsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID0gMDsKKyAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAo
IWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMg
TG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0g
c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxD
b3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAg
ICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAg
ICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5h
bWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHBy
b2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VW
YWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJU
ZXN0KSkgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9y
YWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3Rv
cmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRP
dXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAi
ICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsg
IiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFj
aygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBMb2NhbFN0b3Jh
Z2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZh
bChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2Nh
bFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAg
bGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBM
b2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9l
cyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNr
TG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0
UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZh
bElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0
ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0
ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9
PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7
CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9CisgICAgfQorCisg
ICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAg
ICAvLyBXcml0ZSBjb29raWVzLgorICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3Vy
Y2VzL3NldC1odHRwLW9ubHktY29va2llLnBocD9jb29raWVOYW1lPSIgKyBodHRwT25seUNvb2tp
ZU5hbWUsIHsgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGF3YWl0IGZl
dGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0Q29va2llcy5jZ2kiLCB7IGhlYWRlcnM6IHsgIlNl
dC1Db29raWUiOiBzZXJ2ZXJTaWRlQ29va2llTmFtZSArICI9MTsgcGF0aD0vOyIgfSwgY3JlZGVu
dGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNsaWVu
dFNpZGVDb29raWVOYW1lICsgIj0xIjsKKworICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UpOwor
CisgICAgICAgIC8vIFdyaXRlIExvY2FsU3RvcmFnZQorICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0
SXRlbShsb2NhbFN0b3JhZ2VOYW1lLCBsb2NhbFN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIGNoZWNr
TG9jYWxTdG9yYWdlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgLy8g
V3JpdGUgSW5kZXhlZERCLgorICAgICAgICAgICAgY3JlYXRlSURCRGF0YVN0b3JlKGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7Cisg
ICAgICAgICAgICAgICAgICAgIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIHRl
c3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjaGVj
a1dlYnNpdGVEYXRhQW5kQ29udGludWUpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NQ
cm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
Y2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICBjaGVja0Nvb2tpZXModHJ1
ZSk7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKHRydWUsIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKHRydWUsIGZpbmlzaFRlc3QpOwor
ICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcmlnaW5VbmRlclRlc3QgID0gImh0dHA6
Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3Qgb3RoZXJPcmlnaW4gPSAiaHR0cDovL2xvY2Fs
aG9zdDo4MDAwIgorICAgIGNvbnN0IHRvcEZyYW1lT3JpZ2luID0gImh0dHA6Ly8xMjcuMC4wLjI6
ODAwMCI7CisgICAgY29uc3QgdGltZVN0YW1wID0gTWF0aC5yb3VuZCgobmV3IERhdGUoKSkuZ2V0
VGltZSgpIC8gMTAwMCk7CisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgaWYg
KCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihvcmlnaW5VbmRl
clRlc3QpKQorICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsgb3JpZ2luVW5kZXJUZXN0
ICsgIiBkb2Vzbid0IGhhdmUgdXNlciBpbnRlcmFjdGlvbiBhZnRlciBwcm9jZXNzaW5nLiIpOwor
ICAgICAgICByZXNldENvb2tpZXMoKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgLy8gRG8gbm90IHVzZSBzZXRFbmFibGVGZWF0dXJlIGhlcmUg
YmVjYXVzZSB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZWJzaXRlIGRhdGEgZGVsZXRpb24gaXMgbm90
IHNraXBwZWQKKyAgICAvLyBieSB0aGUgcHJlc2VuY2Ugb2YgcGFyYW1ldGVycygpLmlzUnVubmlu
Z1Rlc3QuCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRT
dGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKDM2MDApOworICAg
ICAgICAvLyBNZXJnZSBhIHN0YXRpc3RpYyB3aXRoIG5vIHVzZXIgaW50ZXJhY3Rpb24gdG8gY2hl
Y2sgdGhlIC0xIGNhc2UuCisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc01lcmdlU3Rh
dGlzdGljKG90aGVyT3JpZ2luLCB0b3BGcmFtZU9yaWdpbiwgIiIsIHRpbWVTdGFtcCwgZmFsc2Us
IC0xLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKHRy
dWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3Rp
Y3NFeHBpcmVkU3RhdGlzdGljKG9yaWdpblVuZGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgICAg
NiwgICAgIC8vIG51bWJlck9mT3BlcmF0aW5nRGF5c1Bhc3NlZAorICAgICAgICAgICAgICAgICAg
ICB0cnVlLCAgLy8gaGFzVXNlckludGVyYWN0aW9uCisgICAgICAgICAgICAgICAgICAgIGZhbHNl
LCAvLyBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLAorICAgICAgICAgICAg
ICAgICAgICBmYWxzZSwgLy8gaXNQcmV2YWxlbnQKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAg
IH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0
LWNvb2tpZXMtcmVtb3ZlZC1zdGF0aXN0aWNzLXdpdGgtbm8tdXNlci1pbnRlcmFjdGlvbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
b3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLXN0YXRpc3RpY3Mtd2l0aC1u
by11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjVhNWVhMjQxMDg1ZTRiNTExYTgxMGY4OTZhYzRlMzQ5OWE4NDc0MC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2ll
cy1yZW1vdmVkLXN0YXRpc3RpY3Mtd2l0aC1uby11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLQotQmVmb3JlIHN0YXRpc3RpY3MgcHJv
Y2Vzc2luZzogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4KLUJlZm9yZSBzdGF0aXN0aWNzIHBy
b2Nlc3Npbmc6IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCi1CZWZvcmUgc3RhdGlzdGljcyBwcm9j
ZXNzaW5nOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCi1CZWZvcmUgc3RhdGlz
dGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgZG9lcyBleGlzdC4KLUJlZm9yZSBz
dGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIGV4aXN0LgotCi1BZnRlciBzdGF0
aXN0aWNzIHByb2Nlc3Npbmc6IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCi1BZnRlciBzdGF0aXN0
aWNzIHByb2Nlc3Npbmc6IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCi1BZnRlciBzdGF0aXN0
aWNzIHByb2Nlc3Npbmc6IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KLUFmdGVy
IHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgbm90IGV4aXN0
LgotQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3Qu
Ci0KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC1zdGF0aXN0aWNz
LXdpdGgtbm8tdXNlci1pbnRlcmFjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVt
b3ZlZC1zdGF0aXN0aWNzLXdpdGgtbm8tdXNlci1pbnRlcmFjdGlvbi5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhNTViMWFiNmFlZjhkOTQ0NGM0YzE0MmEwNjI2ZjVjMGUxMjFi
MjUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMt
YWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtc3RhdGlzdGljcy13aXRoLW5vLXVzZXItaW50ZXJhY3Rp
b24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4K
LTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29r
aWUtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0
aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KCdydW5U
ZXN0KCknLCAwKSI+Ci08YnI+Ci08ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgotPGJyPgotPHNjcmlw
dD4KLSAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKLSAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKLQotICAgIGNvbnN0IGh0dHBPbmx5Q29va2llTmFtZSA9ICJodHRwLW9ubHktY29v
a2llIjsKLSAgICBjb25zdCBzZXJ2ZXJTaWRlQ29va2llTmFtZSA9ICJzZXJ2ZXItc2lkZS1jb29r
aWUiOwotICAgIGNvbnN0IGNsaWVudFNpZGVDb29raWVOYW1lID0gImNsaWVudC1zaWRlLWNvb2tp
ZSI7Ci0KLSAgICBmdW5jdGlvbiBzb3J0U3RyaW5nQXJyYXkoYSwgYikgewotICAgICAgICBhID0g
YS50b0xvd2VyQ2FzZSgpOwotICAgICAgICBiID0gYi50b0xvd2VyQ2FzZSgpOwotCi0gICAgICAg
IHJldHVybiBhID4gYiA/IDEgOiBiID4gYSA/IC0xIDogMDsKLSAgICB9Ci0KLSAgICBmdW5jdGlv
biBhZGRMaW5lYnJlYWtUb091dHB1dCgpIHsKLSAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJiciIpOwotICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVu
dCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gYWRkT3V0cHV0KG1lc3NhZ2UpIHsKLSAgICAgICAg
bGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgZWxl
bWVudC5pbm5lclRleHQgPSBtZXNzYWdlOwotICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxl
bWVudCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0ZXJEZWxldGlv
bikgewotICAgICAgICBsZXQgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSBbXTsKLSAgICAg
ICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOwotICAgICAgICBpZiAoIWNv
b2tpZXMubGVuZ3RoICYmIGlzQWZ0ZXJEZWxldGlvbikKLSAgICAgICAgICAgIGFkZE91dHB1dCgi
RkFJTDogIiArICJObyBjb29raWVzIGZvdW5kLiIpOwotICAgICAgICBmb3IgKGxldCBjb29raWUg
b2YgY29va2llcykgewotICAgICAgICAgICAgc3dpdGNoIChjb29raWUubmFtZSkgewotICAgICAg
ICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29raWVOYW1lOgotICAgICAgICAgICAgICAgICAgICB1
bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIi
IDogIkJlZm9yZSIpICsgIiBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6ICIgKyAoaXNBZnRlckRlbGV0
aW9uID8gIiAiIDogIiIpICsgIkh0dHBPbmx5IGNvb2tpZSBleGlzdHMuIik7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2Ugc2VydmVyU2lkZUNvb2tpZU5h
bWU6Ci0gICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2go
KGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJv
Y2Vzc2luZzogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLiIpOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIGNsaWVudFNpZGVDb29raWVO
YW1lOgotICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNo
KChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzdGF0aXN0aWNzIHBy
b2Nlc3Npbmc6IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuIik7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGxldCBzb3J0ZWRU
ZXN0UGFzc2VkTWVzc2FnZXMgPSB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRT
dHJpbmdBcnJheSk7Ci0gICAgICAgIGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRl
ZFRlc3RQYXNzZWRNZXNzYWdlcykgewotICAgICAgICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRN
ZXNzYWdlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0
YWJhc2UiOwotCi0gICAgZnVuY3Rpb24gY3JlYXRlSURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7Ci0g
ICAgICAgIGxldCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKLSAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxk
bid0IGNyZWF0ZSBpbmRleGVkREIuIik7Ci0gICAgICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAg
ICAgIH07Ci0gICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgICAgICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7Ci0gICAgICAgICAg
ICBsZXQgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVt
ZW50OiB0cnVlfSk7Ci0gICAgICAgICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIik7Ci0gICAgICAg
ICAgICBjYWxsYmFjaygpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY29uc3QgbWF4SW50ZXJ2
YWxzID0gMjA7Ci0KLSAgICBsZXQgaW50ZXJ2YWxDb3VudGVySURCOwotICAgIGxldCBjaGVja0lE
QkNhbGxiYWNrOwotICAgIGxldCBjaGVja0lEQkludGVydmFsSUQ7Ci0gICAgbGV0IHNlbWFwaG9y
ZUlEQkNoZWNrID0gZmFsc2U7Ci0gICAgZnVuY3Rpb24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMo
aXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgewotICAgICAgICBsZXQgcmVxdWVzdDsKLSAgICAg
ICAgaW50ZXJ2YWxDb3VudGVySURCID0gMDsKLSAgICAgICAgY2hlY2tJREJDYWxsYmFjayA9IGNh
bGxiYWNrOwotICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgewotICAgICAgICAgICAgLy8g
Q2hlY2sgdW50aWwgdGhlcmUgaXMgYSBJREIuCi0gICAgICAgICAgICBjaGVja0lEQkludGVydmFs
SUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2VtYXBo
b3JlSURCQ2hlY2spCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7Ci0KLSAgICAgICAgICAgICAgICBpZiAoKytpbnRl
cnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKLSAgICAgICAgICAgICAgICAgICAgYWRk
T3V0cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBub3Qg
ZXhpc3QuIik7Ci0gICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4o
ZGJOYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24g
KCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVy
dmFsSUQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVu
IGluZGV4ZWREQi4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNr
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAg
ICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVl
ZGVkID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBu
ZXh0IGludGVydmFsIGNoZWNrIGFnYWluLgotICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBo
b3JlSURCQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElE
QiBlbnRyeSBkb2VzIGV4aXN0LiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3Jl
SURCQ2hlY2sgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJh
Y2soKTsKLSAgICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9LCAyMDApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gQ2hlY2sgdW50
aWwgdGhlcmUgaXMgbm8gSURCLgotICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElEID0gc2V0
SW50ZXJ2YWwoZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJD
aGVjaykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291
bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKLSAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChjaGVja0lEQkludGVydmFsSUQpOwotICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQo
IkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7Ci0g
ICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4i
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgICAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24gKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQklu
dGVydmFsSUQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0
aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluIGJlY2F1
c2UgZGVsZXRpb24gbWlnaHQgYmUgZGVsYXllZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNl
bWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSwgMjAwKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IGxldCBpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2U7Ci0gICAgbGV0IGNoZWNrTG9jYWxTdG9y
YWdlQ2FsbGJhY2s7Ci0gICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRDsKLSAgICBj
b25zdCBsb2NhbFN0b3JhZ2VOYW1lID0gInRlc3QiOwotICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZh
bHVlID0gInZhbHVlIjsKLSAgICBmdW5jdGlvbiBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhpc0Fm
dGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7Ci0gICAgICAgIGludGVydmFsQ291bnRlckxvY2FsU3Rv
cmFnZSA9IDA7Ci0gICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2sgPSBjYWxsYmFjazsK
LSAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsKLSAgICAgICAgICAgIC8vIENoZWNrIHVu
dGlsIHRoZXJlIGlzIExvY2FsU3RvcmFnZS4KLSAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdl
SW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlm
ICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKLSAgICAg
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQp
OwotICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShs
b2NhbFN0b3JhZ2VOYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUg
c3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0g
bG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7Ci0g
ICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdl
KG9yaWdpblVuZGVyVGVzdCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChj
aGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOwotICAgICAgICAgICAgICAgICAgICBsZXQgdmFs
dWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKLSAgICAgICAgICAg
ICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0
b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAi
ZG9lcyBub3QiKSArICIgZXhpc3QuIik7Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxT
dG9yYWdlQ2FsbGJhY2soKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LCAxMDAp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMg
bm8gTG9jYWxTdG9yYWdlLgotICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElE
ID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2
YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgewotICAgICAgICAgICAgICAg
ICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFn
ZU5hbWUpOwotICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3Mg
cHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFn
ZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOwotICAgICAgICAgICAg
ICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgfSBl
bHNlIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5k
ZXJUZXN0KSkgewotICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxT
dG9yYWdlSW50ZXJ2YWxJRCk7Ci0gICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2Fs
U3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOwotICAgICAgICAgICAgICAgICAgICBh
ZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5
ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90Iikg
KyAiIGV4aXN0LiIpOwotICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxi
YWNrKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwgMTAwKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51
ZSgpIHsKLSAgICAgICAgLy8gV3JpdGUgY29va2llcy4KLSAgICAgICAgYXdhaXQgZmV0Y2goIi9j
b29raWVzL3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2llTmFtZT0iICsg
aHR0cE9ubHlDb29raWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOwotICAg
ICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldENvb2tpZXMuY2dpIiwgeyBo
ZWFkZXJzOiB7ICJTZXQtQ29va2llIjogc2VydmVyU2lkZUNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9
LzsiIH0sIGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOwotICAgICAgICBkb2N1bWVudC5j
b29raWUgPSBjbGllbnRTaWRlQ29va2llTmFtZSArICI9MSI7Ci0KLSAgICAgICAgY2hlY2tDb29r
aWVzKGZhbHNlKTsKLQotICAgICAgICAvLyBXcml0ZSBMb2NhbFN0b3JhZ2UKLSAgICAgICAgbG9j
YWxTdG9yYWdlLnNldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUpOwot
ICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7Ci0KLSAg
ICAgICAgICAgIC8vIFdyaXRlIEluZGV4ZWREQi4KLSAgICAgICAgICAgIGNyZWF0ZUlEQkRhdGFT
dG9yZShmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlz
dHMoZmFsc2UsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtU
b091dHB1dCgpOwotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250
aW51ZSgpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0p
OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkg
ewotICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRz
Q2FsbGJhY2soY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKTsKLSAgICAgICAgdGVzdFJ1bm5l
ci5zdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwotICAgIH0KLQot
ICAgIGZ1bmN0aW9uIGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKLSAgICAgICAgY2hl
Y2tDb29raWVzKHRydWUpOwotICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyh0cnVlLCBm
dW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyh0cnVlLCBm
aW5pc2hUZXN0KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgY29uc3Qgb3JpZ2luVW5kZXJU
ZXN0ICA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOwotICAgIGNvbnN0IG90aGVyT3JpZ2luID0g
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIKLSAgICBjb25zdCB0b3BGcmFtZU9yaWdpbiA9ICJodHRw
Oi8vMTI3LjAuMC4yOjgwMDAiOwotICAgIGNvbnN0IHRpbWVTdGFtcCA9IE1hdGgucm91bmQoKG5l
dyBEYXRlKCkpLmdldFRpbWUoKSAvIDEwMDApOwotICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7
Ci0gICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlv
bihvcmlnaW5VbmRlclRlc3QpKQotICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsgb3Jp
Z2luVW5kZXJUZXN0ICsgIiBzdGlsbCBoYXMgdXNlciBpbnRlcmFjdGlvbiBhZnRlciBwcm9jZXNz
aW5nLiIpOwotICAgICAgICByZXNldENvb2tpZXMoKTsKLSAgICAgICAgc2V0RW5hYmxlRmVhdHVy
ZShmYWxzZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgLy8gRG8gbm90IHVzZSBzZXRFbmFibGVGZWF0
dXJlIGhlcmUgYmVjYXVzZSB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZWJzaXRlIGRhdGEgZGVsZXRp
b24gaXMgbm90IHNraXBwZWQKLSAgICAvLyBieSB0aGUgcHJlc2VuY2Ugb2YgcGFyYW1ldGVycygp
LmlzUnVubmluZ1Rlc3QuCi0gICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICAgICAgdGVzdFJ1
bm5lci5zZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKDM2
MDApOwotICAgICAgICAvLyBNZXJnZSBhIHN0YXRpc3RpYyB3aXRoIG5vIHVzZXIgaW50ZXJhY3Rp
b24gdG8gY2hlY2sgdGhlIC0xIGNhc2UuCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGlj
c01lcmdlU3RhdGlzdGljKG90aGVyT3JpZ2luLCB0b3BGcmFtZU9yaWdpbiwgIiIsIHRpbWVTdGFt
cCwgZmFsc2UsIC0xLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwLCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlKHRydWUsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAvLyBpbnNlcnRTdGF0
aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhkb21haW4sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbiwgaXNT
Y2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQpCi0gICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhvcmlnaW5V
bmRlclRlc3QsIHRydWUsIHRydWUsIGZhbHNlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICAgICAgd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7Ci0gICAgICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQotPC9zY3JpcHQ+Ci08L2JvZHk+
Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLXdpdGgt
dXNlci1pbnRlcmFjdGlvbi03LWRheXMtYWdvLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1j
b29raWVzLXJlbW92ZWQtd2l0aC11c2VyLWludGVyYWN0aW9uLTctZGF5cy1hZ28tZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmY0ZWEzNDg1MTY1YTM0ZTI1YTFmMzU2NjEwZWVjYWEyNGVlZjA1MTAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLXdpdGgtdXNl
ci1pbnRlcmFjdGlvbi03LWRheXMtYWdvLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACisK
K0JlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMu
CitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgor
QmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUg
ZXhpc3RzLgorQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5
IGRvZXMgZXhpc3QuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9l
cyBleGlzdC4KKworQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBIdHRwT25seSBjb29raWUg
ZXhpc3RzLgorQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBDbGllbnQtc2lkZSBjb29raWUg
ZXhpc3RzLgorQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBSZWd1bGFyIHNlcnZlci1zaWRl
IGNvb2tpZSBleGlzdHMuCitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFn
ZSBlbnRyeSBkb2VzIGV4aXN0LgorQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50
cnkgZG9lcyBleGlzdC4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1v
dmVkLXdpdGgtdXNlci1pbnRlcmFjdGlvbi03LWRheXMtYWdvLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQt
Y29va2llcy1yZW1vdmVkLXdpdGgtdXNlci1pbnRlcmFjdGlvbi03LWRheXMtYWdvLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWM0NzJkZGMwYzNiMjYxYjViMTVlMTI4NTJlYjA0ZTE0YzgyZjlkNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtd2l0aC11c2VyLWludGVy
YWN0aW9uLTctZGF5cy1hZ28uaHRtbApAQCAtMCwwICsxLDI2MiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29v
a2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91
dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVu
VGVzdCgpJywgMCkiPgorPGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxicj4KKzxzY3Jp
cHQ+CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisKKyAgICBjb25zdCBodHRwT25seUNvb2tpZU5hbWUgPSAiaHR0cC1vbmx5LWNv
b2tpZSI7CisgICAgY29uc3Qgc2VydmVyU2lkZUNvb2tpZU5hbWUgPSAic2VydmVyLXNpZGUtY29v
a2llIjsKKyAgICBjb25zdCBjbGllbnRTaWRlQ29va2llTmFtZSA9ICJjbGllbnQtc2lkZS1jb29r
aWUiOworCisgICAgZnVuY3Rpb24gc29ydFN0cmluZ0FycmF5KGEsIGIpIHsKKyAgICAgICAgYSA9
IGEudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgYiA9IGIudG9Mb3dlckNhc2UoKTsKKworICAgICAg
ICByZXR1cm4gYSA+IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7CisgICAgfQorCisgICAgZnVuY3Rp
b24gYWRkTGluZWJyZWFrVG9PdXRwdXQoKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiYnIiKTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1l
bnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZE91dHB1dChtZXNzYWdlKSB7CisgICAgICAg
IGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGVs
ZW1lbnQuaW5uZXJUZXh0ID0gbWVzc2FnZTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVs
ZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llcyhpc0FmdGVyRGVsZXRp
b24pIHsKKyAgICAgICAgbGV0IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gW107CisgICAg
ICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgaWYgKCFj
b29raWVzLmxlbmd0aCAmJiBpc0FmdGVyRGVsZXRpb24pCisgICAgICAgICAgICBhZGRPdXRwdXQo
IkZBSUw6ICIgKyAiTm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAgICAgZm9yIChsZXQgY29va2ll
IG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29va2llLm5hbWUpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIGh0dHBPbmx5Q29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAg
dW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVy
IiA6ICJCZWZvcmUiKSArICIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiAiICsgKGlzQWZ0ZXJEZWxl
dGlvbiA/ICIgIiA6ICIiKSArICJIdHRwT25seSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIHNlcnZlclNpZGVDb29raWVO
YW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNo
KChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzdGF0aXN0aWNzIHBy
b2Nlc3Npbmc6IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29va2ll
TmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVz
aCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc3RhdGlzdGljcyBw
cm9jZXNzaW5nOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQgc29ydGVk
VGVzdFBhc3NlZE1lc3NhZ2VzID0gdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMuc29ydChzb3J0
U3RyaW5nQXJyYXkpOworICAgICAgICBmb3IgKGxldCB0ZXN0UGFzc2VkTWVzc2FnZSBvZiBzb3J0
ZWRUZXN0UGFzc2VkTWVzc2FnZXMpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCh0ZXN0UGFzc2Vk
TWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBkYk5hbWUgPSAiVGVzdERh
dGFiYXNlIjsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZUlEQkRhdGFTdG9yZShjYWxsYmFjaykgewor
ICAgICAgICBsZXQgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgIHJl
cXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3Vs
ZG4ndCBjcmVhdGUgaW5kZXhlZERCLiIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAg
ICAgICB9OworICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgICAgICBsZXQgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICAg
ICAgbGV0IG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7YXV0b0luY3Jl
bWVudDogdHJ1ZX0pOworICAgICAgICAgICAgb2JqU3RvcmUuYWRkKCJ2YWx1ZSIpOworICAgICAg
ICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IG1heEludGVy
dmFscyA9IDIwOworCisgICAgbGV0IGludGVydmFsQ291bnRlcklEQjsKKyAgICBsZXQgY2hlY2tJ
REJDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tJREJJbnRlcnZhbElEOworICAgIGxldCBzZW1hcGhv
cmVJREJDaGVjayA9IGZhbHNlOworICAgIGZ1bmN0aW9uIGNoZWNrSURCRGF0YVN0b3JlRXhpc3Rz
KGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3Q7CisgICAg
ICAgIGludGVydmFsQ291bnRlcklEQiA9IDA7CisgICAgICAgIGNoZWNrSURCQ2FsbGJhY2sgPSBj
YWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8v
IENoZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZh
bElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbWFw
aG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsraW50
ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBj
bGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGFk
ZE91dHB1dCgiQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgbm90
IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNl
OworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVu
KGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRl
cnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3Bl
biBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVj
ayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5l
ZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0aGUg
bmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJ
REIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9y
ZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxi
YWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSwgMjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVu
dGlsIHRoZXJlIGlzIG5vIElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNl
dEludGVydmFsKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURC
Q2hlY2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1h
cGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENv
dW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0
KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOwor
ICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIu
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJ
bnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3Rh
dGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2FpbiBiZWNh
dXNlIGRlbGV0aW9uIG1pZ2h0IGJlIGRlbGF5ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBz
ZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBsZXQgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlOworICAgIGxldCBjaGVja0xvY2FsU3Rv
cmFnZUNhbGxiYWNrOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQ7CisgICAg
Y29uc3QgbG9jYWxTdG9yYWdlTmFtZSA9ICJ0ZXN0IjsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VW
YWx1ZSA9ICJ2YWx1ZSI7CisgICAgZnVuY3Rpb24gY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoaXNB
ZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAgICAgICBpbnRlcnZhbENvdW50ZXJMb2NhbFN0
b3JhZ2UgPSAwOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrID0gY2FsbGJhY2s7
CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1
bnRpbCB0aGVyZSBpcyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFn
ZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElE
KTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0o
bG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3Jl
IHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09
IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOwor
ICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFn
ZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwo
Y2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZh
bHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAg
ICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxT
dG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDog
ImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2Fs
U3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMTAw
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlz
IG5vIExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJ
RCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICgrK2ludGVy
dmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAg
ICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAg
ICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3Jh
Z2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNz
IHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3Jh
Z2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVu
ZGVyVGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2Fs
U3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2Nh
bFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAg
YWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRy
eSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIp
ICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxs
YmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGlu
dWUoKSB7CisgICAgICAgIC8vIFdyaXRlIGNvb2tpZXMuCisgICAgICAgIGF3YWl0IGZldGNoKCIv
Y29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwP2Nvb2tpZU5hbWU9IiAr
IGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAg
ICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXRDb29raWVzLmNnaSIsIHsg
aGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZlclNpZGVDb29raWVOYW1lICsgIj0xOyBwYXRo
PS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgZG9jdW1lbnQu
Y29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUgKyAiPTEiOworCisgICAgICAgIGNoZWNrQ29v
a2llcyhmYWxzZSk7CisKKyAgICAgICAgLy8gV3JpdGUgTG9jYWxTdG9yYWdlCisgICAgICAgIGxv
Y2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUsIGxvY2FsU3RvcmFnZVZhbHVlKTsK
KyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworCisg
ICAgICAgICAgICAvLyBXcml0ZSBJbmRleGVkREIuCisgICAgICAgICAgICBjcmVhdGVJREJEYXRh
U3RvcmUoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhp
c3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkTGluZWJyZWFr
VG9PdXRwdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29u
dGludWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgp
IHsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jk
c0NhbGxiYWNrKGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSk7CisgICAgICAgIHRlc3RSdW5u
ZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIGNo
ZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1ZSwg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHModHJ1ZSwg
ZmluaXNoVGVzdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IG9yaWdpblVuZGVy
VGVzdCAgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBjb25zdCBvdGhlck9yaWdpbiA9
ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiCisgICAgY29uc3QgdG9wRnJhbWVPcmlnaW4gPSAiaHR0
cDovLzEyNy4wLjAuMjo4MDAwIjsKKyAgICBjb25zdCB0aW1lU3RhbXAgPSBNYXRoLnJvdW5kKChu
ZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAwKTsKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkg
eworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0
aW9uKG9yaWdpblVuZGVyVGVzdCkpCisgICAgICAgICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBv
cmlnaW5VbmRlclRlc3QgKyAiIGRvZXNuJ3QgaGF2ZSB1c2VyIGludGVyYWN0aW9uIGFmdGVyIHBy
b2Nlc3NpbmcuIik7CisgICAgICAgIHJlc2V0Q29va2llcygpOworICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBEbyBub3QgdXNlIHNldEVuYWJs
ZUZlYXR1cmUgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlYnNpdGUgZGF0YSBk
ZWxldGlvbiBpcyBub3Qgc2tpcHBlZAorICAgIC8vIGJ5IHRoZSBwcmVzZW5jZSBvZiBwYXJhbWV0
ZXJzKCkuaXNSdW5uaW5nVGVzdC4KKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICB0
ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92
YWwoMzYwMCk7CisgICAgICAgIC8vIE1lcmdlIGEgc3RhdGlzdGljIHdpdGggbm8gdXNlciBpbnRl
cmFjdGlvbiB0byBjaGVjayB0aGUgLTEgY2FzZS4KKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0
aXN0aWNzTWVyZ2VTdGF0aXN0aWMob3RoZXJPcmlnaW4sIHRvcEZyYW1lT3JpZ2luLCAiIiwgdGlt
ZVN0YW1wLCBmYWxzZSwgLTEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMob3JpZ2luVW5kZXJUZXN0LAorICAgICAg
ICAgICAgICAgICAgICA3LCAgICAgLy8gbnVtYmVyT2ZPcGVyYXRpbmdEYXlzUGFzc2VkCisgICAg
ICAgICAgICAgICAgICAgIHRydWUsICAvLyBoYXNVc2VySW50ZXJhY3Rpb24KKyAgICAgICAgICAg
ICAgICAgICAgZmFsc2UsIC8vIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWws
CisgICAgICAgICAgICAgICAgICAgIGZhbHNlLCAvLyBpc1ByZXZhbGVudAorICAgICAgICAgICAg
ICAgICAgICBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVXZWJzaXRlRGF0
YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5n
LWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEtcmVtb3ZlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1k
YXRhLXJlbW92ZWQuaHRtbAppbmRleCA5NzcxOTY5MmUyOGMwYWU5M2NiODczNjRmODI2OWE1ZmQz
Mzc3ZmM5Li5hM2RjZmNlYWU1ZjEwMTYyZDZjNGQxNWVmNDdkMDNmOWJiNmVhODQxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0
aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEtcmVtb3ZlZC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLXdl
YnNpdGUtZGF0YS1yZW1vdmVkLmh0bWwKQEAgLTIzOCw4ICsyMzgsMTIgQEAKIAogICAgIGZ1bmN0
aW9uIHJ1blRlc3QoKSB7CiAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24g
KCkgewotICAgICAgICAgICAgLy8gaW5zZXJ0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoZG9t
YWluLCBoYXNIYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0
YVJlbW92YWwsIGlzUHJldmFsZW50KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0
aWNzRXhwaXJlZFN0YXRpc3RpYyhvcmlnaW5VbmRlclRlc3QsIHRydWUsIGZhbHNlLCB0cnVlLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0V4cGlyZWRT
dGF0aXN0aWMob3JpZ2luVW5kZXJUZXN0LAorICAgICAgICAgICAgICAgIDMwLCAgICAvLyBudW1i
ZXJPZk9wZXJhdGluZ0RheXNQYXNzZWQKKyAgICAgICAgICAgICAgICB0cnVlLCAgLy8gaGFzVXNl
ckludGVyYWN0aW9uCisgICAgICAgICAgICAgICAgZmFsc2UsIC8vIGlzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWwsCisgICAgICAgICAgICAgICAgdHJ1ZSwgIC8vIGlzUHJldmFs
ZW50CisgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgaWYgKCF0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKG9yaWdpblVuZGVyVGVzdCkp
CiAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiRkFJTDogIiArIG9yaWdpblVuZGVyVGVz
dCArICIgZGlkIG5vdCBnZXQgaW5zZXJ0ZWQgaW50byBkYXRhYmFzZS4iKTsKICAgICAgICAgICAg
ICAgICB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggM2ZiMDVjZjk0Yzc4YTUwNjQwOTIwOWE3Yzk2Njcw
MDI3MDA2ZGQ3YS4uOGY3OWYxODczNjg4YThmNjA3NDVkZjA3YWY2Y2Y2ZjU5MTM3OWM4ZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTg0MSw3ICs4NDEs
NyBAQCBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvc2V0LWFsbC1jb29raWVzLXRv
LXNhbWUtc2l0ZS1zdHJpY3QuaHRtbCBbIFNraQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2VuZm9yY2Utc2FtZXNpdGUtc3RyaWN0LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUt
cmVkaXJlY3RzLXRvLmh0bWwgWyBTa2lwIF0KIAogIyBUaGlzIHRlc3QgaXMgZmxha3kuIDxyZGFy
Oi8vcHJvYmxlbS82OTc0ODcyMD4KLWh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9v
cGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtc3RhdGlzdGljcy13aXRoLW5v
LXVzZXItaW50ZXJhY3Rpb24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCitodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVk
LXdpdGgtdXNlci1pbnRlcmFjdGlvbi03LWRheXMtYWdvLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQog
CiAjIFRoZSBDTkFNRSBhbmQgY29va2llIHRyYW5zZm9ybSBTUElzIGFyZSBvbmx5IGF2YWlsYWJs
ZSBpbiBtYWNPUyBCaWcgU3VyICsgaU9TIDE0IGFuZCBhYm92ZS4KIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9jbmFtZS1jbG9ha2luZy10b3AtY25hbWUtc3ViLTFwLWNuYW1lLmh0
bWwgWyBTa2lwIF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>