<?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>212034</bug_id>
          
          <creation_ts>2020-05-18 10:52:46 -0700</creation_ts>
          <short_desc>Support operating dates in ResourceLoadStatisticsDatabaseStore</short_desc>
          <delta_ts>2022-02-12 21:01:34 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>rowan</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1653669</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-18 10:52:46 -0700</bug_when>
    <thetext>We should add an Operating Dates table to the database schema.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653671</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-18 10:53:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/63349242&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653677</commentid>
    <comment_count>2</comment_count>
      <attachid>399658</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-18 11:04:40 -0700</bug_when>
    <thetext>Created attachment 399658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653800</commentid>
    <comment_count>3</comment_count>
      <attachid>399681</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-18 16:13:16 -0700</bug_when>
    <thetext>Created attachment 399681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654192</commentid>
    <comment_count>4</comment_count>
      <attachid>399681</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-05-19 14:47:26 -0700</bug_when>
    <thetext>Comment on attachment 399681
Patch

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

I like the tests. Was there something done to migrate the schema here?

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3027
&gt; +Optional&lt;Seconds&gt; ResourceLoadStatisticsDatabaseStore::statisticsExpirationTime() const

Looking at this function name and body, it&apos;s unclear what it does and what the scope of it is. It&apos;s const so nothing changes and it looks like a getter. But statisticsExpirationTime sounds like either the expiration time for an individual piece of statistics, in which case I&apos;d expect the function to take a parameter, or some global expiration time which I don&apos;t think exists. If you explain to me what it does or is for, maybe we can come up with a better name together.

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

I wonder if we should break out these test functions into a friend class at some point. I don&apos;t know if that&apos;s something we do in WebKit but it sure would be nice to declutter the production logic.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:1201
&gt; +

Were these 7 functions just moved from the base class? I know your change log entry says &quot;Moves functions out of ResourceLoadStatisticsStore …&quot; but it doesn&apos;t list which. Please make it more explicit in the change log since it looks like a big chunk of new functionality on the surface of it.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.cpp:211
&gt; +    // Debug mode has a prepopulated memory store.

Nice.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:-57
&gt; -constexpr Seconds operatingTimeWindowForLiveOnTesting { 1_h };

Please comment in the change log that these are moved to the header file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654201</commentid>
    <comment_count>5</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-19 15:06:26 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #4)
&gt; Comment on attachment 399681 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=399681&amp;action=review
&gt; 
&gt; I like the tests. Was there something done to migrate the schema here?
&gt; 

No additional migration code necessary, I recently added support for adding new tables and migrating existing data from the old tables over :)

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3027
&gt; &gt; +Optional&lt;Seconds&gt; ResourceLoadStatisticsDatabaseStore::statisticsExpirationTime() const
&gt; 
&gt; Looking at this function name and body, it&apos;s unclear what it does and what
&gt; the scope of it is. It&apos;s const so nothing changes and it looks like a
&gt; getter. But statisticsExpirationTime sounds like either the expiration time
&gt; for an individual piece of statistics, in which case I&apos;d expect the function
&gt; to take a parameter, or some global expiration time which I don&apos;t think
&gt; exists. If you explain to me what it does or is for, maybe we can come up
&gt; with a better name together.
&gt; 

Yes, definitely. This is used to clear expired user interactions in ResourceLoadStatisticsDatabaseStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor(). It checks for the least recent Operating Date and will signal the store to clear UI that happened before that time. We could perhaps update the name to be &quot;getLeastRecentOperatingDate()&quot; or something of the sort. Or, we could have it take a statistic and return a bool deciding whether it was expired or not.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3157
&gt; &gt; +void ResourceLoadStatisticsDatabaseStore::insertExpiredStatisticForTesting(const RegistrableDomain&amp; domain, bool hasUserInteraction, bool isScheduledForAllButCookieDataRemoval, bool isPrevalent)
&gt; 
&gt; I wonder if we should break out these test functions into a friend class at
&gt; some point. I don&apos;t know if that&apos;s something we do in WebKit but it sure
&gt; would be nice to declutter the production logic.
&gt; 

Agreed. Most of the setters in this file are for testing only.

&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsMemoryStore.cpp:1201
&gt; &gt; +
&gt; 
&gt; Were these 7 functions just moved from the base class? I know your change
&gt; log entry says &quot;Moves functions out of ResourceLoadStatisticsStore …&quot; but it
&gt; doesn&apos;t list which. Please make it more explicit in the change log since it
&gt; looks like a big chunk of new functionality on the surface of it.
&gt; 
&gt; &gt; 

Yes, will specify in ChangeLog.

Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsPersistentStorage.cpp:211
&gt; &gt; +    // Debug mode has a prepopulated memory store.
&gt; 
&gt; Nice.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsStore.cpp:-57
&gt; &gt; -constexpr Seconds operatingTimeWindowForLiveOnTesting { 1_h };
&gt; 
&gt; Please comment in the change log that these are moved to the header file.

Will do!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654209</commentid>
    <comment_count>6</comment_count>
      <attachid>399681</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-19 15:38:19 -0700</bug_when>
    <thetext>Comment on attachment 399681
Patch

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

&gt;&gt;&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3027
&gt;&gt;&gt; +Optional&lt;Seconds&gt; ResourceLoadStatisticsDatabaseStore::statisticsExpirationTime() const
&gt;&gt; 
&gt;&gt; Looking at this function name and body, it&apos;s unclear what it does and what the scope of it is. It&apos;s const so nothing changes and it looks like a getter. But statisticsExpirationTime sounds like either the expiration time for an individual piece of statistics, in which case I&apos;d expect the function to take a parameter, or some global expiration time which I don&apos;t think exists. If you explain to me what it does or is for, maybe we can come up with a better name together.
&gt; 
&gt; Yes, definitely. This is used to clear expired user interactions in ResourceLoadStatisticsDatabaseStore::registrableDomainsToDeleteOrRestrictWebsiteDataFor(). It checks for the least recent Operating Date and will signal the store to clear UI that happened before that time. We could perhaps update the name to be &quot;getLeastRecentOperatingDate()&quot; or something of the sort. Or, we could have it take a statistic and return a bool deciding whether it was expired or not.

I just noticed statisticsExpirationTime() is unused in the memory store, so I will delete that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654211</commentid>
    <comment_count>7</comment_count>
      <attachid>399776</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-19 15:50:44 -0700</bug_when>
    <thetext>Created attachment 399776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654259</commentid>
    <comment_count>8</comment_count>
      <attachid>399776</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-19 17:42:17 -0700</bug_when>
    <thetext>Comment on attachment 399776
Patch

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

I think this looks good - -and thank you for building such good test infrastructure. But I think you are doing way too many DB reads for this purpose. Instead, I think you should check and store these values at launch (and when you change them), but otherwise avoid hitting the DB. r- to fix that performance issue, but otherwise this looks great!

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3027
&gt; +Optional&lt;Seconds&gt; ResourceLoadStatisticsDatabaseStore::getLeastRecentOperatingDate() const

I prefer the original &quot;statisticsExperationTime&quot; name :-)

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3034
&gt; +    if (m_countOperatingDatesStatement.step() != SQLITE_ROW) {

We call this method every time we do a sweep of the data for stuff to delete (every few seconds), but this count only changes once a day, in includeTodayAsOperatingDateIfNecessary. I think we should compute its value in that method, and refer to it here.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3040
&gt; +    const unsigned operatingDatesSize = m_countOperatingDatesStatement.getColumnInt(0);

I think this should be a member variable we compute in includeTodayAsOperatingDateIfNecessary and refer to elsewhere.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3068
&gt; +    auto operatingDatesSize = m_countOperatingDatesStatement.getColumnInt(0);

I think this should be a member variable we can refer to later.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3080
&gt; +        resetStatement(m_getMostRecentOperatingDateStatement);

It&apos;s almost like we need a scoped destructing object that resets a statement when leaving a method like this. Then you wouldn&apos;t have to have these cleanup steps everywhere.
But we probably only call this once a day -- it might be simpler to just have this statement created, prepared, and used in this method as a local.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3088
&gt; +        if (m_deleteLeastRecentOperatingDatesStatement.bindInt(1, rowsToPrune) != SQLITE_OK

This statement is used rarely, too. I wonder if we couldn&apos;t just build it from a string right here and execute it, rather than having a member to hold it (and remember to reset it at the end, etc.).

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3096
&gt; +    if (m_insertOperatingDateStatement.bindInt(1, today.year()) != SQLITE_OK

Ditto. We insert at most one time a day, so I&apos;m not sure the complexity of storing this statement for later use is paid for in performance benefit.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3125
&gt; +    if (m_countOperatingDatesStatement.step() != SQLITE_ROW) {

This method gets called every time we update cookie blocking, which might be very frequent. But our count of operating dates only changes once a day. So I think making this database call every time we hit this function is wrong.

I suggest that you store the operating date count as a member, updating it each time you call  includeTodayAsOperatingDateIfNecessary

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3142
&gt; +        resetStatement(m_getLeastRecentOperatingDateStatement);

I suggest you grab this value in includeTodayAsOperatingDateIfNecessary, and store it to be checked here. (It only changes once a day, blah blah blah ...) :-)

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3175
&gt; +    }

If you make the changes I suggest, you will need to re-read the count (or just update the member variables) here.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.h:286
&gt; +    mutable WebCore::SQLiteStatement m_getLeastRecentOperatingDateStatement;

I think we could get rid of a few of these stored queries, since they are only run once a day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654578</commentid>
    <comment_count>9</comment_count>
      <attachid>399870</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-05-20 12:19:59 -0700</bug_when>
    <thetext>Created attachment 399870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654657</commentid>
    <comment_count>10</comment_count>
      <attachid>399870</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-05-20 14:53:37 -0700</bug_when>
    <thetext>Comment on attachment 399870
Patch

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

This looks great! r=me.

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:2428
&gt; +    Optional&lt;Seconds&gt; expirationDateTime = statisticsExpirationTime();

Oh gosh. What a typo! Thanks! :-)

&gt; Source/WebKit/NetworkProcess/Classifier/ResourceLoadStatisticsDatabaseStore.cpp:3059
&gt; +        double daysToSubtract = Seconds::fromHours(24 * i).value();

If we have to do this frequently, we should consider making a &apos;Seconds::fromDays()&apos; helper. But not right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654665</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-20 15:14:17 -0700</bug_when>
    <thetext>Committed r261963: &lt;https://trac.webkit.org/changeset/261963&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399870.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840888</commentid>
    <comment_count>12</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-02-12 21:01:34 -0800</bug_when>
    <thetext>*** Bug 211775 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399658</attachid>
            <date>2020-05-18 11:04:40 -0700</date>
            <delta_ts>2020-05-18 16:13:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212034-20200518110439.patch</filename>
            <type>text/plain</type>
            <size>37031</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE1YTFmYTlhYjRiNTg5OGY0
MWM3OTY5NmY3N2IxNGY2MDMwODU5YmIuLmM4NGI1NjdmYjg2NzM2YTNmMjdhMDY3ZDk4M2VjMzgz
YmI1ZTQ1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMDUtMTggIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBvcGVy
YXRpbmcgZGF0ZXMgaW4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjAzNAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjMzNDkyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRl
VGFibGVRdWVyaWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVNj
aGVtYSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpwcmVwYXJlU3RhdGVtZW50cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnN0YXRpc3RpY3NFcGlyYXRpb25UaW1l
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlOjptZXJnZU9wZXJhdGluZ0RhdGVzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vz
c2FyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGVyc2lzdGVudFN0b3JhZ2U6OnBvcHVsYXRlTWVtb3J5U3RvcmVGcm9tRGlzayk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5zKToKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0aWNzRXBpcmF0aW9u
VGltZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6bWVyZ2VPcGVyYXRpbmdEYXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdE
YXRlSWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oOgorICAgICAgICAoV2ViS2l0OjpPcGVyYXRpbmdEYXRlOjp5ZWFyIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6T3BlcmF0aW5nRGF0ZTo6bW9udGggY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpPcGVyYXRpbmdEYXRlOjptb250aERheSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6b3BlcmF0aW5nRGF0ZXMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmNsZWFyT3BlcmF0aW5nRGF0ZXMpOiBEZWxldGVkLgorCiAyMDIwLTA1LTEyICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZXdvcmsg
ZHJhZyBhbmQgZHJvcCBoYW5kbGluZyBpbiBwcmVwYXJhdGlvbiBmb3IgR1RLNApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXgg
MzFlOTE5OTg2NTg2MDAyMzFkNjRjYmMwNDkzMDFjYzVjM2FmNWI0OC4uNzYyZGFiNTViNzYzYjA4
N2E5MzJkNzY1YmQ3ZjNiZGJlODA2NmI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC03Miw2ICs3Miw3IEBAIGNvbnN0
ZXhwciBhdXRvIGNvdW50U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lUXVlcnkgPSAiU0VMRUNUIENP
VU5UKCopIEZST00gU3VicmVzCiBjb25zdGV4cHIgYXV0byBjb3VudFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzVG9RdWVyeSA9ICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/IEFORCB0b0RvbWFpbklE
ID0gPzsiX3M7CiBjb25zdGV4cHIgYXV0byBjb3VudFByZXZhbGVudFJlc291cmNlc1F1ZXJ5ID0g
IlNFTEVDVCBDT1VOVChESVNUSU5DVCByZWdpc3RyYWJsZURvbWFpbikgRlJPTSBPYnNlcnZlZERv
bWFpbnMgV0hFUkUgaXNQcmV2YWxlbnQgPSAxOyJfczsKIGNvbnN0ZXhwciBhdXRvIGNvdW50UHJl
dmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblF1ZXJ5ID0gIlNFTEVDVCBDT1VOVChE
SVNUSU5DVCByZWdpc3RyYWJsZURvbWFpbikgRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgaXNQ
cmV2YWxlbnQgPSAxIEFORCBoYWRVc2VySW50ZXJhY3Rpb24gPSAxOyJfczsKK2NvbnN0ZXhwciBh
dXRvIGNvdW50T3BlcmF0aW5nRGF0ZXNRdWVyeSA9ICJTRUxFQ1QgQ09VTlQoKikgRlJPTSBPcGVy
YXRpbmdEYXRlczsiX3M7CiAKIGNvbnN0ZXhwciBhdXRvIGNvdW50UHJldmFsZW50UmVzb3VyY2Vz
V2l0aG91dFVzZXJJbnRlcmFjdGlvblF1ZXJ5ID0gIlNFTEVDVCBDT1VOVChESVNUSU5DVCByZWdp
c3RyYWJsZURvbWFpbikgRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgaXNQcmV2YWxlbnQgPSAx
IEFORCBoYWRVc2VySW50ZXJhY3Rpb24gPSAwOyJfczsKIApAQCAtODYsNiArODcsNyBAQCBjb25z
dGV4cHIgYXV0byB0b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvU2luY2VTYW1lU2l0ZVN0cmljdEVu
Zm9yY2VtZW50UXVlcnkgPSAiSQogY29uc3RleHByIGF1dG8gdG9wRnJhbWVVbmlxdWVSZWRpcmVj
dHNGcm9tUXVlcnkgPSAiSU5TRVJUIE9SIElHTk9SRSBJTlRPIFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RzRnJvbSAodGFyZ2V0RG9tYWluSUQsIGZyb21Eb21haW5JRCkgU0VMRUNUID8sIGRvbWFpbklE
IEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIHJlZ2lzdHJhYmxlRG9tYWluIGluICggIl9zOwog
Y29uc3RleHByIGF1dG8gdG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0c1F1ZXJ5ID0gIklO
U0VSVCBPUiBJR05PUkUgaW50byBUb3BGcmFtZUxvYWRlZFRoaXJkUGFydHlTY3JpcHRzICh0b3BG
cmFtZURvbWFpbklELCBzdWJyZXNvdXJjZURvbWFpbklEKSBTRUxFQ1QgPywgZG9tYWluSUQgRlJP
TSBPYnNlcnZlZERvbWFpbnMgd2hlcmUgcmVnaXN0cmFibGVEb21haW4gaW4gKCAiX3M7CiBjb25z
dGV4cHIgYXV0byBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21RdWVyeSA9ICJJTlNFUlQg
T1IgSUdOT1JFIElOVE8gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIChzdWJyZXNvdXJj
ZURvbWFpbklELCBmcm9tRG9tYWluSUQpIFNFTEVDVCA/LCBkb21haW5JRCBGUk9NIE9ic2VydmVk
RG9tYWlucyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiBpbiAoICJfczsKK2NvbnN0ZXhwciBhdXRv
IGluc2VydE9wZXJhdGluZ0RhdGVzUXVlcnkgPSAiSU5TRVJUIE9SIElHTk9SRSBJTlRPIE9wZXJh
dGluZ0RhdGVzICh5ZWFyLCBtb250aCwgbW9udGhEYXkpIFNFTEVDVCA/LCA/LCA/Il9zOwogCiAv
LyBJTlNFUlQgT1IgUkVQTEFDRSBRdWVyaWVzCiBjb25zdGV4cHIgYXV0byBzdWJmcmFtZVVuZGVy
VG9wRnJhbWVEb21haW5zUXVlcnkgPSAiSU5TRVJUIE9SIFJFUExBQ0UgaW50byBTdWJmcmFtZVVu
ZGVyVG9wRnJhbWVEb21haW5zIChzdWJGcmFtZURvbWFpbklELCBsYXN0VXBkYXRlZCwgdG9wRnJh
bWVEb21haW5JRCkgU0VMRUNUID8sID8sIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5zIHdo
ZXJlIHJlZ2lzdHJhYmxlRG9tYWluIGluICggIl9zOwpAQCAtMTM0LDYgKzEzNiw4IEBAIGNvbnN0
ZXhwciBhdXRvIGdldEFsbERvbWFpbnNRdWVyeSA9ICJTRUxFQ1QgcmVnaXN0cmFibGVEb21haW4g
RlJPTSBPYnNlcnZlZERvbWFpCiBjb25zdGV4cHIgYXV0byBnZXRBbGxTdWJTdGF0aXN0aWNzVW5k
ZXJEb21haW5RdWVyeSA9ICJTRUxFQ1QgdG9wRnJhbWVEb21haW5JRCBGUk9NIFN1YmZyYW1lVW5k
ZXJUb3BGcmFtZURvbWFpbnMgV0hFUkUgc3ViRnJhbWVEb21haW5JRCA9ID8iCiAgICAgIlVOSU9O
IEFMTCBTRUxFQ1QgdG9wRnJhbWVEb21haW5JRCBGUk9NIFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMgV0hFUkUgc3VicmVzb3VyY2VEb21haW5JRCA9ID8iCiAgICAgIlVOSU9OIEFMTCBT
RUxFQ1QgdG9Eb21haW5JRCBGUk9NIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gV0hFUkUg
c3VicmVzb3VyY2VEb21haW5JRCA9ID8iX3M7Citjb25zdGV4cHIgYXV0byBnZXRNb3N0UmVjZW50
T3BlcmF0aW5nRGF0ZVF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gT3BlcmF0aW5nRGF0ZXMgT1JERVIg
QlkgeWVhciBERVNDLCBtb250aCBERVNDLCBtb250aERheSBERVNDIExJTUlUIDE7Il9zOworY29u
c3RleHByIGF1dG8gZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlUXVlcnkgPSAiU0VMRUNUICog
RlJPTSBPcGVyYXRpbmdEYXRlcyBPUkRFUiBCWSB5ZWFyLCBtb250aCwgbW9udGhEYXkgTElNSVQg
MTsiX3M7CiAKIC8vIEVYSVNUUyBmb3IgdGVzdGluZyBxdWVyaWVzCiBjb25zdGV4cHIgYXV0byBs
aW5rRGVjb3JhdGlvbkV4aXN0c1F1ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAqIEZST00g
VG9wRnJhbWVMaW5rRGVjb3JhdGlvbnNGcm9tIFdIRVJFIHRvRG9tYWluSUQgPSA/IE9SIGZyb21E
b21haW5JRCA9ID8pIl9zOwpAQCAtMTQ1LDYgKzE0OSw3IEBAIGNvbnN0ZXhwciBhdXRvIG9ic2Vy
dmVkRG9tYWluc0V4aXN0c1F1ZXJ5ID0gIlNFTEVDVCBFWElTVFMgKFNFTEVDVCAqIEZST00gT2Jz
ZXJ2CiAKIC8vIERFTEVURSBRdWVyaWVzCiBjb25zdGV4cHIgYXV0byByZW1vdmVBbGxEYXRhUXVl
cnkgPSAiREVMRVRFIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGRvbWFpbklEID0gPyJfczsK
K2NvbnN0ZXhwciBhdXRvIGRlbGV0ZUxlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZXNRdWVyeSA9ICJE
RUxFVEUgRlJPTSBPcGVyYXRpbmdEYXRlcyBPUkRFUiBCWSB5ZWFyLCBtb250aCwgbW9udGhEYXkg
TElNSVQgPzsiX3M7CiAKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZU9ic2VydmVkRG9tYWluID0gIkNS
RUFURSBUQUJMRSBPYnNlcnZlZERvbWFpbnMgKCIKICAgICAiZG9tYWluSUQgSU5URUdFUiBQUklN
QVJZIEtFWSwgcmVnaXN0cmFibGVEb21haW4gVEVYVCBOT1QgTlVMTCBVTklRVUUgT04gQ09ORkxJ
Q1QgRkFJTCwgbGFzdFNlZW4gUkVBTCBOT1QgTlVMTCwgIgpAQCAtMjIyLDYgKzIyNywxMCBAQCBj
b25zdGV4cHIgYXV0byBjcmVhdGVTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20gPSAiQ1JF
QVRFIFRBQkxFIFN1YnJlc291cmNlVQogICAgICJGT1JFSUdOIEtFWShzdWJyZXNvdXJjZURvbWFp
bklEKSBSRUZFUkVOQ0VTIE9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NB
REUsICIKICAgICAiRk9SRUlHTiBLRVkoZnJvbURvbWFpbklEKSBSRUZFUkVOQ0VTIE9ic2VydmVk
RG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpOyJfczsKIAorY29uc3RleHByIGF1
dG8gY3JlYXRlT3BlcmF0aW5nRGF0ZXMgPSAiQ1JFQVRFIFRBQkxFIE9wZXJhdGluZ0RhdGVzICgi
CisgICAgInllYXIgSU5URUdFUiBOT1QgTlVMTCwgbW9udGggSU5URUdFUiBOT1QgTlVMTCwgbW9u
dGhEYXkgSU5URUdFUiBOT1QgTlVMTCk7Il9zOworCisKIC8vIENSRUFURSBVTklRVUUgSU5ERVgg
UXVlcmllcwogY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhTdG9yYWdlQWNjZXNzVW5k
ZXJUb3BGcmFtZURvbWFpbnMgPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIFN0
b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWluc19kb21haW5JRF90b3BMZXZlbERvbWFpbklE
IG9uIFN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9tYWlucyAoIGRvbWFpbklELCB0b3BMZXZl
bERvbWFpbklEICk7Il9zOwogY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0c1RvID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBU
b3BGcmFtZVVuaXF1ZVJlZGlyZWN0c1RvX3NvdXJjZURvbWFpbklEX3RvRG9tYWluSUQgb24gVG9w
RnJhbWVVbmlxdWVSZWRpcmVjdHNUbyAoIHNvdXJjZURvbWFpbklELCB0b0RvbWFpbklEICk7Il9z
OwpAQCAtMjMzLDYgKzI0Miw3IEBAIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4U3Vi
ZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyA9ICJDUkVBVEUgVU5JUVVFIElOCiBjb25zdGV4cHIg
YXV0byBjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgPSAi
Q1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnNfc3VicmVzb3VyY2VEb21haW5JRF90b3BGcmFtZURvbWFpbklEIG9uIFN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgKCBzdWJyZXNvdXJjZURvbWFpbklELCB0b3BGcmFtZURv
bWFpbklEICk7Il9zOwogY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvX3N1YnJlc291cmNlRG9tYWluSURfdG9Eb21haW5J
RCBvbiBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvICggc3VicmVzb3VyY2VEb21haW5JRCwg
dG9Eb21haW5JRCApOyJfczsKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVY
SVNUUyBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21fc3VicmVzb3VyY2VEb21haW5JRF9m
cm9tRG9tYWluSUQgb24gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucyAoIHN1YnJlc291
cmNlRG9tYWluSUQsIGZyb21Eb21haW5JRCApOyJfczsKK2NvbnN0ZXhwciBhdXRvIGNyZWF0ZVVu
aXF1ZUluZGV4T3BlcmF0aW5nRGF0ZXMgPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJ
U1RTIE9wZXJhdGluZ0RhdGVzX3llYXJfbW9udGhfbW9udGhEYXkgb24gT3BlcmF0aW5nRGF0ZXMg
KCB5ZWFyLCBtb250aCwgbW9udGhEYXkgKTsiX3M7CiAKIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1Q
cmV2YWxlbnRSZXNvdXJjZXNGb3JUZWxlbWV0cnkgPSAzOwogCkBAIC0yNjUsNyArMjc1LDggQEAg
c3RhdGljIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBjcmVhdGVUYWJsZVF1ZXJpZXMo
KQogICAgICAgICB7ICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIl9zLCBjcmVhdGVTdWJm
cmFtZVVuZGVyVG9wRnJhbWVEb21haW5zfSwKICAgICAgICAgeyAiU3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lRG9tYWlucyJfcywgY3JlYXRlU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWluc30s
CiAgICAgICAgIHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iX3MsIGNyZWF0ZVN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzVG99LAotICAgICAgICB7ICJTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c0Zyb20iX3MsIGNyZWF0ZVN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbX0KKyAg
ICAgICAgeyAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLCBjcmVhdGVTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb219LAorICAgICAgICB7ICJPcGVyYXRpbmdEYXRlcyJfcywg
Y3JlYXRlT3BlcmF0aW5nRGF0ZXN9CiAgICAgfSk7CiAgICAgCiAgICAgcmV0dXJuIGNyZWF0ZVRh
YmxlUXVlcmllczsKQEAgLTMxMyw2ICszMjQsMTEgQEAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJlc28K
ICAgICAsIG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQobV9kYXRhYmFzZSwgdW5pcXVl
UmVkaXJlY3RFeGlzdHNRdWVyeSkKICAgICAsIG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVt
ZW50KG1fZGF0YWJhc2UsIG9ic2VydmVkRG9tYWluc0V4aXN0c1F1ZXJ5KQogICAgICwgbV9yZW1v
dmVBbGxEYXRhU3RhdGVtZW50KG1fZGF0YWJhc2UsIHJlbW92ZUFsbERhdGFRdWVyeSkKKyAgICAs
IG1faW5zZXJ0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCBpbnNlcnRPcGVyYXRp
bmdEYXRlc1F1ZXJ5KQorICAgICwgbV9jb3VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50KG1fZGF0
YWJhc2UsIGNvdW50T3BlcmF0aW5nRGF0ZXNRdWVyeSkKKyAgICAsIG1fZ2V0TW9zdFJlY2VudE9w
ZXJhdGluZ0RhdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0Rh
dGVRdWVyeSkKKyAgICAsIG1fZGVsZXRlTGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVu
dChtX2RhdGFiYXNlLCBkZWxldGVMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVzUXVlcnkpCisgICAg
LCBtX2dldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCBnZXRM
ZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVRdWVyeSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25J
RCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTMzNiw2ICszNTIsOCBA
QCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmUoV2ViUmVzbwogICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAg
ICAgICB3ZWFrVGhpcy0+Y2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KCk7CiAgICAgfSk7CisK
KyAgICBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOwogfQogCiB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpvcGVuSVRQRGF0YWJhc2UoKQpA
QCAtNjM2LDYgKzY1NCwxMSBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpjcmVhdGVTY2hlbWEoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAor
ICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVPcGVyYXRpbmdEYXRlcykp
IHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIE9wZXJhdGluZ0RhdGVzIHRh
YmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIsIG1fZGF0YWJhc2UubGFzdEVycm9yKCksIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IAogICAgIGlmICghY3JlYXRlVW5pcXVlSW5kaWNlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTY4NCw2ICs3MDcsMTEgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cHJlcGFyZVN0YXRlbWVudHMoKQogICAgICAgICB8fCBtX3VuaXF1ZVJlZGlyZWN0
RXhpc3RzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV9vYnNl
cnZlZERvbWFpbnNFeGlzdHNTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSwogICAgICAg
ICB8fCBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSworICAg
ICAgICB8fCBtX2luc2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElU
RV9PSworICAgICAgICB8fCBtX2NvdW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2dldE1vc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9kZWxldGVMZWFzdFJl
Y2VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgbV9nZXRMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQucHJlcGFyZSgpICE9
IFNRTElURV9PSwogICAgICAgICApIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29y
aywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0
ZW1lbnRzIGZhaWxlZCB0byBwcmVwYXJlLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NU
UklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpAQCAtMjk5Niw2ICszMDI0LDEzOCBAQCBib29sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UoaW50IGRvbWFp
bklEKQogICAgIHJldHVybiBtX2xpbmtEZWNvcmF0aW9uRXhpc3RzU3RhdGVtZW50LmdldENvbHVt
bkludCgwKSB8fCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApIHx8
IG1fc3ViRnJhbWVFeGlzdHNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApIHx8IG1fc3ViUmVzb3Vy
Y2VFeGlzdHNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlz
dHNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3Rh
dGVtZW50LmdldENvbHVtbkludCgwKTsKIH0KIAorT3B0aW9uYWw8U2Vjb25kcz4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnN0YXRpc3RpY3NFcGlyYXRpb25UaW1lKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlmICh0aGlzLT5w
YXJhbWV0ZXJzKCkudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbikKKyAgICAgICAgcmV0dXJuIFdh
bGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpIC0gdGhpcy0+cGFyYW1ldGVycygpLnRp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb24udmFsdWUoKTsKKyAgICAKKyAgICBpZiAobV9jb3VudE9w
ZXJhdGluZ0RhdGVzU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzdGF0aXN0aWNzRXBpcmF0aW9uVGltZS4gY291bnRP
cGVyYXRpbmdEYXRlc1N0YXRlbWVudCBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJXtw
cml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQor
ICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIG9wZXJhdGluZ0RhdGVzU2l6ZSA9IG1fY291bnRPcGVy
YXRpbmdEYXRlc1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7CisgICAgcmVzZXRTdGF0ZW1lbnQo
bV9jb3VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50KTsKKworICAgIGlmIChvcGVyYXRpbmdEYXRl
c1NpemUgPj0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nKSB7CisgICAgICAgIGlmIChtX2dldExl
YXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgewor
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c3RhdGlzdGljc0VwaXJh
dGlvblRpbWUuIGdldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCBmYWlsZWQgdG8g
c3RlcCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gbGVhc3RS
ZWNlbnRPcGVyYXRpbmdEYXRlID0gT3BlcmF0aW5nRGF0ZShtX2dldExlYXN0UmVjZW50T3BlcmF0
aW5nRGF0ZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCksIG1fZ2V0TGVhc3RSZWNlbnRPcGVyYXRp
bmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgxKSwgbV9nZXRMZWFzdFJlY2VudE9wZXJhdGlu
Z0RhdGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDIpKTsKKworICAgICAgICByZXNldFN0YXRlbWVu
dChtX2dldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCk7CisgICAgICAgIHJldHVy
biBsZWFzdFJlY2VudE9wZXJhdGluZ0RhdGUuc2Vjb25kc1NpbmNlRXBvY2goKTsKKyAgICB9CisK
KyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgp
Cit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAobV9jb3VudE9w
ZXJhdGluZ0RhdGVzU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5l
Y2Vzc2FyeS4gY291bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudCBmYWlsZWQgdG8gc3RlcCwgZXJy
b3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgYXV0byBvcGVyYXRpbmdEYXRlc1NpemUgPSBtX2NvdW50T3BlcmF0aW5nRGF0
ZXNTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDApOworICAgIHJlc2V0U3RhdGVtZW50KG1fY291bnRP
cGVyYXRpbmdEYXRlc1N0YXRlbWVudCk7CisgICAgYXV0byB0b2RheSA9IE9wZXJhdGluZ0RhdGU6
OnRvZGF5KCk7CisKKyAgICBpZiAob3BlcmF0aW5nRGF0ZXNTaXplID4gMCkgeworICAgICAgICBp
ZiAobV9nZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRF
X1JPVykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Np
b25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY2x1ZGVU
b2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5LiBnZXRGaXJzdE9wZXJhdGluZ0RhdGVTdGF0
ZW1lbnQgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywg
bV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBhdXRvIG1vc3RS
ZWNlbnRPcGVyYXRpbmdEYXRlID0gT3BlcmF0aW5nRGF0ZShtX2dldE1vc3RSZWNlbnRPcGVyYXRp
bmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgwKSwgbV9nZXRNb3N0UmVjZW50T3BlcmF0aW5n
RGF0ZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMSksIG1fZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0Rh
dGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDIpKTsKKworICAgICAgICByZXNldFN0YXRlbWVudCht
X2dldE1vc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50KTsKKworICAgICAgICBpZiAodG9k
YXkgPD0gbW9zdFJlY2VudE9wZXJhdGluZ0RhdGUpCisgICAgICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgaW50IHJvd3NUb1BydW5lID0gb3BlcmF0aW5nRGF0ZXNTaXplIC0gb3BlcmF0aW5n
RGF0ZXNXaW5kb3dMb25nICsgMTsKKyAgICBpZiAocm93c1RvUHJ1bmUgPiAwKSB7CisgICAgICAg
IGlmIChtX2RlbGV0ZUxlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQuYmluZEludCgx
LCByb3dzVG9QcnVuZSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBtX2RlbGV0ZUxlYXN0
UmVjZW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGly
ZWQuIGRlbGV0ZUxlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQgZmFpbGVkIHRvIHN0
ZXAsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJy
b3JNc2coKSk7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQor
ICAgICAgICByZXNldFN0YXRlbWVudChtX2RlbGV0ZUxlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZXNT
dGF0ZW1lbnQpOworICAgIH0KKworICAgIGlmIChtX2luc2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1l
bnQuYmluZEludCgxLCB0b2RheS55ZWFyKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2lu
c2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuYmluZEludCgyLCB0b2RheS5tb250aCgpKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmJpbmRJ
bnQoMywgdG9kYXkubW9udGhEYXkoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0
T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQuIGluc2Vy
dE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7
cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXNldFN0YXRlbWVudChtX2luc2VydE9w
ZXJhdGluZ0RhdGVTdGF0ZW1lbnQpOworfQorCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpoYXNTdGF0aXN0aWNzRXhwaXJlZChXYWxsVGltZSBtb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uVGltZSwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cgb3BlcmF0aW5nRGF0ZXNXaW5k
b3cpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICB1bnNp
Z25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvd0luRGF5cyA9IDA7CisgICAgc3dpdGNoIChvcGVyYXRp
bmdEYXRlc1dpbmRvdykgeworICAgIGNhc2UgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6Okxvbmc6Cisg
ICAgICAgIG9wZXJhdGluZ0RhdGVzV2luZG93SW5EYXlzID0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dM
b25nOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9wZXJhdGluZ0RhdGVzV2luZG93OjpTaG9y
dDoKKyAgICAgICAgb3BlcmF0aW5nRGF0ZXNXaW5kb3dJbkRheXMgPSBvcGVyYXRpbmdEYXRlc1dp
bmRvd1Nob3J0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9wZXJhdGluZ0RhdGVzV2luZG93
OjpGb3JMaXZlT25UZXN0aW5nOgorICAgICAgICByZXR1cm4gV2FsbFRpbWU6Om5vdygpID4gbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgKyBvcGVyYXRpbmdUaW1lV2luZG93Rm9yTGl2ZU9u
VGVzdGluZzsKKyAgICBjYXNlIE9wZXJhdGluZ0RhdGVzV2luZG93OjpGb3JSZXByb1Rlc3Rpbmc6
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBpZiAobV9jb3VudE9wZXJh
dGluZ0RhdGVzU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdGF0aXN0aWNzRXhwaXJlZC4gY291bnRPcGVyYXRp
bmdEYXRlc1N0YXRlbWVudCBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRl
fXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgY29u
c3QgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNTaXplID0gbV9jb3VudE9wZXJhdGluZ0RhdGVzU3Rh
dGVtZW50LmdldENvbHVtbkludCgwKTsKKyAgICByZXNldFN0YXRlbWVudChtX2NvdW50T3BlcmF0
aW5nRGF0ZXNTdGF0ZW1lbnQpOworCisgICAgaWYgKG9wZXJhdGluZ0RhdGVzU2l6ZSA+PSBvcGVy
YXRpbmdEYXRlc1dpbmRvd0luRGF5cykgeworICAgICAgICBpZiAobV9nZXRMZWFzdFJlY2VudE9w
ZXJhdGluZ0RhdGVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdGF0aXN0aWNzRXhwaXJlZC4gZ2V0TGVh
c3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNz
YWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgYXV0byBsZWFzdFJlY2VudE9wZXJhdGluZ0RhdGUgPSBPcGVy
YXRpbmdEYXRlKG1fZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmdldENvbHVt
bkludCgwKSwgbV9nZXRMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuZ2V0Q29sdW1u
SW50KDEpLCBtX2dldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5nZXRDb2x1bW5J
bnQoMikpOworCisgICAgICAgIHJlc2V0U3RhdGVtZW50KG1fZ2V0TGVhc3RSZWNlbnRPcGVyYXRp
bmdEYXRlU3RhdGVtZW50KTsKKworICAgICAgICBpZiAoT3BlcmF0aW5nRGF0ZTo6ZnJvbVdhbGxU
aW1lKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKSA8IGxlYXN0UmVjZW50T3BlcmF0aW5n
RGF0ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIElmIHdlIGRv
bid0IG1lZXQgdGhlIHJlYWwgY3JpdGVyaWEgZm9yIGFuIGV4cGlyZWQgc3RhdGlzdGljLCBjaGVj
ayB0aGUgdXNlciBzZXR0aW5nIGZvciBhIHRpZ2h0ZXIgcmVzdHJpY3Rpb24gKG1haW5seSBmb3Ig
dGVzdGluZykuCisgICAgaWYgKHRoaXMtPnBhcmFtZXRlcnMoKS50aW1lVG9MaXZlVXNlckludGVy
YWN0aW9uKSB7CisgICAgICAgIGlmIChXYWxsVGltZTo6bm93KCkgPiBtb3N0UmVjZW50VXNlcklu
dGVyYWN0aW9uVGltZSArIHRoaXMtPnBhcmFtZXRlcnMoKS50aW1lVG9MaXZlVXNlckludGVyYWN0
aW9uLnZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggYjQ3
ZDUyZGYyYjRhNWU4ZGU4NzE2NDEyZTFhYWQ1MzkwN2FkM2Q5Yi4uODJlZjBjMTFkNzk1YmUxY2Iw
ODQ5ZDRlMjYzOGFiNzY5Y2UxYzc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTE0Myw2ICsxNDMsMTEgQEAgcHVibGljOgog
ICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBjaGVja0Zvck1pc3NpbmdUYWJsZXNJblNjaGVt
YSgpOwogCiBwcml2YXRlOgorICAgIHZvaWQgaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZO
ZWNlc3NhcnkoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFyT3BlcmF0aW5nRGF0ZXMoKSBvdmVy
cmlkZSB7IH0KKyAgICBib29sIGhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1lIG1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRpbmdEYXRlc1dpbmRvdykgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gc3RhdGlzdGljc0VwaXJhdGlvblRpbWUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICAKICAgICB2b2lkIG9wZW5JVFBEYXRhYmFzZSgpOwogICAgIHZvaWQg
YWRkTWlzc2luZ1RhYmxlc0lmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCBlbmFibGVGb3JlaWduS2V5
cygpOwpAQCAtMjczLDYgKzI3OCwxMSBAQCBwcml2YXRlOgogICAgIG11dGFibGUgV2ViQ29yZTo6
U1FMaXRlU3RhdGVtZW50IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNTdGF0ZW1lbnQ7CiAgICAgbXV0
YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9vYnNlcnZlZERvbWFpbnNFeGlzdHNTdGF0
ZW1lbnQ7CiAgICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9yZW1vdmVBbGxE
YXRhU3RhdGVtZW50OworICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1faW5z
ZXJ0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudDsKKyAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudCBtX2NvdW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBXZWJD
b3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9nZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVu
dDsKKyAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2RlbGV0ZUxlYXN0UmVj
ZW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVT
dGF0ZW1lbnQgbV9nZXRMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQ7CiAgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgYm9vbCBtX2lzTmV3UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlRmlsZSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCBhZjUwMDQxZDIzN2I0MGM3
NmQ1YjRkMWM3NjA4ODk1M2EzYWY4ZjU2Li4zYTM0Y2QxMDUzMjZjZTZjMjU2MTE0YjEzNmYzOWMx
OTliYTJiNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcApAQCAtODAsNiArODAsOCBAQCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZShXZWJSZXNvdXJjZQog
ICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICB3ZWFrVGhpcy0+Y2FsY3VsYXRlQW5k
U3VibWl0VGVsZW1ldHJ5KCk7CiAgICAgfSk7CisKKyAgICBpbmNsdWRlVG9kYXlBc09wZXJhdGlu
Z0RhdGVJZk5lY2Vzc2FyeSgpOwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZTo6aXNFbXB0eSgpIGNvbnN0CkBAIC0xMDgxLDYgKzEwODMsOTYgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShj
b25zdCBSZWdpc3RyYWIKICAgICBzZXRQcmV2YWxlbnRSZXNvdXJjZShyZXNvdXJjZVN0YXRpc3Rp
YywgUmVzb3VyY2VMb2FkUHJldmFsZW5jZTo6VmVyeUhpZ2gpOwogfQogCitPcHRpb25hbDxTZWNv
bmRzPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnN0YXRpc3RpY3NFcGlyYXRp
b25UaW1lKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAg
IGlmICh0aGlzLT5wYXJhbWV0ZXJzKCkudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbikKKyAgICAg
ICAgcmV0dXJuIFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpIC0gdGhpcy0+cGFy
YW1ldGVycygpLnRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24udmFsdWUoKTsKKworICAgIGlmICht
X29wZXJhdGluZ0RhdGVzLnNpemUoKSA+PSBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcpCisgICAg
ICAgIHJldHVybiBtX29wZXJhdGluZ0RhdGVzLmZpcnN0KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsK
KworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK1ZlY3RvcjxPcGVyYXRpbmdEYXRlPiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Om1lcmdlT3BlcmF0aW5nRGF0ZXMoY29u
c3QgVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiBleGlzdGluZ0RhdGVzLCBWZWN0b3I8T3BlcmF0aW5n
RGF0ZT4mJiBuZXdEYXRlcykKK3sKKyAgICBpZiAoZXhpc3RpbmdEYXRlcy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBXVEZNb3ZlKG5ld0RhdGVzKTsKKworICAgIFZlY3RvcjxPcGVyYXRpbmdE
YXRlPiBtZXJnZWREYXRlcyhleGlzdGluZ0RhdGVzLnNpemUoKSArIG5ld0RhdGVzLnNpemUoKSk7
CisKKyAgICAvLyBNZXJnZSB0aGUgdHdvIHNvcnRlZCB2ZWN0b3JzIG9mIGRhdGVzLgorICAgIHN0
ZDo6bWVyZ2UoZXhpc3RpbmdEYXRlcy5iZWdpbigpLCBleGlzdGluZ0RhdGVzLmVuZCgpLCBuZXdE
YXRlcy5iZWdpbigpLCBuZXdEYXRlcy5lbmQoKSwgbWVyZ2VkRGF0ZXMuYmVnaW4oKSk7CisgICAg
Ly8gUmVtb3ZlIGR1cGxpY2F0ZSBkYXRlcy4KKyAgICByZW1vdmVSZXBlYXRlZEVsZW1lbnRzKG1l
cmdlZERhdGVzKTsKKworICAgIC8vIERyb3Agb2xkIGRhdGVzIHVudGlsIHRoZSBWZWN0b3Igc2l6
ZSByZWFjaGVzIG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZy4KKyAgICB3aGlsZSAobWVyZ2VkRGF0
ZXMuc2l6ZSgpID4gb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nKQorICAgICAgICBtZXJnZWREYXRl
cy5yZW1vdmUoMCk7CisKKyAgICByZXR1cm4gbWVyZ2VkRGF0ZXM7Cit9CisKK3ZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjptZXJnZU9wZXJhdGluZ0RhdGVzKFZlY3RvcjxP
cGVyYXRpbmdEYXRlPiYmIG5ld0RhdGVzKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOworCisgICAgbV9vcGVyYXRpbmdEYXRlcyA9IG1lcmdlT3BlcmF0aW5nRGF0ZXMobV9vcGVy
YXRpbmdEYXRlcywgV1RGTW92ZShuZXdEYXRlcykpOworfQorCit2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3Nh
cnkoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgYXV0byB0b2Rh
eSA9IE9wZXJhdGluZ0RhdGU6OnRvZGF5KCk7CisgICAgaWYgKCFtX29wZXJhdGluZ0RhdGVzLmlz
RW1wdHkoKSAmJiB0b2RheSA8PSBtX29wZXJhdGluZ0RhdGVzLmxhc3QoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgd2hpbGUgKG1fb3BlcmF0aW5nRGF0ZXMuc2l6ZSgpID49IG9wZXJhdGluZ0Rh
dGVzV2luZG93TG9uZykKKyAgICAgICAgbV9vcGVyYXRpbmdEYXRlcy5yZW1vdmUoMCk7CisKKyAg
ICBtX29wZXJhdGluZ0RhdGVzLmFwcGVuZCh0b2RheSk7Cit9CisKK2Jvb2wgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdGF0aXN0aWNzRXhwaXJlZChXYWxsVGltZSBtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cgb3BlcmF0aW5n
RGF0ZXNXaW5kb3cpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisK
KyAgICB1bnNpZ25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvd0luRGF5cyA9IDA7CisgICAgc3dpdGNo
IChvcGVyYXRpbmdEYXRlc1dpbmRvdykgeworICAgIGNhc2UgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6
Okxvbmc6CisgICAgICAgIG9wZXJhdGluZ0RhdGVzV2luZG93SW5EYXlzID0gb3BlcmF0aW5nRGF0
ZXNXaW5kb3dMb25nOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9wZXJhdGluZ0RhdGVzV2lu
ZG93OjpTaG9ydDoKKyAgICAgICAgb3BlcmF0aW5nRGF0ZXNXaW5kb3dJbkRheXMgPSBvcGVyYXRp
bmdEYXRlc1dpbmRvd1Nob3J0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIE9wZXJhdGluZ0Rh
dGVzV2luZG93OjpGb3JMaXZlT25UZXN0aW5nOgorICAgICAgICByZXR1cm4gV2FsbFRpbWU6Om5v
dygpID4gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgKyBvcGVyYXRpbmdUaW1lV2luZG93
Rm9yTGl2ZU9uVGVzdGluZzsKKyAgICBjYXNlIE9wZXJhdGluZ0RhdGVzV2luZG93OjpGb3JSZXBy
b1Rlc3Rpbmc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChtX29wZXJh
dGluZ0RhdGVzLnNpemUoKSA+PSBvcGVyYXRpbmdEYXRlc1dpbmRvd0luRGF5cykgeworICAgICAg
ICBpZiAoT3BlcmF0aW5nRGF0ZTo6ZnJvbVdhbGxUaW1lKG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b25UaW1lKSA8IG1fb3BlcmF0aW5nRGF0ZXMuZmlyc3QoKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIC8vIElmIHdlIGRvbid0IG1lZXQgdGhlIHJlYWwgY3JpdGVyaWEg
Zm9yIGFuIGV4cGlyZWQgc3RhdGlzdGljLCBjaGVjayB0aGUgdXNlciBzZXR0aW5nIGZvciBhIHRp
Z2h0ZXIgcmVzdHJpY3Rpb24gKG1haW5seSBmb3IgdGVzdGluZykuCisgICAgaWYgKHRoaXMtPnBh
cmFtZXRlcnMoKS50aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKSB7CisgICAgICAgIGlmIChXYWxs
VGltZTo6bm93KCkgPiBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSArIHRoaXMtPnBhcmFt
ZXRlcnMoKS50aW1lVG9MaXZlVXNlckludGVyYWN0aW9uLnZhbHVlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdGF0aXN0aWNzRXhwaXJlZChjb25zdCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYywgT3BlcmF0aW5nRGF0ZXNX
aW5kb3cgb3BlcmF0aW5nRGF0ZXNXaW5kb3cpIGNvbnN0Cit7CisgICAgcmV0dXJuIGhhc1N0YXRp
c3RpY3NFeHBpcmVkKHJlc291cmNlU3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25U
aW1lLCBvcGVyYXRpbmdEYXRlc1dpbmRvdyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuaAppbmRleCAyNDZlNzY3MWVhMTg1MDUyOTU3ZTMyMjBmN2JmMTFjNWUyNGIwOGI3Li5iODA5
Njk0NjQwNmNkZDc2NWIwZDJmNzNhYjVlOWViNWY5ZDk1ZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCkBAIC0xMTUsNiArMTE1LDE1IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZURhdGFGb3JEb21haW4oY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGluY2x1ZGVUb2RheUFzT3Bl
cmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7CisgICAgY29uc3QgVmVjdG9yPE9wZXJh
dGluZ0RhdGU+JiBvcGVyYXRpbmdEYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nRGF0
ZXM7IH0KKyAgICB2b2lkIGNsZWFyT3BlcmF0aW5nRGF0ZXMoKSBvdmVycmlkZSB7IG1fb3BlcmF0
aW5nRGF0ZXMuY2xlYXIoKTsgfQorICAgIHZvaWQgbWVyZ2VPcGVyYXRpbmdEYXRlcyhWZWN0b3I8
T3BlcmF0aW5nRGF0ZT4mJik7CisgICAgYm9vbCBoYXNTdGF0aXN0aWNzRXhwaXJlZChjb25zdCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cpIGNvbnN0OworICAg
IHN0YXRpYyBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbWVyZ2VPcGVyYXRpbmdEYXRlcyhjb25zdCBW
ZWN0b3I8T3BlcmF0aW5nRGF0ZT4mIGV4aXN0aW5nRGF0ZXMsIFZlY3RvcjxPcGVyYXRpbmdEYXRl
PiYmIG5ld0RhdGVzKTsKKyAgICBib29sIGhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1lIG1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRpbmdEYXRlc1dpbmRvdykgY29uc3Qg
b3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gc3RhdGlzdGljc0VwaXJhdGlvblRpbWUo
KSBjb25zdCBvdmVycmlkZTsKKwogICAgIHN0YXRpYyBib29sIHNob3VsZEJsb2NrQW5kS2VlcENv
b2tpZXMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHN0YXRpYyBib29sIHNo
b3VsZEJsb2NrQW5kUHVyZ2VDb29raWVzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsK
ICAgICBzdGF0aWMgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIGhhc1VzZXJH
cmFudGVkU3RvcmFnZUFjY2Vzc1Rocm91Z2hQcm9tcHQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CkBAIC0xMzcsNiArMTQ2LDcgQEAgcHJp
dmF0ZToKIAogICAgIFdlYWtQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlPiBtX3BlcnNpc3RlbnRTdG9yYWdlOwogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOworICAgIFZl
Y3RvcjxPcGVyYXRpbmdEYXRlPiBtX29wZXJhdGluZ0RhdGVzOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGVyc2lzdGVudFN0b3JhZ2UuY3BwCmluZGV4IGRkOTYzOGZmODE3ZmI3NjEwNjg3NjQ1NDgwMWMz
NDNhM2M2OThkNmQuLjczZGFlNzA2YmU5M2E0YmM5M2UwYWViNGRmMzlmMzdhZmE1NzNkMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2UuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnBvcHVsYXRlTWVtb3J5U3RvcmVGcm9tRGlzayhDb21wbGUK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIERlYnVnIG1vZGUgaGFzIGEgcHJlcG91
bGF0ZWQgbWVtb3J5IHN0b3JlLgorICAgIC8vIERlYnVnIG1vZGUgaGFzIGEgcHJlcG9wdWxhdGVk
IG1lbW9yeSBzdG9yZS4KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fbWVtb3J5U3RvcmUuaXNF
bXB0eSgpIHx8IG1fbWVtb3J5U3RvcmUuaXNEZWJ1Z01vZGVFbmFibGVkKCksICJUaGlzIGlzIHRo
ZSBpbml0aWFsIGltcG9ydCBzbyB0aGUgc3RvcmUgc2hvdWxkIGJlIGVtcHR5Iik7CiAgICAgbV9t
ZW1vcnlTdG9yZS5tZXJnZVdpdGhEYXRhRnJvbURlY29kZXIoKmRlY29kZXIpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGUzNGM1ZTk2M2NkM2Ni
ZDA1ZGFmMjY2YjM5M2M3OTI4OWIxM2VkMTAuLjQ3OWY1MTYxODU5YTg4NjM4YThkMjhlNTA4Yzk1
ZDE4ZjUxNDg4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwCkBAIC01Miw5ICs1Miw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIGNvbnN0ZXhwciBTZWNvbmRzIG1pbmltdW1TdGF0aXN0aWNzUHJvY2Vzc2lu
Z0ludGVydmFsIHsgNV9zIH07Ci1jb25zdGV4cHIgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5k
b3dMb25nIHsgMzAgfTsKLWNvbnN0ZXhwciB1bnNpZ25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvd1No
b3J0IHsgNyB9OwotY29uc3RleHByIFNlY29uZHMgb3BlcmF0aW5nVGltZVdpbmRvd0ZvckxpdmVP
blRlc3RpbmcgeyAxX2ggfTsKIAogc3RhdGljIFN0cmluZyBkb21haW5zVG9TdHJpbmcoY29uc3Qg
VmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykKIHsKQEAgLTEzMyw4ICsxMzAsNiBA
QCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aQogICAgICwgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0
KHNob3VsZEluY2x1ZGVMb2NhbGhvc3QpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7Ci0KLSAgICBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOwogfQog
CiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6On5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUoKQpAQCAtNDUxLDk3ICs0NDYsNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6dXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5zKGNvbnN0IFJlZ2lzdHJhYgogICAgICAg
ICB9KTsKICAgICB9KTsKIH0KLSAgICAKLQotT3B0aW9uYWw8U2Vjb25kcz4gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0aWNzRXBpcmF0aW9uVGltZSgpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAobV9wYXJhbWV0ZXJzLnRpbWVU
b0xpdmVVc2VySW50ZXJhY3Rpb24pCi0gICAgICAgIHJldHVybiBXYWxsVGltZTo6bm93KCkuc2Vj
b25kc1NpbmNlRXBvY2goKSAtIG1fcGFyYW1ldGVycy50aW1lVG9MaXZlVXNlckludGVyYWN0aW9u
LnZhbHVlKCk7Ci0gICAgCi0gICAgaWYgKG1fb3BlcmF0aW5nRGF0ZXMuc2l6ZSgpID49IG9wZXJh
dGluZ0RhdGVzV2luZG93TG9uZykKLSAgICAgICAgcmV0dXJuIG1fb3BlcmF0aW5nRGF0ZXMuZmly
c3QoKS5zZWNvbmRzU2luY2VFcG9jaCgpOwotICAgIAotICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci19Ci0KLVZlY3RvcjxPcGVyYXRpbmdEYXRlPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
Om1lcmdlT3BlcmF0aW5nRGF0ZXMoY29uc3QgVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiBleGlzdGlu
Z0RhdGVzLCBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4mJiBuZXdEYXRlcykKLXsKLSAgICBpZiAoZXhp
c3RpbmdEYXRlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBXVEZNb3ZlKG5ld0RhdGVzKTsK
LSAgICAKLSAgICBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbWVyZ2VkRGF0ZXMoZXhpc3RpbmdEYXRl
cy5zaXplKCkgKyBuZXdEYXRlcy5zaXplKCkpOwotICAgIAotICAgIC8vIE1lcmdlIHRoZSB0d28g
c29ydGVkIHZlY3RvcnMgb2YgZGF0ZXMuCi0gICAgc3RkOjptZXJnZShleGlzdGluZ0RhdGVzLmJl
Z2luKCksIGV4aXN0aW5nRGF0ZXMuZW5kKCksIG5ld0RhdGVzLmJlZ2luKCksIG5ld0RhdGVzLmVu
ZCgpLCBtZXJnZWREYXRlcy5iZWdpbigpKTsKLSAgICAvLyBSZW1vdmUgZHVwbGljYXRlIGRhdGVz
LgotICAgIHJlbW92ZVJlcGVhdGVkRWxlbWVudHMobWVyZ2VkRGF0ZXMpOwotICAgIAotICAgIC8v
IERyb3Agb2xkIGRhdGVzIHVudGlsIHRoZSBWZWN0b3Igc2l6ZSByZWFjaGVzIG9wZXJhdGluZ0Rh
dGVzV2luZG93TG9uZy4KLSAgICB3aGlsZSAobWVyZ2VkRGF0ZXMuc2l6ZSgpID4gb3BlcmF0aW5n
RGF0ZXNXaW5kb3dMb25nKQotICAgICAgICBtZXJnZWREYXRlcy5yZW1vdmUoMCk7Ci0gICAgCi0g
ICAgcmV0dXJuIG1lcmdlZERhdGVzOwotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6bWVyZ2VPcGVyYXRpbmdEYXRlcyhWZWN0b3I8T3BlcmF0aW5nRGF0ZT4mJiBuZXdEYXRl
cykKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIG1fb3BlcmF0aW5n
RGF0ZXMgPSBtZXJnZU9wZXJhdGluZ0RhdGVzKG1fb3BlcmF0aW5nRGF0ZXMsIFdURk1vdmUobmV3
RGF0ZXMpKTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmluY2x1ZGVU
b2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLQotICAgIGF1dG8gdG9kYXkgPSBPcGVyYXRpbmdEYXRlOjp0b2RheSgpOwot
ICAgIGlmICghbV9vcGVyYXRpbmdEYXRlcy5pc0VtcHR5KCkgJiYgdG9kYXkgPD0gbV9vcGVyYXRp
bmdEYXRlcy5sYXN0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHdoaWxlIChtX29wZXJhdGlu
Z0RhdGVzLnNpemUoKSA+PSBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcpCi0gICAgICAgIG1fb3Bl
cmF0aW5nRGF0ZXMucmVtb3ZlKDApOwotCi0gICAgbV9vcGVyYXRpbmdEYXRlcy5hcHBlbmQodG9k
YXkpOwotfQotCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RhdGlzdGlj
c0V4cGlyZWQoV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUsIE9wZXJhdGlu
Z0RhdGVzV2luZG93IG9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdAotewotICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5kb3dJ
bkRheXMgPSAwOwotICAgIHN3aXRjaCAob3BlcmF0aW5nRGF0ZXNXaW5kb3cpIHsKLSAgICBjYXNl
IE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nOgotICAgICAgICBvcGVyYXRpbmdEYXRlc1dpbmRv
d0luRGF5cyA9IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZzsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6U2hvcnQ6Ci0gICAgICAgIG9wZXJhdGluZ0RhdGVz
V2luZG93SW5EYXlzID0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dTaG9ydDsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6Rm9yTGl2ZU9uVGVzdGluZzoKLSAgICAg
ICAgcmV0dXJuIFdhbGxUaW1lOjpub3coKSA+IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1l
ICsgb3BlcmF0aW5nVGltZVdpbmRvd0ZvckxpdmVPblRlc3Rpbmc7Ci0gICAgY2FzZSBPcGVyYXRp
bmdEYXRlc1dpbmRvdzo6Rm9yUmVwcm9UZXN0aW5nOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci0KLSAgICBpZiAobV9vcGVyYXRpbmdEYXRlcy5zaXplKCkgPj0gb3BlcmF0aW5nRGF0ZXNX
aW5kb3dJbkRheXMpIHsKLSAgICAgICAgaWYgKE9wZXJhdGluZ0RhdGU6OmZyb21XYWxsVGltZSht
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkgPCBtX29wZXJhdGluZ0RhdGVzLmZpcnN0KCkp
Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgLy8gSWYgd2UgZG9u
J3QgbWVldCB0aGUgcmVhbCBjcml0ZXJpYSBmb3IgYW4gZXhwaXJlZCBzdGF0aXN0aWMsIGNoZWNr
IHRoZSB1c2VyIHNldHRpbmcgZm9yIGEgdGlnaHRlciByZXN0cmljdGlvbiAobWFpbmx5IGZvciB0
ZXN0aW5nKS4KLSAgICBpZiAobV9wYXJhbWV0ZXJzLnRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24p
IHsKLSAgICAgICAgaWYgKFdhbGxUaW1lOjpub3coKSA+IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b25UaW1lICsgbV9wYXJhbWV0ZXJzLnRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24udmFsdWUoKSkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdGF0aXN0aWNzRXhw
aXJlZChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYywgT3Bl
cmF0aW5nRGF0ZXNXaW5kb3cgb3BlcmF0aW5nRGF0ZXNXaW5kb3cpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIGhhc1N0YXRpc3RpY3NFeHBpcmVkKHJlc291cmNlU3RhdGlzdGljLm1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb25UaW1lLCBvcGVyYXRpbmdEYXRlc1dpbmRvdyk7Ci19CiAKIGJvb2wgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRFbmZvcmNlU2FtZVNpdGVTdHJpY3RGb3JTcGVj
aWZpY0RvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDJkYmU5ZTUwYmFlNDcw
ZjljODEwNWM1MmM5ZjUwM2FmYmRlZjc0NjguLmQ1MWI2Y2Y0MDk2NWQ4NTQ2NjU3YTNkYmRiYTkw
Y2Q5ZDVjOTU2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
QEAgLTU5LDIyICs1OSwzMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE9wZXJhdGluZ0RhdGUgZnJv
bVdhbGxUaW1lKFdhbGxUaW1lKTsKICAgICBzdGF0aWMgT3BlcmF0aW5nRGF0ZSB0b2RheSgpOwog
ICAgIFNlY29uZHMgc2Vjb25kc1NpbmNlRXBvY2goKSBjb25zdDsKKyAgICBpbnQgeWVhcigpIGNv
bnN0IHsgcmV0dXJuIG1feWVhcjsgfQorICAgIGludCBtb250aCgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9udGg7IH0KKyAgICBpbnQgbW9udGhEYXkoKSBjb25zdCB7IHJldHVybiBtX21vbnRoRGF5OyB9
CisKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3BlcmF0aW5nRGF0ZSYgb3RoZXIpIGNvbnN0
OwogICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IE9wZXJhdGluZ0RhdGUmIG90aGVyKSBjb25zdDsK
ICAgICBib29sIG9wZXJhdG9yPD0oY29uc3QgT3BlcmF0aW5nRGF0ZSYgb3RoZXIpIGNvbnN0Owog
ICAgIAotcHJpdmF0ZToKICAgICBPcGVyYXRpbmdEYXRlKGludCB5ZWFyLCBpbnQgbW9udGgsIGlu
dCBtb250aERheSkKICAgICAgICAgOiBtX3llYXIoeWVhcikKICAgICAgICAgLCBtX21vbnRoKG1v
bnRoKQogICAgICAgICAsIG1fbW9udGhEYXkobW9udGhEYXkpCiAgICAgeyB9CiAKK3ByaXZhdGU6
CiAgICAgaW50IG1feWVhciB7IDAgfTsKICAgICBpbnQgbV9tb250aCB7IDAgfTsgLy8gWzAsIDEx
XS4KICAgICBpbnQgbV9tb250aERheSB7IDAgfTsgLy8gWzEsIDMxXS4KIH07CiAKK2NvbnN0ZXhw
ciB1bnNpZ25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcgeyAzMCB9OworY29uc3RleHByIHVu
c2lnbmVkIG9wZXJhdGluZ0RhdGVzV2luZG93U2hvcnQgeyA3IH07Citjb25zdGV4cHIgU2Vjb25k
cyBvcGVyYXRpbmdUaW1lV2luZG93Rm9yTGl2ZU9uVGVzdGluZyB7IDFfaCB9OworCiBlbnVtIGNs
YXNzIE9wZXJhdGluZ0RhdGVzV2luZG93IDogdWludDhfdCB7IExvbmcsIFNob3J0LCBGb3JMaXZl
T25UZXN0aW5nLCBGb3JSZXByb1Rlc3RpbmcgfTsKIGVudW0gY2xhc3MgQ29va2llQWNjZXNzIDog
dWludDhfdCB7IENhbm5vdFJlcXVlc3QsIEJhc2VkT25Db29raWVQb2xpY3ksIE9ubHlJZkdyYW50
ZWQgfTsKIApAQCAtMTA1LDcgKzExMyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUNvb2tp
ZUJsb2NraW5nRm9yRG9tYWlucyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2ll
c0ZvciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhckJsb2Nr
aW5nU3RhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFp
bnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKLSAgICB2b2lkIGluY2x1ZGVUb2Rh
eUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCBwcm9jZXNzU3RhdGlzdGlj
c0FuZERhdGFSZWNvcmRzKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xhc3NpZnlQcmV2YWxlbnRS
ZXNvdXJjZXMoKSA9IDA7CkBAIC0xNDgsNyArMTU1LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
TWF4U3RhdGlzdGljc0VudHJpZXMoc2l6ZV90IG1heGltdW1FbnRyeUNvdW50KTsKICAgICB2b2lk
IHNldFBydW5lRW50cmllc0Rvd25UbyhzaXplX3QgcHJ1bmVUYXJnZXRDb3VudCk7CiAgICAgdm9p
ZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoKTsKLSAgICBPcHRpb25hbDxTZWNvbmRz
PiBzdGF0aXN0aWNzRXBpcmF0aW9uVGltZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGNh
bGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpIGNvbnN0ID0gMDsKIApAQCAtMTk2LDE4ICsyMDIs
MTkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc01lbW9yeVN0b3JlKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNEYXRhYmFzZVN0b3JlKCljb25zdCB7
IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCB2b2lkIGluY2x1ZGVUb2RheUFzT3BlcmF0
aW5nRGF0ZUlmTmVjZXNzYXJ5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGVhck9wZXJhdGlu
Z0RhdGVzKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNTdGF0aXN0aWNzRXhwaXJlZChXYWxs
VGltZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsPFNlY29uZHM+IHN0YXRpc3RpY3NFcGly
YXRpb25UaW1lKCkgY29uc3QgPSAwOworICAgIAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyB1bnNp
Z25lZCBjb21wdXRlSW1wb3J0YW5jZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJik7Ci0gICAgc3RhdGljIFZlY3RvcjxPcGVyYXRpbmdEYXRlPiBtZXJnZU9wZXJhdGluZ0Rh
dGVzKGNvbnN0IFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYgZXhpc3RpbmdEYXRlcywgVmVjdG9yPE9w
ZXJhdGluZ0RhdGU+JiYgbmV3RGF0ZXMpOwogCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIFdvcmtRdWV1ZSYsIFNob3VsZElu
Y2x1ZGVMb2NhbGhvc3QpOwogICAgIAogICAgIGJvb2wgZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQo
KSBjb25zdCB7IHJldHVybiBtX2RhdGFSZWNvcmRzQmVpbmdSZW1vdmVkOyB9CiAKLSAgICBib29s
IGhhc1N0YXRpc3RpY3NFeHBpcmVkKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBPcGVy
YXRpbmdEYXRlc1dpbmRvdykgY29uc3Q7Ci0gICAgYm9vbCBoYXNTdGF0aXN0aWNzRXhwaXJlZChX
YWxsVGltZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgT3BlcmF0aW5nRGF0ZXNXaW5k
b3cpIGNvbnN0OwogICAgIHZvaWQgc2NoZWR1bGVTdGF0aXN0aWNzUHJvY2Vzc2luZ1JlcXVlc3RJ
Zk5lY2Vzc2FyeSgpOwotICAgIHZvaWQgbWVyZ2VPcGVyYXRpbmdEYXRlcyhWZWN0b3I8T3BlcmF0
aW5nRGF0ZT4mJik7CiAgICAgYm9vbCBzaG91bGRFbmZvcmNlU2FtZVNpdGVTdHJpY3RGb3JTcGVj
aWZpY0RvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OwogICAgIHZpcnR1YWwg
VmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JEZWJ1
Z01vZGUoKSA9IDA7CiAgICAgdmlydHVhbCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVz
dHJpY3RXZWJzaXRlRGF0YUZvciByZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RX
ZWJzaXRlRGF0YUZvcigpID0gMDsKQEAgLTIzNyw4ICsyNDQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIGJvb2wgaXNSdW5uaW5nVGVzdCB7IGZhbHNlIH07CiAgICAgfTsKICAgICBjb25zdCBQYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9Ci0gICAg
Y29uc3QgVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiBvcGVyYXRpbmdEYXRlcygpIGNvbnN0IHsgcmV0
dXJuIG1fb3BlcmF0aW5nRGF0ZXM7IH0KLSAgICB2b2lkIGNsZWFyT3BlcmF0aW5nRGF0ZXMoKSB7
IG1fb3BlcmF0aW5nRGF0ZXMuY2xlYXIoKTsgfQogICAgIFdhbGxUaW1lJiBlbmRPZkdyYW5kZmF0
aGVyaW5nVGltZXN0YW1wKCkgeyByZXR1cm4gbV9lbmRPZkdyYW5kZmF0aGVyaW5nVGltZXN0YW1w
OyB9CiAgICAgY29uc3QgV2FsbFRpbWUmIGVuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAoKSBj
b25zdCB7IHJldHVybiBtX2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXA7IH0KICAgICB2b2lk
IHNldEVuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAoY29uc3QgV2FsbFRpbWUmIGdyYW5kZmF0
aGVyaW5nVGltZSkgeyBtX2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAgPSBncmFuZGZhdGhl
cmluZ1RpbWU7IH0KQEAgLTI3Nyw3ICsyODIsNiBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8dWlu
dDY0X3Q+IG1fYWN0aXZlUGx1Z2luVG9rZW5zOwogI2VuZGlmCiAgICAgUGFyYW1ldGVycyBtX3Bh
cmFtZXRlcnM7Ci0gICAgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1fb3BlcmF0aW5nRGF0ZXM7CiAg
ICAgV2FsbFRpbWUgbV9lbmRPZkdyYW5kZmF0aGVyaW5nVGltZXN0YW1wOwogICAgIFJlZ2lzdHJh
YmxlRG9tYWluIG1fZGVidWdNYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsKICAgICBNb25vdG9uaWNU
aW1lIG1fbGFzdFRpbWVEYXRhUmVjb3Jkc1dlcmVSZW1vdmVkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399681</attachid>
            <date>2020-05-18 16:13:16 -0700</date>
            <delta_ts>2020-05-19 15:50:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212034-20200518161315.patch</filename>
            <type>text/plain</type>
            <size>125806</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE1YTFmYTlhYjRiNTg5OGY0
MWM3OTY5NmY3N2IxNGY2MDMwODU5YmIuLjM3N2UxMDExMjVhNzNjYjU1MGRlN2NkYjg0MjU0Y2Jk
MmVkYTFhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQgQEAKKzIwMjAtMDUtMTggIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBvcGVy
YXRpbmcgZGF0ZXMgaW4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjAzNAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjMzNDkyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtZGF0YWJhc2UuaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJh
dGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJz
aXRlLWRhdGEtcmVtb3ZlZC1kYXRhYmFzZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEt
cmVtb3ZlZC5odG1sCisKKyAgICAgICAgUGF0Y2ggdG8gc3VwcG9ydCBPcGVyYXRpbmcgRGF0ZXMg
aW4gdGhlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLgorICAgICAgICBNb3Zl
cyBmdW5jdGlvbnMgb3V0IG9mIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBub3cgdGhhdCBl
YWNoIHN0b3JlCisgICAgICAgIG5lZWRzIGl0cyBvd24gaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgQWRkcyBhIG5ldyBmdW5jdGlvbiBmb3IgdGVzdGluZyB3aGljaCBpbnNlcnRzIGFuIGV4cGly
ZWQgc3RhdGlzdGljCisgICAgICAgIGFuZCBtYWtlcyBzdXJlIHRoZSBwcm9wZXIgYmVoYXZpb3Ig
b2NjdXJzIGRlcGVuZGluZyBvbiBhZGRpdGlvbmFsCisgICAgICAgIHBhcmFtZXRlcnMuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlVGFibGVRdWVyaWVzKToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNyZWF0ZVNjaGVtYSk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVwYXJlU3Rh
dGVtZW50cyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmU6OnN0YXRpc3RpY3NFeHBpcmF0aW9uVGltZSBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6bWVyZ2VPcGVy
YXRpbmdEYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkpOgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0YXRpc3Rp
Y3NFeHBpcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6cG9wdWxhdGVNZW1vcnlTdG9yZUZy
b21EaXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3Jkcyk6CisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc1N0YXRpc3Rp
Y3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5zKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0aWNzRXBpcmF0aW9uVGltZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6bWVyZ2VPcGVyYXRpbmdEYXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZO
ZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
OgorICAgICAgICAoV2ViS2l0OjpPcGVyYXRpbmdEYXRlOjp5ZWFyIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6T3BlcmF0aW5nRGF0ZTo6bW9udGggY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpP
cGVyYXRpbmdEYXRlOjptb250aERheSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6b3BlcmF0aW5nRGF0ZXMgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFy
T3BlcmF0aW5nRGF0ZXMpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGlj
Rm9yVGVzdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbnNlcnRF
eHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NFeHBpcmVk
U3RhdGlzdGljKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Omluc2VydEV4cGlyZWRT
dGF0aXN0aWNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjptZXJnZVN0
YXRpc3RpY0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpp
bnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKwogMjAyMC0wNS0xMiAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmV3b3JrIGRy
YWcgYW5kIGRyb3AgaGFuZGxpbmcgaW4gcHJlcGFyYXRpb24gZm9yIEdUSzQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDMx
ZTkxOTk4NjU4NjAwMjMxZDY0Y2JjMDQ5MzAxY2M1YzNhZjViNDguLjAyZTM5Y2FkNDA4YjFhNmUx
ZjgyMWQ5OTg3MTljM2YyN2U2ZjUyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtNzIsNiArNzIsNyBAQCBjb25zdGV4
cHIgYXV0byBjb3VudFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZVF1ZXJ5ID0gIlNFTEVDVCBDT1VO
VCgqKSBGUk9NIFN1YnJlcwogY29uc3RleHByIGF1dG8gY291bnRTdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvUXVlcnkgPSAiU0VMRUNUIENPVU5UKCopIEZST00gU3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNUbyBXSEVSRSBzdWJyZXNvdXJjZURvbWFpbklEID0gPyBBTkQgdG9Eb21haW5JRCA9
ID87Il9zOwogY29uc3RleHByIGF1dG8gY291bnRQcmV2YWxlbnRSZXNvdXJjZXNRdWVyeSA9ICJT
RUxFQ1QgQ09VTlQoRElTVElOQ1QgcmVnaXN0cmFibGVEb21haW4pIEZST00gT2JzZXJ2ZWREb21h
aW5zIFdIRVJFIGlzUHJldmFsZW50ID0gMTsiX3M7CiBjb25zdGV4cHIgYXV0byBjb3VudFByZXZh
bGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25RdWVyeSA9ICJTRUxFQ1QgQ09VTlQoRElT
VElOQ1QgcmVnaXN0cmFibGVEb21haW4pIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGlzUHJl
dmFsZW50ID0gMSBBTkQgaGFkVXNlckludGVyYWN0aW9uID0gMTsiX3M7Citjb25zdGV4cHIgYXV0
byBjb3VudE9wZXJhdGluZ0RhdGVzUXVlcnkgPSAiU0VMRUNUIENPVU5UKCopIEZST00gT3BlcmF0
aW5nRGF0ZXM7Il9zOwogCiBjb25zdGV4cHIgYXV0byBjb3VudFByZXZhbGVudFJlc291cmNlc1dp
dGhvdXRVc2VySW50ZXJhY3Rpb25RdWVyeSA9ICJTRUxFQ1QgQ09VTlQoRElTVElOQ1QgcmVnaXN0
cmFibGVEb21haW4pIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGlzUHJldmFsZW50ID0gMSBB
TkQgaGFkVXNlckludGVyYWN0aW9uID0gMDsiX3M7CiAKQEAgLTg2LDYgKzg3LDcgQEAgY29uc3Rl
eHByIGF1dG8gdG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZv
cmNlbWVudFF1ZXJ5ID0gIkkKIGNvbnN0ZXhwciBhdXRvIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3Rz
RnJvbVF1ZXJ5ID0gIklOU0VSVCBPUiBJR05PUkUgSU5UTyBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0
c0Zyb20gKHRhcmdldERvbWFpbklELCBmcm9tRG9tYWluSUQpIFNFTEVDVCA/LCBkb21haW5JRCBG
Uk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSByZWdpc3RyYWJsZURvbWFpbiBpbiAoICJfczsKIGNv
bnN0ZXhwciBhdXRvIHRvcEZyYW1lTG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNRdWVyeSA9ICJJTlNF
UlQgT1IgSUdOT1JFIGludG8gVG9wRnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyAodG9wRnJh
bWVEb21haW5JRCwgc3VicmVzb3VyY2VEb21haW5JRCkgU0VMRUNUID8sIGRvbWFpbklEIEZST00g
T2JzZXJ2ZWREb21haW5zIHdoZXJlIHJlZ2lzdHJhYmxlRG9tYWluIGluICggIl9zOwogY29uc3Rl
eHByIGF1dG8gc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tUXVlcnkgPSAiSU5TRVJUIE9S
IElHTk9SRSBJTlRPIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSAoc3VicmVzb3VyY2VE
b21haW5JRCwgZnJvbURvbWFpbklEKSBTRUxFQ1QgPywgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERv
bWFpbnMgV0hFUkUgcmVnaXN0cmFibGVEb21haW4gaW4gKCAiX3M7Citjb25zdGV4cHIgYXV0byBp
bnNlcnRPcGVyYXRpbmdEYXRlc1F1ZXJ5ID0gIklOU0VSVCBPUiBJR05PUkUgSU5UTyBPcGVyYXRp
bmdEYXRlcyAoeWVhciwgbW9udGgsIG1vbnRoRGF5KSBTRUxFQ1QgPywgPywgPyJfczsKIAogLy8g
SU5TRVJUIE9SIFJFUExBQ0UgUXVlcmllcwogY29uc3RleHByIGF1dG8gc3ViZnJhbWVVbmRlclRv
cEZyYW1lRG9tYWluc1F1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIGludG8gU3ViZnJhbWVVbmRl
clRvcEZyYW1lRG9tYWlucyAoc3ViRnJhbWVEb21haW5JRCwgbGFzdFVwZGF0ZWQsIHRvcEZyYW1l
RG9tYWluSUQpIFNFTEVDVCA/LCA/LCBkb21haW5JRCBGUk9NIE9ic2VydmVkRG9tYWlucyB3aGVy
ZSByZWdpc3RyYWJsZURvbWFpbiBpbiAoICJfczsKQEAgLTEzNCw2ICsxMzYsOCBAQCBjb25zdGV4
cHIgYXV0byBnZXRBbGxEb21haW5zUXVlcnkgPSAiU0VMRUNUIHJlZ2lzdHJhYmxlRG9tYWluIEZS
T00gT2JzZXJ2ZWREb21haQogY29uc3RleHByIGF1dG8gZ2V0QWxsU3ViU3RhdGlzdGljc1VuZGVy
RG9tYWluUXVlcnkgPSAiU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBTdWJmcmFtZVVuZGVy
VG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YkZyYW1lRG9tYWluSUQgPSA/IgogICAgICJVTklPTiBB
TEwgU0VMRUNUIHRvcEZyYW1lRG9tYWluSUQgRlJPTSBTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVE
b21haW5zIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/IgogICAgICJVTklPTiBBTEwgU0VM
RUNUIHRvRG9tYWluSUQgRlJPTSBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHN1
YnJlc291cmNlRG9tYWluSUQgPSA/Il9zOworY29uc3RleHByIGF1dG8gZ2V0TW9zdFJlY2VudE9w
ZXJhdGluZ0RhdGVRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIE9wZXJhdGluZ0RhdGVzIE9SREVSIEJZ
IHllYXIgREVTQywgbW9udGggREVTQywgbW9udGhEYXkgREVTQyBMSU1JVCAxOyJfczsKK2NvbnN0
ZXhwciBhdXRvIGdldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVF1ZXJ5ID0gIlNFTEVDVCAqIEZS
T00gT3BlcmF0aW5nRGF0ZXMgT1JERVIgQlkgeWVhciwgbW9udGgsIG1vbnRoRGF5IExJTUlUIDE7
Il9zOwogCiAvLyBFWElTVFMgZm9yIHRlc3RpbmcgcXVlcmllcwogY29uc3RleHByIGF1dG8gbGlu
a0RlY29yYXRpb25FeGlzdHNRdWVyeSA9ICJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIFRv
cEZyYW1lTGlua0RlY29yYXRpb25zRnJvbSBXSEVSRSB0b0RvbWFpbklEID0gPyBPUiBmcm9tRG9t
YWluSUQgPSA/KSJfczsKQEAgLTE0NSw2ICsxNDksNyBAQCBjb25zdGV4cHIgYXV0byBvYnNlcnZl
ZERvbWFpbnNFeGlzdHNRdWVyeSA9ICJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIE9ic2Vy
dgogCiAvLyBERUxFVEUgUXVlcmllcwogY29uc3RleHByIGF1dG8gcmVtb3ZlQWxsRGF0YVF1ZXJ5
ID0gIkRFTEVURSBGUk9NIE9ic2VydmVkRG9tYWlucyBXSEVSRSBkb21haW5JRCA9ID8iX3M7Citj
b25zdGV4cHIgYXV0byBkZWxldGVMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVzUXVlcnkgPSAiREVM
RVRFIEZST00gT3BlcmF0aW5nRGF0ZXMgT1JERVIgQlkgeWVhciwgbW9udGgsIG1vbnRoRGF5IExJ
TUlUID87Il9zOwogCiBjb25zdGV4cHIgYXV0byBjcmVhdGVPYnNlcnZlZERvbWFpbiA9ICJDUkVB
VEUgVEFCTEUgT2JzZXJ2ZWREb21haW5zICgiCiAgICAgImRvbWFpbklEIElOVEVHRVIgUFJJTUFS
WSBLRVksIHJlZ2lzdHJhYmxlRG9tYWluIFRFWFQgTk9UIE5VTEwgVU5JUVVFIE9OIENPTkZMSUNU
IEZBSUwsIGxhc3RTZWVuIFJFQUwgTk9UIE5VTEwsICIKQEAgLTIyMiw2ICsyMjcsMTAgQEAgY29u
c3RleHByIGF1dG8gY3JlYXRlU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tID0gIkNSRUFU
RSBUQUJMRSBTdWJyZXNvdXJjZVUKICAgICAiRk9SRUlHTiBLRVkoc3VicmVzb3VyY2VEb21haW5J
RCkgUkVGRVJFTkNFUyBPYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURF
LCAiCiAgICAgIkZPUkVJR04gS0VZKGZyb21Eb21haW5JRCkgUkVGRVJFTkNFUyBPYnNlcnZlZERv
bWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFKTsiX3M7CiAKK2NvbnN0ZXhwciBhdXRv
IGNyZWF0ZU9wZXJhdGluZ0RhdGVzID0gIkNSRUFURSBUQUJMRSBPcGVyYXRpbmdEYXRlcyAoIgor
ICAgICJ5ZWFyIElOVEVHRVIgTk9UIE5VTEwsIG1vbnRoIElOVEVHRVIgTk9UIE5VTEwsIG1vbnRo
RGF5IElOVEVHRVIgTk9UIE5VTEwpOyJfczsKKworCiAvLyBDUkVBVEUgVU5JUVVFIElOREVYIFF1
ZXJpZXMKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4U3RvcmFnZUFjY2Vzc1VuZGVy
VG9wRnJhbWVEb21haW5zID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBTdG9y
YWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNfZG9tYWluSURfdG9wTGV2ZWxEb21haW5JRCBv
biBTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMgKCBkb21haW5JRCwgdG9wTGV2ZWxE
b21haW5JRCApOyJfczsKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdHNUbyA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVG9w
RnJhbWVVbmlxdWVSZWRpcmVjdHNUb19zb3VyY2VEb21haW5JRF90b0RvbWFpbklEIG9uIFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RzVG8gKCBzb3VyY2VEb21haW5JRCwgdG9Eb21haW5JRCApOyJfczsK
QEAgLTIzMyw2ICsyNDIsNyBAQCBjb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFN1YmZy
YW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgPSAiQ1JFQVRFIFVOSVFVRSBJTgogY29uc3RleHByIGF1
dG8gY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zID0gIkNS
RUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVE
b21haW5zX3N1YnJlc291cmNlRG9tYWluSURfdG9wRnJhbWVEb21haW5JRCBvbiBTdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVEb21haW5zICggc3VicmVzb3VyY2VEb21haW5JRCwgdG9wRnJhbWVEb21h
aW5JRCApOyJfczsKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNUbyA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb19zdWJyZXNvdXJjZURvbWFpbklEX3RvRG9tYWluSUQg
b24gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyAoIHN1YnJlc291cmNlRG9tYWluSUQsIHRv
RG9tYWluSUQgKTsiX3M7CiBjb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElT
VFMgU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tX3N1YnJlc291cmNlRG9tYWluSURfZnJv
bURvbWFpbklEIG9uIFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgKCBzdWJyZXNvdXJj
ZURvbWFpbklELCBmcm9tRG9tYWluSUQgKTsiX3M7Citjb25zdGV4cHIgYXV0byBjcmVhdGVVbmlx
dWVJbmRleE9wZXJhdGluZ0RhdGVzID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNU
UyBPcGVyYXRpbmdEYXRlc195ZWFyX21vbnRoX21vbnRoRGF5IG9uIE9wZXJhdGluZ0RhdGVzICgg
eWVhciwgbW9udGgsIG1vbnRoRGF5ICk7Il9zOwogCiBjb25zdCB1bnNpZ25lZCBtaW5pbXVtUHJl
dmFsZW50UmVzb3VyY2VzRm9yVGVsZW1ldHJ5ID0gMzsKIApAQCAtMjY1LDcgKzI3NSw4IEBAIHN0
YXRpYyBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgY3JlYXRlVGFibGVRdWVyaWVzKCkK
ICAgICAgICAgeyAiU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyJfcywgY3JlYXRlU3ViZnJh
bWVVbmRlclRvcEZyYW1lRG9tYWluc30sCiAgICAgICAgIHsgIlN1YnJlc291cmNlVW5kZXJUb3BG
cmFtZURvbWFpbnMiX3MsIGNyZWF0ZVN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnN9LAog
ICAgICAgICB7ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLCBjcmVhdGVTdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c1RvfSwKLSAgICAgICAgeyAiU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNGcm9tIl9zLCBjcmVhdGVTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb219CisgICAg
ICAgIHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSJfcywgY3JlYXRlU3VicmVzb3Vy
Y2VVbmlxdWVSZWRpcmVjdHNGcm9tfSwKKyAgICAgICAgeyAiT3BlcmF0aW5nRGF0ZXMiX3MsIGNy
ZWF0ZU9wZXJhdGluZ0RhdGVzfQogICAgIH0pOwogICAgIAogICAgIHJldHVybiBjcmVhdGVUYWJs
ZVF1ZXJpZXM7CkBAIC0zMTMsNiArMzI0LDExIEBAIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvCiAg
ICAgLCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50KG1fZGF0YWJhc2UsIHVuaXF1ZVJl
ZGlyZWN0RXhpc3RzUXVlcnkpCiAgICAgLCBtX29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVu
dChtX2RhdGFiYXNlLCBvYnNlcnZlZERvbWFpbnNFeGlzdHNRdWVyeSkKICAgICAsIG1fcmVtb3Zl
QWxsRGF0YVN0YXRlbWVudChtX2RhdGFiYXNlLCByZW1vdmVBbGxEYXRhUXVlcnkpCisgICAgLCBt
X2luc2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgaW5zZXJ0T3BlcmF0aW5n
RGF0ZXNRdWVyeSkKKyAgICAsIG1fY291bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudChtX2RhdGFi
YXNlLCBjb3VudE9wZXJhdGluZ0RhdGVzUXVlcnkpCisgICAgLCBtX2dldE1vc3RSZWNlbnRPcGVy
YXRpbmdEYXRlU3RhdGVtZW50KG1fZGF0YWJhc2UsIGdldE1vc3RSZWNlbnRPcGVyYXRpbmdEYXRl
UXVlcnkpCisgICAgLCBtX2RlbGV0ZUxlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQo
bV9kYXRhYmFzZSwgZGVsZXRlTGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlc1F1ZXJ5KQorICAgICwg
bV9nZXRMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgZ2V0TGVh
c3RSZWNlbnRPcGVyYXRpbmdEYXRlUXVlcnkpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC0zMzYsNiArMzUyLDggQEAg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlKFdlYlJlc28KICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAg
ICAgd2Vha1RoaXMtPmNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIH0pOworCisg
ICAgaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKTsKIH0KIAogdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6b3BlbklUUERhdGFiYXNlKCkKQEAg
LTYzNiw2ICs2NTQsMTEgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Y3JlYXRlU2NoZW1hKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKKyAg
ICBpZiAoIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlT3BlcmF0aW5nRGF0ZXMpKSB7
CisgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBPcGVyYXRpbmdEYXRlcyB0YWJs
ZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX2RhdGFiYXNlLmxhc3RFcnJvcigpLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAK
ICAgICBpZiAoIWNyZWF0ZVVuaXF1ZUluZGljZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC02ODQsNiArNzA3LDExIEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnByZXBhcmVTdGF0ZW1lbnRzKCkKICAgICAgICAgfHwgbV91bmlxdWVSZWRpcmVjdEV4
aXN0c1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fb2JzZXJ2
ZWREb21haW5zRXhpc3RzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAg
fHwgbV9yZW1vdmVBbGxEYXRhU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgbV9pbnNlcnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVf
T0sKKyAgICAgICAgfHwgbV9jb3VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50LnByZXBhcmUoKSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9nZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRl
bWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fZGVsZXRlTGVhc3RSZWNl
bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCisgICAgICAg
IHx8IG1fZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBT
UUxJVEVfT0sKICAgICAgICAgKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmss
ICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVwYXJlU3RhdGVt
ZW50cyBmYWlsZWQgdG8gcHJlcGFyZSwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJ
TkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKQEAgLTI0ODcsNyArMjUxNSw3IEBAIFZlY3Rvcjx1bnNpZ25lZD4gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9u
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBWZWN0b3I8dW5zaWduZWQ+
IHJlc3VsdHM7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gZXhwaXJhdGlvbkRhdGVUaW1lID0gc3Rh
dGlzdGljc0VwaXJhdGlvblRpbWUoKTsKKyAgICBPcHRpb25hbDxTZWNvbmRzPiBleHBpcmF0aW9u
RGF0ZVRpbWUgPSBzdGF0aXN0aWNzRXhwaXJhdGlvblRpbWUoKTsKICAgICBpZiAoIWV4cGlyYXRp
b25EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAKQEAgLTI5OTYsNiArMzAyNCwx
ODMgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURF
eGlzdHNJbkRhdGFiYXNlKGludCBkb21haW5JRCkKICAgICByZXR1cm4gbV9saW5rRGVjb3JhdGlv
bkV4aXN0c1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCkgfHwgbV9zY3JpcHRMb2FkRXhpc3RzU3Rh
dGVtZW50LmdldENvbHVtbkludCgwKSB8fCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LmdldENv
bHVtbkludCgwKSB8fCBtX3N1YlJlc291cmNlRXhpc3RzU3RhdGVtZW50LmdldENvbHVtbkludCgw
KSB8fCBtX3VuaXF1ZVJlZGlyZWN0RXhpc3RzU3RhdGVtZW50LmdldENvbHVtbkludCgwKSB8fCBt
X29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7CiB9CiAKK09w
dGlvbmFsPFNlY29uZHM+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzdGF0
aXN0aWNzRXhwaXJhdGlvblRpbWUoKSBjb25zdAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworCisgICAgaWYgKHRoaXMtPnBhcmFtZXRlcnMoKS50aW1lVG9MaXZlVXNlckludGVy
YWN0aW9uKQorICAgICAgICByZXR1cm4gV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2No
KCkgLSB0aGlzLT5wYXJhbWV0ZXJzKCkudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbi52YWx1ZSgp
OworICAgIAorICAgIGlmIChtX2NvdW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQuc3RlcCgpICE9
IFNRTElURV9ST1cpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnN0YXRp
c3RpY3NFeHBpcmF0aW9uVGltZS4gY291bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudCBmYWlsZWQg
dG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIG9wZXJh
dGluZ0RhdGVzU2l6ZSA9IG1fY291bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudC5nZXRDb2x1bW5J
bnQoMCk7CisgICAgcmVzZXRTdGF0ZW1lbnQobV9jb3VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50
KTsKKworICAgIGlmIChvcGVyYXRpbmdEYXRlc1NpemUgPj0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dM
b25nKSB7CisgICAgICAgIGlmIChtX2dldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVu
dC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnN0YXRpc3RpY3NFeHBpcmF0aW9uVGltZS4gZ2V0TGVhc3RSZWNlbnRPcGVyYXRp
bmdEYXRlU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAg
ICB9CisKKyAgICAgICAgYXV0byBsZWFzdFJlY2VudE9wZXJhdGluZ0RhdGUgPSBPcGVyYXRpbmdE
YXRlKG1fZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgw
KSwgbV9nZXRMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDEp
LCBtX2dldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMikp
OworICAgICAgICByZXNldFN0YXRlbWVudChtX2dldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0
YXRlbWVudCk7CisgICAgICAgIHJldHVybiBsZWFzdFJlY2VudE9wZXJhdGluZ0RhdGUuc2Vjb25k
c1NpbmNlRXBvY2goKTsKKyAgICB9CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCit2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNsdWRlVG9kYXlBc09w
ZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CisgICAgCisgICAgaWYgKG1fY291bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudC5zdGVwKCkg
IT0gU1FMSVRFX1JPVykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5j
bHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkuIGNvdW50T3BlcmF0aW5nRGF0ZXNT
dGF0ZW1lbnQgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8gb3BlcmF0aW5nRGF0
ZXNTaXplID0gbV9jb3VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50LmdldENvbHVtbkludCgwKTsK
KyAgICByZXNldFN0YXRlbWVudChtX2NvdW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQpOworICAg
IGF1dG8gdG9kYXkgPSBPcGVyYXRpbmdEYXRlOjp0b2RheSgpOworCisgICAgaWYgKG9wZXJhdGlu
Z0RhdGVzU2l6ZSA+IDApIHsKKyAgICAgICAgaWYgKG1fZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0Rh
dGVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2Fy
eS4gZ2V0Rmlyc3RPcGVyYXRpbmdEYXRlU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBt
ZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgYXV0byBtb3N0UmVjZW50T3BlcmF0aW5nRGF0ZSA9IE9wZXJhdGlu
Z0RhdGUobV9nZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQo
MCksIG1fZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDEp
LCBtX2dldE1vc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgyKSk7
CisKKyAgICAgICAgcmVzZXRTdGF0ZW1lbnQobV9nZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0
YXRlbWVudCk7CisKKyAgICAgICAgaWYgKHRvZGF5IDw9IG1vc3RSZWNlbnRPcGVyYXRpbmdEYXRl
KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCByb3dzVG9QcnVuZSA9IG9w
ZXJhdGluZ0RhdGVzU2l6ZSAtIG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZyArIDE7CisgICAgaWYg
KHJvd3NUb1BydW5lID4gMCkgeworICAgICAgICBpZiAobV9kZWxldGVMZWFzdFJlY2VudE9wZXJh
dGluZ0RhdGVzU3RhdGVtZW50LmJpbmRJbnQoMSwgcm93c1RvUHJ1bmUpICE9IFNRTElURV9PSwor
ICAgICAgICAgICAgfHwgbV9kZWxldGVMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50
LnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5LiBkZWxldGVM
ZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBt
ZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmVz
ZXRTdGF0ZW1lbnQobV9kZWxldGVMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50KTsK
KyAgICB9CisKKyAgICBpZiAobV9pbnNlcnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmJpbmRJbnQo
MSwgdG9kYXkueWVhcigpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRPcGVyYXRp
bmdEYXRlU3RhdGVtZW50LmJpbmRJbnQoMiwgdG9kYXkubW9udGgoKSkgIT0gU1FMSVRFX09LCisg
ICAgICAgIHx8IG1faW5zZXJ0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5iaW5kSW50KDMsIHRvZGF5
Lm1vbnRoRGF5KCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2VydE9wZXJhdGluZ0Rh
dGVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CisKKyAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5
LiBpbnNlcnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNz
YWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmVzZXRTdGF0ZW1lbnQobV9p
bnNlcnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50KTsKK30KKworYm9vbCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQoV2FsbFRpbWUgbW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvblRpbWUsIE9wZXJhdGluZ0RhdGVzV2luZG93IG9wZXJhdGluZ0Rh
dGVzV2luZG93KSBjb25zdAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisg
ICAgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5kb3dJbkRheXMgPSAwOworICAgIHN3aXRjaCAo
b3BlcmF0aW5nRGF0ZXNXaW5kb3cpIHsKKyAgICBjYXNlIE9wZXJhdGluZ0RhdGVzV2luZG93OjpM
b25nOgorICAgICAgICBvcGVyYXRpbmdEYXRlc1dpbmRvd0luRGF5cyA9IG9wZXJhdGluZ0RhdGVz
V2luZG93TG9uZzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPcGVyYXRpbmdEYXRlc1dpbmRv
dzo6U2hvcnQ6CisgICAgICAgIG9wZXJhdGluZ0RhdGVzV2luZG93SW5EYXlzID0gb3BlcmF0aW5n
RGF0ZXNXaW5kb3dTaG9ydDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPcGVyYXRpbmdEYXRl
c1dpbmRvdzo6Rm9yTGl2ZU9uVGVzdGluZzoKKyAgICAgICAgcmV0dXJuIFdhbGxUaW1lOjpub3co
KSA+IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lICsgb3BlcmF0aW5nVGltZVdpbmRvd0Zv
ckxpdmVPblRlc3Rpbmc7CisgICAgY2FzZSBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6Rm9yUmVwcm9U
ZXN0aW5nOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKG1fY291
bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQuIGNvdW50
T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7
cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAor
ICAgIGNvbnN0IHVuc2lnbmVkIG9wZXJhdGluZ0RhdGVzU2l6ZSA9IG1fY291bnRPcGVyYXRpbmdE
YXRlc1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7CisgICAgcmVzZXRTdGF0ZW1lbnQobV9jb3Vu
dE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50KTsKKworICAgIGlmIChvcGVyYXRpbmdEYXRlc1NpemUg
Pj0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dJbkRheXMpIHsKKyAgICAgICAgaWYgKG1fZ2V0TGVhc3RS
ZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQu
IGdldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCBmYWlsZWQgdG8gc3RlcCwgZXJy
b3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGF1dG8gbGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRl
ID0gT3BlcmF0aW5nRGF0ZShtX2dldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5n
ZXRDb2x1bW5JbnQoMCksIG1fZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50Lmdl
dENvbHVtbkludCgxKSwgbV9nZXRMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuZ2V0
Q29sdW1uSW50KDIpKTsKKworICAgICAgICByZXNldFN0YXRlbWVudChtX2dldExlYXN0UmVjZW50
T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCk7CisKKyAgICAgICAgaWYgKE9wZXJhdGluZ0RhdGU6OmZy
b21XYWxsVGltZShtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkgPCBsZWFzdFJlY2VudE9w
ZXJhdGluZ0RhdGUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBJ
ZiB3ZSBkb24ndCBtZWV0IHRoZSByZWFsIGNyaXRlcmlhIGZvciBhbiBleHBpcmVkIHN0YXRpc3Rp
YywgY2hlY2sgdGhlIHVzZXIgc2V0dGluZyBmb3IgYSB0aWdodGVyIHJlc3RyaWN0aW9uIChtYWlu
bHkgZm9yIHRlc3RpbmcpLgorICAgIGlmICh0aGlzLT5wYXJhbWV0ZXJzKCkudGltZVRvTGl2ZVVz
ZXJJbnRlcmFjdGlvbikgeworICAgICAgICBpZiAoV2FsbFRpbWU6Om5vdygpID4gbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUgKyB0aGlzLT5wYXJhbWV0ZXJzKCkudGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbi52YWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZG9tYWluLCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxl
ZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KQoreworICAgIC8v
IFBvcHVsYXRlIHRoZSBPcGVyYXRpbmcgRGF0ZXMgdGFibGUgd2l0aCBlbm91Z2ggZGF5cyB0byBy
ZXF1aXJlIHBydW5pbmcuCisgICAgZG91YmxlIGRheXNBZ29JblNlY29uZHMgPSAwOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDE7IGkgPD0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nOyBpKyspIHsK
KyAgICAgICAgZG91YmxlIGRheXNUb1N1YnRyYWN0ID0gU2Vjb25kczo6ZnJvbUhvdXJzKDI0ICog
aSkudmFsdWUoKTsKKyAgICAgICAgZGF5c0Fnb0luU2Vjb25kcyA9IFdhbGxUaW1lOjpub3coKS5z
ZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgLSBkYXlzVG9TdWJ0cmFjdDsKKyAgICAgICAgYXV0
byBkYXRlVG9JbnNlcnQgPSBPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUoV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKGRheXNBZ29JblNlY29uZHMpKTsKKworICAgICAgICBpZiAobV9pbnNlcnRP
cGVyYXRpbmdEYXRlU3RhdGVtZW50LmJpbmRJbnQoMSwgZGF0ZVRvSW5zZXJ0LnllYXIoKSkgIT0g
U1FMSVRFX09LCisgICAgICAgICAgICB8fCBtX2luc2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQu
YmluZEludCgyLCBkYXRlVG9JbnNlcnQubW9udGgoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAg
ICB8fCBtX2luc2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuYmluZEludCgzLCBkYXRlVG9JbnNl
cnQubW9udGhEYXkoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBtX2luc2VydE9wZXJh
dGluZ0RhdGVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CisKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJ
Zk5lY2Vzc2FyeS4gaW5zZXJ0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCBmYWlsZWQgdG8gc3RlcCwg
ZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAg
ICAgIHJlc2V0U3RhdGVtZW50KG1faW5zZXJ0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCk7CisgICAg
fQorCisgICAgLy8gTWFrZSBzdXJlIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lIGlzIHRo
ZSBsZWFzdCByZWNlbnQgb2YgYWxsIGVudHJpZXMuCisgICAgZGF5c0Fnb0luU2Vjb25kcyAtPSBT
ZWNvbmRzOjpmcm9tSG91cnMoMjQpLnZhbHVlKCk7CisKKyAgICBpZiAobV9pbnNlcnRPYnNlcnZl
ZERvbWFpblN0YXRlbWVudC5iaW5kVGV4dChSZWdpc3RyYWJsZURvbWFpbkluZGV4LCBkb21haW4u
c3RyaW5nKCkpICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWlu
U3RhdGVtZW50LmJpbmREb3VibGUoTGFzdFNlZW5JbmRleCwgZGF5c0Fnb0luU2Vjb25kcykgIT0g
U1FMSVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmlu
ZEludChIYWRVc2VySW50ZXJhY3Rpb25JbmRleCwgaGFzVXNlckludGVyYWN0aW9uKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kRG91
YmxlKE1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lSW5kZXgsIGRheXNBZ29JblNlY29uZHMp
ICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50
LmJpbmRJbnQoR3JhbmRmYXRoZXJlZEluZGV4LCBmYWxzZSkgIT0gU1FMSVRFX09LCisgICAgICAg
IHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZEludChJc1ByZXZhbGVudElu
ZGV4LCBpc1ByZXZhbGVudCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2
ZWREb21haW5TdGF0ZW1lbnQuYmluZEludChJc1ZlcnlQcmV2YWxlbnRJbmRleCwgZmFsc2UpICE9
IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJp
bmRJbnQoRGF0YVJlY29yZHNSZW1vdmVkSW5kZXgsIDApICE9IFNRTElURV9PSworICAgICAgICB8
fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoVGltZXNBY2Nlc3NlZEFz
Rmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uSW5kZXgsIDApICE9IFNRTElURV9PSworICAg
ICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoVGltZXNBY2Nl
c3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSUluZGV4LCAwKSAhPSBTUUxJVEVf
T0sKKyAgICAgICAgfHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KElz
U2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxJbmRleCwgaXNTY2hlZHVsZWRGb3JB
bGxCdXRDb29raWVEYXRhUmVtb3ZhbCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyBmYWls
ZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNl
Lmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVu
dC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0
d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydEV4
cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nIGZhaWxlZCB0byBjb21taXQsIGVycm9yIG1lc3NhZ2U6
ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlc2V0
U3RhdGVtZW50KG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IGI0N2Q1MmRmMmI0YTVlOGRlODcxNjQxMmUx
YWFkNTM5MDdhZDNkOWIuLmY5NWQ2NWZkMjRiZjA3ODMxZTJjZTUwNzBiMWQzOWYwZGRiOTI4Mjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5oCkBAIC0xNDEsOCArMTQxLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZURhdGFGb3JE
b21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBvdmVycmlkZTsKICAgICBib29sIGRvbWFp
bklERXhpc3RzSW5EYXRhYmFzZShpbnQpOwogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBj
aGVja0Zvck1pc3NpbmdUYWJsZXNJblNjaGVtYSgpOworICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0
YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhc1VzZXJJ
bnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBi
b29sIGlzUHJldmFsZW50KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGluY2x1ZGVU
b2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVh
ck9wZXJhdGluZ0RhdGVzKCkgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBoYXNTdGF0aXN0aWNzRXhw
aXJlZChXYWxsVGltZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgT3BlcmF0aW5nRGF0
ZXNXaW5kb3cpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPFNlY29uZHM+IHN0YXRpc3Rp
Y3NFeHBpcmF0aW9uVGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIAogICAgIHZvaWQgb3BlbklU
UERhdGFiYXNlKCk7CiAgICAgdm9pZCBhZGRNaXNzaW5nVGFibGVzSWZOZWNlc3NhcnkoKTsKICAg
ICB2b2lkIGVuYWJsZUZvcmVpZ25LZXlzKCk7CkBAIC0yNzMsNiArMjc5LDExIEBAIHByaXZhdGU6
CiAgICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV91bmlxdWVSZWRpcmVjdEV4
aXN0c1N0YXRlbWVudDsKICAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX29i
c2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudDsKICAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudCBtX3JlbW92ZUFsbERhdGFTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQgbV9pbnNlcnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50OworICAgIG11
dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fY291bnRPcGVyYXRpbmdEYXRlc1N0YXRl
bWVudDsKKyAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2dldE1vc3RSZWNl
bnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50OworICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3Rh
dGVtZW50IG1fZGVsZXRlTGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudDsKKyAgICBt
dXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2dldExlYXN0UmVjZW50T3BlcmF0aW5n
RGF0ZVN0YXRlbWVudDsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBib29s
IG1faXNOZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlIHsgZmFsc2UgfTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3Bw
CmluZGV4IGFmNTAwNDFkMjM3YjQwYzc2ZDViNGQxYzc2MDg4OTUzYTNhZjhmNTYuLjhlZmI4YzJk
MjUyMTIwNmYzYTIwNzYwMGY4ZWU0ZDMzZjkyZGJmZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC04MCw2ICs4MCw4IEBAIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlKFdlYlJlc291cmNlCiAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAg
IHdlYWtUaGlzLT5jYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoKTsKICAgICB9KTsKKworICAg
IGluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7CiB9CiAKIGJvb2wgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjppc0VtcHR5KCkgY29uc3QKQEAgLTEwODEs
NiArMTA4MywxMjIgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNl
dFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWIKICAgICBzZXRQcmV2YWxlbnRS
ZXNvdXJjZShyZXNvdXJjZVN0YXRpc3RpYywgUmVzb3VyY2VMb2FkUHJldmFsZW5jZTo6VmVyeUhp
Z2gpOwogfQogCitPcHRpb25hbDxTZWNvbmRzPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU6OnN0YXRpc3RpY3NFeHBpcmF0aW9uVGltZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAodGhpcy0+cGFyYW1ldGVycygpLnRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24pCisgICAgICAgIHJldHVybiBXYWxsVGltZTo6bm93KCkuc2Vjb25k
c1NpbmNlRXBvY2goKSAtIHRoaXMtPnBhcmFtZXRlcnMoKS50aW1lVG9MaXZlVXNlckludGVyYWN0
aW9uLnZhbHVlKCk7CisKKyAgICBpZiAobV9vcGVyYXRpbmdEYXRlcy5zaXplKCkgPj0gb3BlcmF0
aW5nRGF0ZXNXaW5kb3dMb25nKQorICAgICAgICByZXR1cm4gbV9vcGVyYXRpbmdEYXRlcy5maXJz
dCgpLnNlY29uZHNTaW5jZUVwb2NoKCk7CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQor
CitWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
OjptZXJnZU9wZXJhdGluZ0RhdGVzKGNvbnN0IFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYgZXhpc3Rp
bmdEYXRlcywgVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiYgbmV3RGF0ZXMpCit7CisgICAgaWYgKGV4
aXN0aW5nRGF0ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gV1RGTW92ZShuZXdEYXRlcyk7
CisKKyAgICBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbWVyZ2VkRGF0ZXMoZXhpc3RpbmdEYXRlcy5z
aXplKCkgKyBuZXdEYXRlcy5zaXplKCkpOworCisgICAgLy8gTWVyZ2UgdGhlIHR3byBzb3J0ZWQg
dmVjdG9ycyBvZiBkYXRlcy4KKyAgICBzdGQ6Om1lcmdlKGV4aXN0aW5nRGF0ZXMuYmVnaW4oKSwg
ZXhpc3RpbmdEYXRlcy5lbmQoKSwgbmV3RGF0ZXMuYmVnaW4oKSwgbmV3RGF0ZXMuZW5kKCksIG1l
cmdlZERhdGVzLmJlZ2luKCkpOworICAgIC8vIFJlbW92ZSBkdXBsaWNhdGUgZGF0ZXMuCisgICAg
cmVtb3ZlUmVwZWF0ZWRFbGVtZW50cyhtZXJnZWREYXRlcyk7CisKKyAgICAvLyBEcm9wIG9sZCBk
YXRlcyB1bnRpbCB0aGUgVmVjdG9yIHNpemUgcmVhY2hlcyBvcGVyYXRpbmdEYXRlc1dpbmRvd0xv
bmcuCisgICAgd2hpbGUgKG1lcmdlZERhdGVzLnNpemUoKSA+IG9wZXJhdGluZ0RhdGVzV2luZG93
TG9uZykKKyAgICAgICAgbWVyZ2VkRGF0ZXMucmVtb3ZlKDApOworCisgICAgcmV0dXJuIG1lcmdl
ZERhdGVzOworfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6bWVy
Z2VPcGVyYXRpbmdEYXRlcyhWZWN0b3I8T3BlcmF0aW5nRGF0ZT4mJiBuZXdEYXRlcykKK3sKKyAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fb3BlcmF0aW5nRGF0ZXMgPSBt
ZXJnZU9wZXJhdGluZ0RhdGVzKG1fb3BlcmF0aW5nRGF0ZXMsIFdURk1vdmUobmV3RGF0ZXMpKTsK
K30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmluY2x1ZGVUb2Rh
eUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKKworICAgIGF1dG8gdG9kYXkgPSBPcGVyYXRpbmdEYXRlOjp0b2RheSgpOworICAg
IGlmICghbV9vcGVyYXRpbmdEYXRlcy5pc0VtcHR5KCkgJiYgdG9kYXkgPD0gbV9vcGVyYXRpbmdE
YXRlcy5sYXN0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHdoaWxlIChtX29wZXJhdGluZ0Rh
dGVzLnNpemUoKSA+PSBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcpCisgICAgICAgIG1fb3BlcmF0
aW5nRGF0ZXMucmVtb3ZlKDApOworCisgICAgbV9vcGVyYXRpbmdEYXRlcy5hcHBlbmQodG9kYXkp
OworfQorCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RhdGlz
dGljc0V4cGlyZWQoV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUsIE9wZXJh
dGluZ0RhdGVzV2luZG93IG9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdAoreworICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5k
b3dJbkRheXMgPSAwOworICAgIHN3aXRjaCAob3BlcmF0aW5nRGF0ZXNXaW5kb3cpIHsKKyAgICBj
YXNlIE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nOgorICAgICAgICBvcGVyYXRpbmdEYXRlc1dp
bmRvd0luRGF5cyA9IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZzsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6U2hvcnQ6CisgICAgICAgIG9wZXJhdGluZ0Rh
dGVzV2luZG93SW5EYXlzID0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dTaG9ydDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6Rm9yTGl2ZU9uVGVzdGluZzoKKyAg
ICAgICAgcmV0dXJuIFdhbGxUaW1lOjpub3coKSA+IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25U
aW1lICsgb3BlcmF0aW5nVGltZVdpbmRvd0ZvckxpdmVPblRlc3Rpbmc7CisgICAgY2FzZSBPcGVy
YXRpbmdEYXRlc1dpbmRvdzo6Rm9yUmVwcm9UZXN0aW5nOgorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAobV9vcGVyYXRpbmdEYXRlcy5zaXplKCkgPj0gb3BlcmF0aW5nRGF0
ZXNXaW5kb3dJbkRheXMpIHsKKyAgICAgICAgaWYgKE9wZXJhdGluZ0RhdGU6OmZyb21XYWxsVGlt
ZShtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkgPCBtX29wZXJhdGluZ0RhdGVzLmZpcnN0
KCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSBkb24n
dCBtZWV0IHRoZSByZWFsIGNyaXRlcmlhIGZvciBhbiBleHBpcmVkIHN0YXRpc3RpYywgY2hlY2sg
dGhlIHVzZXIgc2V0dGluZyBmb3IgYSB0aWdodGVyIHJlc3RyaWN0aW9uIChtYWlubHkgZm9yIHRl
c3RpbmcpLgorICAgIGlmICh0aGlzLT5wYXJhbWV0ZXJzKCkudGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbikgeworICAgICAgICBpZiAoV2FsbFRpbWU6Om5vdygpID4gbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUgKyB0aGlzLT5wYXJhbWV0ZXJzKCkudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlv
bi52YWx1ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFz
U3RhdGlzdGljc0V4cGlyZWQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VT
dGF0aXN0aWMsIE9wZXJhdGluZ0RhdGVzV2luZG93IG9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25z
dAoreworICAgIHJldHVybiBoYXNTdGF0aXN0aWNzRXhwaXJlZChyZXNvdXJjZVN0YXRpc3RpYy5t
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgb3BlcmF0aW5nRGF0ZXNXaW5kb3cpOworfQor
Cit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0
YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgYm9vbCBo
YXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkKK3sKKyAgICAvLyBQb3B1bGF0ZSB0aGUgT3BlcmF0aW5n
IERhdGVzIHRhYmxlIHdpdGggZW5vdWdoIGRheXMgdG8gcmVxdWlyZSBwcnVuaW5nLgorICAgIGRv
dWJsZSBkYXlzQWdvSW5TZWNvbmRzID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9
IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZzsgaSsrKSB7CisgICAgICAgIGRvdWJsZSBkYXlzVG9T
dWJ0cmFjdCA9IFNlY29uZHM6OmZyb21Ib3VycygyNCAqIGkpLnZhbHVlKCk7CisgICAgICAgIGRh
eXNBZ29JblNlY29uZHMgPSBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1
ZSgpIC0gZGF5c1RvU3VidHJhY3Q7CisgICAgICAgIGF1dG8gZGF0ZVRvSW5zZXJ0ID0gT3BlcmF0
aW5nRGF0ZTo6ZnJvbVdhbGxUaW1lKFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhkYXlzQWdvSW5T
ZWNvbmRzKSk7CisgICAgICAgIG1fb3BlcmF0aW5nRGF0ZXMuYXBwZW5kKE9wZXJhdGluZ0RhdGUo
ZGF0ZVRvSW5zZXJ0LnllYXIoKSwgZGF0ZVRvSW5zZXJ0Lm1vbnRoKCksIGRhdGVUb0luc2VydC5t
b250aERheSgpKSk7CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJlIG1vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb25UaW1lIGlzIHRoZSBsZWFzdCByZWNlbnQgb2YgYWxsIGVudHJpZXMuCisgICAgZGF5
c0Fnb0luU2Vjb25kcyAtPSBTZWNvbmRzOjpmcm9tSG91cnMoMjQpLnZhbHVlKCk7CisKKyAgICBh
dXRvIHN0YXRpc3RpYyA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3MoZG9tYWluKTsKKyAgICBzdGF0
aXN0aWMubGFzdFNlZW4gPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZGF5c0Fnb0luU2Vjb25k
cyk7CisgICAgc3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbiA9IGhhc1VzZXJJbnRlcmFjdGlv
bjsKKyAgICBzdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHMoZGF5c0Fnb0luU2Vjb25kcyk7CisgICAgc3RhdGlzdGljLmlzUHJl
dmFsZW50UmVzb3VyY2UgPSBpc1ByZXZhbGVudDsKKyAgICBzdGF0aXN0aWMuZ290TGlua0RlY29y
YXRpb25Gcm9tUHJldmFsZW50UmVzb3VyY2UgPSBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURh
dGFSZW1vdmFsOworCisgICAgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5zdXJlKHN0YXRpc3Rp
Yy5yZWdpc3RyYWJsZURvbWFpbiwgWyZzdGF0aXN0aWNdIHsKKyAgICAgICAgcmV0dXJuIFdURk1v
dmUoc3RhdGlzdGljKTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5o
CmluZGV4IDI0NmU3NjcxZWExODUwNTI5NTdlMzIyMGY3YmYxMWM1ZTI0YjA4YjcuLjBmOTdjOTkz
YWViOTNlMmM2MGNiNmRkYmZhZDYyMTY4NDA2NGU1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTExMyw4ICsxMTMsMTggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFNl
Y29uZHMpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpIG92ZXJyaWRlOworICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3Rp
Y0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhc1VzZXJJbnRlcmFj
dGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlz
UHJldmFsZW50KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGluY2x1ZGVUb2RheUFz
T3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7CisgICAgY29uc3QgVmVjdG9yPE9w
ZXJhdGluZ0RhdGU+JiBvcGVyYXRpbmdEYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5n
RGF0ZXM7IH0KKyAgICB2b2lkIGNsZWFyT3BlcmF0aW5nRGF0ZXMoKSBvdmVycmlkZSB7IG1fb3Bl
cmF0aW5nRGF0ZXMuY2xlYXIoKTsgfQorICAgIHZvaWQgbWVyZ2VPcGVyYXRpbmdEYXRlcyhWZWN0
b3I8T3BlcmF0aW5nRGF0ZT4mJik7CisgICAgYm9vbCBoYXNTdGF0aXN0aWNzRXhwaXJlZChjb25z
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cpIGNvbnN0Owor
ICAgIHN0YXRpYyBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbWVyZ2VPcGVyYXRpbmdEYXRlcyhjb25z
dCBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4mIGV4aXN0aW5nRGF0ZXMsIFZlY3RvcjxPcGVyYXRpbmdE
YXRlPiYmIG5ld0RhdGVzKTsKKyAgICBib29sIGhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1l
IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRpbmdEYXRlc1dpbmRvdykgY29u
c3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gc3RhdGlzdGljc0V4cGlyYXRpb25U
aW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisKICAgICBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0FuZEtl
ZXBDb29raWVzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRCbG9ja0FuZFB1cmdlQ29va2llcyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
Jik7CiAgICAgc3RhdGljIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBoYXNV
c2VyR3JhbnRlZFN0b3JhZ2VBY2Nlc3NUaHJvdWdoUHJvbXB0KGNvbnN0IFJlc291cmNlTG9hZFN0
YXRpc3RpY3MmLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwpAQCAtMTM3LDYgKzE0Nyw3IEBA
IHByaXZhdGU6CiAKICAgICBXZWFrUHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZT4gbV9wZXJzaXN0ZW50U3RvcmFnZTsKICAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9t
YWluLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKKyAg
ICBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbV9vcGVyYXRpbmdEYXRlczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAppbmRleCBkZDk2MzhmZjgxN2ZiNzYxMDY4NzY0NTQ4
MDFjMzQzYTNjNjk4ZDZkLi43M2RhZTcwNmJlOTNhNGJjOTNlMGFlYjRkZjM5ZjM3YWZhNTczZDBl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpwb3B1bGF0ZU1lbW9yeVN0b3JlRnJvbURpc2soQ29t
cGxlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBEZWJ1ZyBtb2RlIGhhcyBhIHBy
ZXBvdWxhdGVkIG1lbW9yeSBzdG9yZS4KKyAgICAvLyBEZWJ1ZyBtb2RlIGhhcyBhIHByZXBvcHVs
YXRlZCBtZW1vcnkgc3RvcmUuCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX21lbW9yeVN0b3Jl
LmlzRW1wdHkoKSB8fCBtX21lbW9yeVN0b3JlLmlzRGVidWdNb2RlRW5hYmxlZCgpLCAiVGhpcyBp
cyB0aGUgaW5pdGlhbCBpbXBvcnQgc28gdGhlIHN0b3JlIHNob3VsZCBiZSBlbXB0eSIpOwogICAg
IG1fbWVtb3J5U3RvcmUubWVyZ2VXaXRoRGF0YUZyb21EZWNvZGVyKCpkZWNvZGVyKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBlMzRjNWU5NjNj
ZDNjYmQwNWRhZjI2NmIzOTNjNzkyODliMTNlZDEwLi40NzlmNTE2MTg1OWE4ODYzOGE4ZDI4ZTUw
OGM5NWQxOGY1MTQ4OGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcApAQCAtNTIsOSArNTIsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBjb25zdGV4cHIgU2Vjb25kcyBtaW5pbXVtU3RhdGlzdGljc1Byb2Nl
c3NpbmdJbnRlcnZhbCB7IDVfcyB9OwotY29uc3RleHByIHVuc2lnbmVkIG9wZXJhdGluZ0RhdGVz
V2luZG93TG9uZyB7IDMwIH07Ci1jb25zdGV4cHIgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5k
b3dTaG9ydCB7IDcgfTsKLWNvbnN0ZXhwciBTZWNvbmRzIG9wZXJhdGluZ1RpbWVXaW5kb3dGb3JM
aXZlT25UZXN0aW5nIHsgMV9oIH07CiAKIHN0YXRpYyBTdHJpbmcgZG9tYWluc1RvU3RyaW5nKGNv
bnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnMpCiB7CkBAIC0xMzMsOCArMTMw
LDYgQEAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGkKICAgICAsIG1fc2hvdWxkSW5jbHVkZUxvY2Fs
aG9zdChzaG91bGRJbmNsdWRlTG9jYWxob3N0KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwotCi0gICAgaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKTsK
IH0KIAogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlKCkKQEAgLTQ1MSw5NyArNDQ2LDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnVwZGF0ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyhjb25zdCBSZWdpc3RyYWIKICAg
ICAgICAgfSk7CiAgICAgfSk7CiB9Ci0gICAgCi0KLU9wdGlvbmFsPFNlY29uZHM+IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhdGlzdGljc0VwaXJhdGlvblRpbWUoKSBjb25zdAotewot
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKG1fcGFyYW1ldGVycy50
aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKQotICAgICAgICByZXR1cm4gV2FsbFRpbWU6Om5vdygp
LnNlY29uZHNTaW5jZUVwb2NoKCkgLSBtX3BhcmFtZXRlcnMudGltZVRvTGl2ZVVzZXJJbnRlcmFj
dGlvbi52YWx1ZSgpOwotICAgIAotICAgIGlmIChtX29wZXJhdGluZ0RhdGVzLnNpemUoKSA+PSBv
cGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcpCi0gICAgICAgIHJldHVybiBtX29wZXJhdGluZ0RhdGVz
LmZpcnN0KCkuc2Vjb25kc1NpbmNlRXBvY2goKTsKLSAgICAKLSAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwotfQotCi1WZWN0b3I8T3BlcmF0aW5nRGF0ZT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjptZXJnZU9wZXJhdGluZ0RhdGVzKGNvbnN0IFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYgZXhp
c3RpbmdEYXRlcywgVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiYgbmV3RGF0ZXMpCi17Ci0gICAgaWYg
KGV4aXN0aW5nRGF0ZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gV1RGTW92ZShuZXdEYXRl
cyk7Ci0gICAgCi0gICAgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1lcmdlZERhdGVzKGV4aXN0aW5n
RGF0ZXMuc2l6ZSgpICsgbmV3RGF0ZXMuc2l6ZSgpKTsKLSAgICAKLSAgICAvLyBNZXJnZSB0aGUg
dHdvIHNvcnRlZCB2ZWN0b3JzIG9mIGRhdGVzLgotICAgIHN0ZDo6bWVyZ2UoZXhpc3RpbmdEYXRl
cy5iZWdpbigpLCBleGlzdGluZ0RhdGVzLmVuZCgpLCBuZXdEYXRlcy5iZWdpbigpLCBuZXdEYXRl
cy5lbmQoKSwgbWVyZ2VkRGF0ZXMuYmVnaW4oKSk7Ci0gICAgLy8gUmVtb3ZlIGR1cGxpY2F0ZSBk
YXRlcy4KLSAgICByZW1vdmVSZXBlYXRlZEVsZW1lbnRzKG1lcmdlZERhdGVzKTsKLSAgICAKLSAg
ICAvLyBEcm9wIG9sZCBkYXRlcyB1bnRpbCB0aGUgVmVjdG9yIHNpemUgcmVhY2hlcyBvcGVyYXRp
bmdEYXRlc1dpbmRvd0xvbmcuCi0gICAgd2hpbGUgKG1lcmdlZERhdGVzLnNpemUoKSA+IG9wZXJh
dGluZ0RhdGVzV2luZG93TG9uZykKLSAgICAgICAgbWVyZ2VkRGF0ZXMucmVtb3ZlKDApOwotICAg
IAotICAgIHJldHVybiBtZXJnZWREYXRlczsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6Om1lcmdlT3BlcmF0aW5nRGF0ZXMoVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiYgbmV3
RGF0ZXMpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBtX29wZXJh
dGluZ0RhdGVzID0gbWVyZ2VPcGVyYXRpbmdEYXRlcyhtX29wZXJhdGluZ0RhdGVzLCBXVEZNb3Zl
KG5ld0RhdGVzKSk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppbmNs
dWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpCi17Ci0gICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7Ci0KLSAgICBhdXRvIHRvZGF5ID0gT3BlcmF0aW5nRGF0ZTo6dG9kYXko
KTsKLSAgICBpZiAoIW1fb3BlcmF0aW5nRGF0ZXMuaXNFbXB0eSgpICYmIHRvZGF5IDw9IG1fb3Bl
cmF0aW5nRGF0ZXMubGFzdCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB3aGlsZSAobV9vcGVy
YXRpbmdEYXRlcy5zaXplKCkgPj0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nKQotICAgICAgICBt
X29wZXJhdGluZ0RhdGVzLnJlbW92ZSgwKTsKLQotICAgIG1fb3BlcmF0aW5nRGF0ZXMuYXBwZW5k
KHRvZGF5KTsKLX0KLQotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0YXRp
c3RpY3NFeHBpcmVkKFdhbGxUaW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBPcGVy
YXRpbmdEYXRlc1dpbmRvdyBvcGVyYXRpbmdEYXRlc1dpbmRvdykgY29uc3QKLXsKLSAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIHVuc2lnbmVkIG9wZXJhdGluZ0RhdGVzV2lu
ZG93SW5EYXlzID0gMDsKLSAgICBzd2l0Y2ggKG9wZXJhdGluZ0RhdGVzV2luZG93KSB7Ci0gICAg
Y2FzZSBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6TG9uZzoKLSAgICAgICAgb3BlcmF0aW5nRGF0ZXNX
aW5kb3dJbkRheXMgPSBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmc7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6OlNob3J0OgotICAgICAgICBvcGVyYXRpbmdE
YXRlc1dpbmRvd0luRGF5cyA9IG9wZXJhdGluZ0RhdGVzV2luZG93U2hvcnQ7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6OkZvckxpdmVPblRlc3Rpbmc6Ci0g
ICAgICAgIHJldHVybiBXYWxsVGltZTo6bm93KCkgPiBtb3N0UmVjZW50VXNlckludGVyYWN0aW9u
VGltZSArIG9wZXJhdGluZ1RpbWVXaW5kb3dGb3JMaXZlT25UZXN0aW5nOwotICAgIGNhc2UgT3Bl
cmF0aW5nRGF0ZXNXaW5kb3c6OkZvclJlcHJvVGVzdGluZzoKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgaWYgKG1fb3BlcmF0aW5nRGF0ZXMuc2l6ZSgpID49IG9wZXJhdGluZ0Rh
dGVzV2luZG93SW5EYXlzKSB7Ci0gICAgICAgIGlmIChPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRp
bWUobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUpIDwgbV9vcGVyYXRpbmdEYXRlcy5maXJz
dCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIC8vIElmIHdl
IGRvbid0IG1lZXQgdGhlIHJlYWwgY3JpdGVyaWEgZm9yIGFuIGV4cGlyZWQgc3RhdGlzdGljLCBj
aGVjayB0aGUgdXNlciBzZXR0aW5nIGZvciBhIHRpZ2h0ZXIgcmVzdHJpY3Rpb24gKG1haW5seSBm
b3IgdGVzdGluZykuCi0gICAgaWYgKG1fcGFyYW1ldGVycy50aW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKSB7Ci0gICAgICAgIGlmIChXYWxsVGltZTo6bm93KCkgPiBtb3N0UmVjZW50VXNlckludGVy
YWN0aW9uVGltZSArIG1fcGFyYW1ldGVycy50aW1lVG9MaXZlVXNlckludGVyYWN0aW9uLnZhbHVl
KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZh
bHNlOwotfQotCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RhdGlzdGlj
c0V4cGlyZWQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMs
IE9wZXJhdGluZ0RhdGVzV2luZG93IG9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdAotewotICAg
IHJldHVybiBoYXNTdGF0aXN0aWNzRXhwaXJlZChyZXNvdXJjZVN0YXRpc3RpYy5tb3N0UmVjZW50
VXNlckludGVyYWN0aW9uVGltZSwgb3BlcmF0aW5nRGF0ZXNXaW5kb3cpOwotfQogCiBib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2hvdWxkRW5mb3JjZVNhbWVTaXRlU3RyaWN0Rm9y
U3BlY2lmaWNEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAyZGJlOWU1MGJh
ZTQ3MGY5YzgxMDVjNTJjOWY1MDNhZmJkZWY3NDY4Li5kYWI2NGZiYWUwMWYyNjZhYWYzYzYzNjFm
ZmYyYzgzMWZjOTA4Mzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oCkBAIC01OSwyMiArNTksMzAgQEAgcHVibGljOgogICAgIHN0YXRpYyBPcGVyYXRpbmdEYXRl
IGZyb21XYWxsVGltZShXYWxsVGltZSk7CiAgICAgc3RhdGljIE9wZXJhdGluZ0RhdGUgdG9kYXko
KTsKICAgICBTZWNvbmRzIHNlY29uZHNTaW5jZUVwb2NoKCkgY29uc3Q7CisgICAgaW50IHllYXIo
KSBjb25zdCB7IHJldHVybiBtX3llYXI7IH0KKyAgICBpbnQgbW9udGgoKSBjb25zdCB7IHJldHVy
biBtX21vbnRoOyB9CisgICAgaW50IG1vbnRoRGF5KCkgY29uc3QgeyByZXR1cm4gbV9tb250aERh
eTsgfQorCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE9wZXJhdGluZ0RhdGUmIG90aGVyKSBj
b25zdDsKICAgICBib29sIG9wZXJhdG9yPChjb25zdCBPcGVyYXRpbmdEYXRlJiBvdGhlcikgY29u
c3Q7CiAgICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IE9wZXJhdGluZ0RhdGUmIG90aGVyKSBjb25z
dDsKICAgICAKLXByaXZhdGU6CiAgICAgT3BlcmF0aW5nRGF0ZShpbnQgeWVhciwgaW50IG1vbnRo
LCBpbnQgbW9udGhEYXkpCiAgICAgICAgIDogbV95ZWFyKHllYXIpCiAgICAgICAgICwgbV9tb250
aChtb250aCkKICAgICAgICAgLCBtX21vbnRoRGF5KG1vbnRoRGF5KQogICAgIHsgfQogCitwcml2
YXRlOgogICAgIGludCBtX3llYXIgeyAwIH07CiAgICAgaW50IG1fbW9udGggeyAwIH07IC8vIFsw
LCAxMV0uCiAgICAgaW50IG1fbW9udGhEYXkgeyAwIH07IC8vIFsxLCAzMV0uCiB9OwogCitjb25z
dGV4cHIgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nIHsgMzAgfTsKK2NvbnN0ZXhw
ciB1bnNpZ25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvd1Nob3J0IHsgNyB9OworY29uc3RleHByIFNl
Y29uZHMgb3BlcmF0aW5nVGltZVdpbmRvd0ZvckxpdmVPblRlc3RpbmcgeyAxX2ggfTsKKwogZW51
bSBjbGFzcyBPcGVyYXRpbmdEYXRlc1dpbmRvdyA6IHVpbnQ4X3QgeyBMb25nLCBTaG9ydCwgRm9y
TGl2ZU9uVGVzdGluZywgRm9yUmVwcm9UZXN0aW5nIH07CiBlbnVtIGNsYXNzIENvb2tpZUFjY2Vz
cyA6IHVpbnQ4X3QgeyBDYW5ub3RSZXF1ZXN0LCBCYXNlZE9uQ29va2llUG9saWN5LCBPbmx5SWZH
cmFudGVkIH07CiAKQEAgLTEwNSw3ICsxMTMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVD
b29raWVCbG9ja2luZ0ZvckRvbWFpbnMoY29uc3QgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nv
b2tpZXNGb3ImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJC
bG9ja2luZ1N0YXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBk
b21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCi0gICAgdm9pZCBpbmNsdWRl
VG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOwogICAgIHZvaWQgcHJvY2Vzc1N0YXRp
c3RpY3NBbmREYXRhUmVjb3JkcygpOwogCiAgICAgdmlydHVhbCB2b2lkIGNsYXNzaWZ5UHJldmFs
ZW50UmVzb3VyY2VzKCkgPSAwOwpAQCAtMTQ4LDcgKzE1NSw2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldE1heFN0YXRpc3RpY3NFbnRyaWVzKHNpemVfdCBtYXhpbXVtRW50cnlDb3VudCk7CiAgICAg
dm9pZCBzZXRQcnVuZUVudHJpZXNEb3duVG8oc2l6ZV90IHBydW5lVGFyZ2V0Q291bnQpOwogICAg
IHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKCk7Ci0gICAgT3B0aW9uYWw8U2Vj
b25kcz4gc3RhdGlzdGljc0VwaXJhdGlvblRpbWUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBjYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoKSBjb25zdCA9IDA7CiAKQEAgLTE5NiwxOCAr
MjAyLDIwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNNZW1vcnlTdG9yZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzRGF0YWJhc2VTdG9yZSgpY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBpbmNsdWRlVG9kYXlBc09w
ZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPcGVy
YXRpbmdEYXRlcygpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQo
V2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUsIE9wZXJhdGluZ0RhdGVzV2lu
ZG93KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxTZWNvbmRzPiBzdGF0aXN0aWNz
RXhwaXJhdGlvblRpbWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluc2VydEV4cGly
ZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBoYXNV
c2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3Zh
bCwgYm9vbCkgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVJ
bXBvcnRhbmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKLSAgICBz
dGF0aWMgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1lcmdlT3BlcmF0aW5nRGF0ZXMoY29uc3QgVmVj
dG9yPE9wZXJhdGluZ0RhdGU+JiBleGlzdGluZ0RhdGVzLCBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4m
JiBuZXdEYXRlcyk7CiAKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlJiwgV29ya1F1ZXVlJiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9z
dCk7CiAgICAgCiAgICAgYm9vbCBkYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQ7IH0KIAotICAgIGJvb2wgaGFzU3RhdGlzdGlj
c0V4cGlyZWQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIE9wZXJhdGluZ0RhdGVzV2lu
ZG93KSBjb25zdDsKLSAgICBib29sIGhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1lIG1vc3RS
ZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRpbmdEYXRlc1dpbmRvdykgY29uc3Q7CiAg
ICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNzaW5nUmVxdWVzdElmTmVjZXNzYXJ5KCk7
Ci0gICAgdm9pZCBtZXJnZU9wZXJhdGluZ0RhdGVzKFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYmKTsK
ICAgICBib29sIHNob3VsZEVuZm9yY2VTYW1lU2l0ZVN0cmljdEZvclNwZWNpZmljRG9tYWluKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgdmlydHVhbCBWZWN0b3I8UmVnaXN0
cmFibGVEb21haW4+IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpID0gMDsK
ICAgICB2aXJ0dWFsIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVE
YXRhRm9yIHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9y
KCkgPSAwOwpAQCAtMjM3LDggKzI0NSw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgYm9vbCBpc1J1
bm5pbmdUZXN0IHsgZmFsc2UgfTsKICAgICB9OwogICAgIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KLSAgICBjb25zdCBWZWN0b3I8
T3BlcmF0aW5nRGF0ZT4mIG9wZXJhdGluZ0RhdGVzKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRp
bmdEYXRlczsgfQotICAgIHZvaWQgY2xlYXJPcGVyYXRpbmdEYXRlcygpIHsgbV9vcGVyYXRpbmdE
YXRlcy5jbGVhcigpOyB9CiAgICAgV2FsbFRpbWUmIGVuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3Rh
bXAoKSB7IHJldHVybiBtX2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXA7IH0KICAgICBjb25z
dCBXYWxsVGltZSYgZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJu
IG1fZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcDsgfQogICAgIHZvaWQgc2V0RW5kT2ZHcmFu
ZGZhdGhlcmluZ1RpbWVzdGFtcChjb25zdCBXYWxsVGltZSYgZ3JhbmRmYXRoZXJpbmdUaW1lKSB7
IG1fZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcCA9IGdyYW5kZmF0aGVyaW5nVGltZTsgfQpA
QCAtMjc3LDcgKzI4Myw2IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDx1aW50NjRfdD4gbV9hY3Rp
dmVQbHVnaW5Ub2tlbnM7CiAjZW5kaWYKICAgICBQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKLSAg
ICBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbV9vcGVyYXRpbmdEYXRlczsKICAgICBXYWxsVGltZSBt
X2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXA7CiAgICAgUmVnaXN0cmFibGVEb21haW4gbV9k
ZWJ1Z01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0VGlt
ZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDUzODdiNzY5MjRhN2I0MDdhMzYxMjFhYjg4YzlkZWVj
ODIyMWY4MWEuLjdlODdjMTM4MjhkMGE1NTNjMGNmNzViY2NmMmYxYzcxNzRhNzdhYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0xNDUx
LDYgKzE0NTEsMTcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc3Vt
ZSgpCiAgICAgICAgIHN1c3BlbmRlZFN0YXRlQ2hhbmdlQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwog
fQogCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0
YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgYm9vbCBo
YWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBw
b3N0VGFzayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlzb2xhdGVkQ29weSgpLCBoYWRVc2VySW50
ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFs
ZW50LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpCisgICAgICAgICAgICBtX3N0
YXRpc3RpY3NTdG9yZS0+aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoV1RGTW92ZShk
b21haW4pLCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0
YVJlbW92YWwsIGlzUHJldmFsZW50KTsKKyAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApp
bmRleCAzNDVmZDI4NzdhYzllZDIwMzQ5MTQxMGUzYmUwMWM3NjBkNmUxODdiLi5kZTJmNzYwN2E1
Y2UwZjljNTY5OTEwNGExN2ExZDhiNjU4ODA3OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yOTcsNiArMjk3LDcgQEAgc3RydWN0IFRoaXJk
UGFydHlEYXRhIHsKICAgICBzdGF0aWMgdm9pZCByZXN1bWUoKTsKICAgICAKICAgICBib29sIGlz
RXBoZW1lcmFsKCkgY29uc3QgeyByZXR1cm4gbV9pc0VwaGVtZXJhbCA9PSBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzOyB9OworICAgIHZvaWQgaW5zZXJ0
RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29s
IGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShO
ZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNWI0NmQzMzM0
MGU1MTYwZWZjNDYzNDVkNmY0NWE4ZjFlOTViMWE3Ni4uNTE2NGM2MzM1YWQxODM1OWI3OTQ1ZmU2
YzlhNTU3N2UyMTFhZmE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEwMzQsNiArMTAzNCwxOSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBSZQogICAgIH0KIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6aW5zZXJ0RXhwaXJlZFN0
YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZG9tYWluLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVk
dWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8q
IG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAg
ICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT5pbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhkb21haW4sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxl
bnQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9Cit9CisKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiBkb21h
aW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA2YmQzODE4N2IxZDBhNGM1YWJl
YjY5ZjA3ZDIwYjk2ZDIxZDZkNTY4Li4wNzU5NGM5MzgxZTg1NDEyZTg2ZDBiZjNlMzMzNmRlZjEz
OGQzNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCkBAIC0yNDAsNiArMjQwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFzdFNlZW4oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRvbWFpbklERXhpc3RzSW5EYXRhYmFzZShQ
QUw6OlNlc3Npb25JRCwgaW50IGRvbWFpbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKICAgICB2b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVE
b21haW4xLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4yLCBTZWNvbmRzIGxh
c3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlcklu
dGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBp
c1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaGFkVXNl
ckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWws
IGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQs
IFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXROb3Rp
ZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKFBBTDo6U2Vzc2lvbklELCBib29sIHZh
bHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0SXNSdW5uaW5n
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3QoUEFMOjpTZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1MGJhZTQzODJm
Y2QxYjQ5MWQ5NzQ1MjcwNzEyNjM3ZGI4YTIzMWNiLi5iNjZlYTMxYTdhNzE5N2E3NjAyODI2MTZi
YmQwNWJlMGU5YWU2OWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTk1LDYgKzk1LDcgQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEFnZUNhcEZvckNs
aWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uYWw8U2Vjb25k
cz4gc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluLCBTZWNv
bmRzIHNlY29uZHMpIC0+ICgpIEFzeW5jCiAgICAgTWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3Vy
Y2VEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluMSwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4yLCBTZWNvbmRzIGxhc3RTZWVu
LCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0
aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQ
cmV2YWxlbnQsIHVpbnQ2NF90IGRhdGFSZWNvcmRzUmVtb3ZlZCkgLT4gKCkgQXN5bmMKKyAgICBJ
bnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluLCBib29sIGhhZFVzZXJJ
bnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBi
b29sIGlzUHJldmFsZW50KSAtPiAoKSBBc3luYwogICAgIFNldFByZXZhbGVudFJlc291cmNlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3Vy
Y2VEb21haW4pIC0+ICgpIEFzeW5jCiAgICAgU2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBy
ZXNvdXJjZURvbWFpbikgLT4gKCkgQXN5bmMKICAgICBJc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NF
cGhlbWVyYWwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBpc0VwaGVtZXJhbCkg
QXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDJjZmQzYTFlNDVlZWQwMjc0MzllMjNlYTA5MTVjODdl
MWY3NTA1MDAuLjBhN2Q4MDY0ZGM4NDIwM2RkYzUwZjFkMDViYzM4ODI2Yjg2NDYwMGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcApAQCAtMTY5LDYgKzE2OSwxNyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0bwog
I2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0V4cGlyZWRT
dGF0aXN0aWMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYg
aG9zdCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRD
b29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgdm9pZCogY29udGV4dCwgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc01lcmdlU3RhdGlzdGljRnVuY3Rpb24gY29tcGxldGlvbkhh
bmRsZXIpCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJL
aXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5pbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGlu
ZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSksIGhhZFVzZXJJbnRl
cmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxl
bnQsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihjb250ZXh0KTsKKyAgICB9KTsKKyNlbHNlCisgICAgY29tcGxldGlvbkhhbmRsZXIoY29u
dGV4dCk7CisjZW5kaWYKK30KKwogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNz
UHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tT
dHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKaW5kZXgg
NzFiOTdmM2NiZjY5ODRkNTQyYjQ4OGQ1OGM5MDI1N2U0NzNhNjBiOS4uMzUyNTI2MmZhNDE4NTEw
ODY2OTE3ZGFkYjQ1YTk4MTkzODhiMTE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAgLTU1LDYgKzU1LDggQEAg
dHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0xhc3RTZWVuRnVuY3Rp
b24pKHZvaWQqIGZ1bmN0aW9uQ29udGUKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldFN0YXRpc3RpY3NMYXN0U2VlbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBkb3VibGUgc2Vjb25kcywgdm9pZCogY29udGV4dCwgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc0xhc3RTZWVuRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
OwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc01lcmdlU3RhdGlz
dGljRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJh
bWVEb21haW4xLCBXS1N0cmluZ1JlZiB0b3BGcmFtZURvbWFpbjIsIGRvdWJsZSBsYXN0U2Vlbiwg
Ym9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9u
LCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2
YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgdm9pZCogY29udGV4dCwgV0tXZWJz
aXRlRGF0YVN0b3JlU3RhdGlzdGljc01lcmdlU3RhdGlzdGljRnVuY3Rpb24gY29tcGxldGlvbkhh
bmRsZXIpOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0V4cGly
ZWRTdGF0aXN0aWNGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgaGFk
VXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwsIGJvb2wgaXNQcmV2YWxlbnQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlw
ZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNl
RnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRnVu
Y3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZUZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlv
bkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMzZmN2M0NWYwYmRhYTUyYjVkOGYxMTAyYWEz
OGI2ZTc5YTVkNjg0MC4uZDgwNmI5MjU3YzlhODZjYWRiMDI5ZWZhMjIxMzQ2NzkxMWUxMTg5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCkBAIC01OTMsNiArNTkzLDExIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6TWVy
Z2VTdGF0aXN0aWNGb3JUZXN0aW5nKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIHRvcEZyYW1l
RG9tYWluMSwgdG9wRnJhbWVEb21haW4yLCBsYXN0U2VlbiwgaGFkVXNlckludGVyYWN0aW9uLCBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBpc0dyYW5kZmF0aGVyZWQsIGlzUHJldmFsZW50LCBp
c1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3ZlZCksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjppbnNlcnRFeHBpcmVkU3Rh
dGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wg
aXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okluc2VydEV4cGlyZWRT
dGF0aXN0aWNGb3JUZXN0aW5nKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxl
bnQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3Nh
Z2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAppbmRleCBlYzMwMmJiZjA4MDc1MDFkNmFiNjgyZWRjOGUyNzI5MjFj
NzBmNTU0Li44NTQ3Y2Y2M2IyODMyNjVlNDM1NWRlNzA0MDRjMWYwMmZhN2IxZDEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaApAQCAtMTM0LDYgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRvbWFpbklERXhpc3Rz
SW5EYXRhYmFzZShQQUw6OlNlc3Npb25JRCwgaW50IGRvbWFpbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHN0YXRpc3RpY3NEYXRhYmFzZUhhc0FsbFRhYmxl
cyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluMSwgY29u
c3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluMiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9v
bCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwg
Ym9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFs
ZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CisgICAgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhZFVzZXJJbnRlcmFjdGlv
biwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJl
dmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0QWdlQ2Fw
Rm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXAo
UEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBjMDZmMDI2YTM2YjZlNzI4ZmQ1M2E1ZGMzNjU1ZDlk
NTJjMzQ4ZTIxLi41YTUyN2QxNmVjNmFlZjI3ZjUxODlhMDRiMDEwYjI5YmMyYTAzODUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcApAQCAtMTYyMiw3ICsxNjIyLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
Ojpkb21haW5JREV4aXN0c0luRGF0YWJhc2UoaW50IGRvbWFpbklELCBDb21wbGV0aW9uSGFuZGxl
cjwKICAgICB9CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6bWVyZ2VTdGF0aXN0aWNGb3JU
ZXN0aW5nKGNvbnN0IFVSTCYgdXJsICwgY29uc3QgVVJMJiB0b3BGcmFtZVVybDEsIGNvbnN0IFVS
TCYgdG9wRnJhbWVVcmwyLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlv
biwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJl
ZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFS
ZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgdG9wRnJhbWVVcmwxLCBjb25zdCBVUkwmIHRvcEZyYW1l
VXJsMiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMg
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQ
cmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92
ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAodXJsLnByb3RvY29sSXNBYm91dCgpIHx8IHVybC5pc0VtcHR5KCkpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2MzcsNiArMTYzNywyMSBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCAsIGNvbnN0
IFVSTCYgdG9wRgogICAgIH0KIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjppbnNlcnRFeHBp
cmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCwgYm9vbCBoYWRVc2VySW50ZXJh
Y3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBp
c1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGlmICh1cmwucHJvdG9jb2xJc0Fib3V0KCkgfHwgdXJsLmlzRW1wdHkoKSkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29s
IDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNz
UG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgICAgIHByb2Nlc3MtPmluc2VydEV4cGly
ZWRTdGF0aXN0aWNGb3JUZXN0aW5nKG1fc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiB7IHVybCB9LCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29v
a2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50LCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVn
YXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CisgICAgfQorfQorCiB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdh
dG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4
IGEzNWI2OTc5NzVhOWYxNWRlMTIyMjkxZDliZDhkYTNhMjMxMjRhZDcuLmRiZGEwNDE4OGMxNGMx
NjUzNDRkZDUwODQyYjZhYzk0NGUwZDM5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTE3Miw2ICsxNzIs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkb21haW5JREV4aXN0c0luRGF0YWJhc2UoaW50IGRvbWFp
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHN0YXRpc3Rp
Y3NEYXRhYmFzZUhhc0FsbFRhYmxlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICB2b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBVUkwmLCBjb25zdCBVUkwm
IHRvcEZyYW1lVXJsMSwgY29uc3QgVVJMJiB0b3BGcmFtZVVybDIsIFNlY29uZHMgbGFzdFNlZW4s
IGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVBy
ZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29u
c3QgVVJMJiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxC
dXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldElz
UnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KGJvb2wsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcnVuZUVudHJpZXNEb3duVG8oc2l6ZV90LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE2YzY5OWI5ZTk5NDU3MGJhMGJiNjQ5OWJiOTc4Y2JkOGU3
OGJiYzEuLmZjNDQ1MDg2MWRjM2RlNjFiYzUzYmU3Nzk1Mjc5YmUyYTNmYzNmMjUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBA
QAorMjAyMC0wNS0xOCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4K
KworICAgICAgICBTdXBwb3J0IG9wZXJhdGluZyBkYXRlcyBpbiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjEyMDM0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MzM0OTI0Mj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0ZXN0aW5n
IGZ1bmN0aW9uIHRvIGluc2VydCBhbiBleHBpcmVkIHN0YXRpc3RpYy4KKworICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFn
ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0
aXN0aWMpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldEV4
cGlyZWRTdGF0aXN0aWNDYWxsYmFjayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0
aWNzRXhwaXJlZFN0YXRpc3RpYyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
OgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkU2V0RXhwaXJl
ZFN0YXRpc3RpYyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5o
OgorCiAyMDIwLTA1LTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW2lPUyBTaW11bGF0b3JdIFRlc3RXZWJLaXRBUEkuX1dLRG93bmxvYWQu
UmVzdW1lIGlzIGEgZmxha3kgY3Jhc2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGEx
OWRmOTVmNjQwNTViZWRiMDUyN2QwZGNhYmM3ODZmZjA3ZDQ3OGQuLmNmYTFiNWMzOTMzNzZmOTNh
MjAyZTc1MTAzNWM0MGYxYjAzOTRiMGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAt
MzAzLDYgKzMwMyw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHNldFN0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShET01TdHJpbmcgaG9zdE5hbWUsIG9i
amVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTGFzdFNlZW4o
RE9NU3RyaW5nIGhvc3ROYW1lLCBkb3VibGUgc2Vjb25kcywgb2JqZWN0IGNvbXBsZXRpb25IYW5k
bGVyKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhET01TdHJpbmcgaG9z
dE5hbWUsIERPTVN0cmluZyB0b3BGcmFtZURvbWFpbjEsIERPTVN0cmluZyB0b3BGcmFtZURvbWFp
bjIsIGRvdWJsZSBsYXN0U2VlbiwgYm9vbGVhbiBoYWRVc2VySW50ZXJhY3Rpb24sIGRvdWJsZSBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sZWFuIGlzR3JhbmRmYXRoZXJlZCwgYm9vbGVh
biBpc1ByZXZhbGVudCwgYm9vbGVhbiBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGxvbmcgZGF0
YVJlY29yZHNSZW1vdmVkLCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgc2V0
U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoRE9NU3RyaW5nIGhvc3ROYW1lLCBib29sZWFuIGhh
ZFVzZXJJbnRlcmFjdGlvbiwgYm9vbGVhbiBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFS
ZW1vdmFsLCBib29sZWFuIGlzUHJldmFsZW50LCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOwog
ICAgIHZvaWQgc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKERPTVN0cmluZyBob3N0TmFt
ZSwgYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoRE9NU3RyaW5nIGhvc3ROYW1lLCBib29s
ZWFuIHZhbHVlLCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIGJvb2xlYW4gaXNTdGF0
aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoRE9NU3RyaW5nIGhvc3ROYW1lKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKaW5kZXggZmU1ZDc1NzRkNzFmMzNjZWNhYWEyYzc2YWM3MTQ0ZThlY2QzN2YyNy4uNTM2OWNl
MGFjYjZmNzgwYTdjZWEyNzFjMGFmM2IxMzYwNDZlZTg1YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAg
LTM4Niw2ICszODYsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VU
b1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90ZXN0
UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldE1lcmdlU3RhdGlzdGljQ2FsbGJhY2soKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRTZXRFeHBpcmVkU3RhdGlzdGljIikpIHsKKyAg
ICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldEV4cGlyZWRTdGF0aXN0aWND
YWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKFdLU3RyaW5nSXNF
cXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkU2V0UHJldmFsZW50UmVzb3Vy
Y2UiKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3RpY3NDYWxsRGlkU2V0UHJldmFs
ZW50UmVzb3VyY2VDYWxsYmFjaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggNGExOGMxODkzNTA3ZDNkNmQzZDRm
ZmJkZDFiZDA5NDE4NzU1MDViOC4uYmFmYzc2MzdhZWU2YzY3OTdjMTFhNTdjZmFiOGY5YWMxMDZm
MWZiNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCkBAIC03NDEsNiArNzQxLDcgQEAgZW51bSB7CiAgICAgU2V0U3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlQ2FsbGJhY2tJRCwKICAgICBTZXRTdGF0
aXN0aWNzTGFzdFNlZW5DYWxsYmFja0lELAogICAgIFNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3Rp
Y0NhbGxiYWNrSUQsCisgICAgU2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWNDYWxsYmFja0lE
LAogICAgIFNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUNhbGxiYWNrSUQsCiAgICAgU2V0
U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZUNhbGxiYWNrSUQsCiAgICAgU2V0U3RhdGlz
dGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkNhbGxiYWNrSUQsCkBAIC0xNTc1LDYgKzE1NzYsNDIg
QEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldE1lcmdlU3RhdGlzdGljQ2Fs
bGJhY2soKQogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU2V0U3RhdGlzdGljc01lcmdlU3Rh
dGlzdGljQ2FsbGJhY2tJRCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc0V4
cGlyZWRTdGF0aXN0aWMoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgaGFkVXNlckludGVyYWN0
aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQ
cmV2YWxlbnQsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY2FjaGVUZXN0
UnVubmVyQ2FsbGJhY2soU2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWNDYWxsYmFja0lELCBj
b21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
PiBrZXlzOworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CisKKyAg
ICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0
TmFtZSIpKSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aEpT
U3RyaW5nKGhvc3ROYW1lKSkpOworCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiSGFkVXNlckludGVyYWN0aW9uIikpKTsKKyAgICB2YWx1ZXMu
YXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGhhZFVzZXJJbnRlcmFjdGlvbikpKTsKKwor
ICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIklz
U2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwiKSkpOworICAgIHZhbHVlcy5hcHBl
bmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRh
UmVtb3ZhbCkpKTsKKworICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIklzUHJldmFsZW50IikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0so
V0tCb29sZWFuQ3JlYXRlKGlzUHJldmFsZW50KSkpOworICAgIAorICAgIFZlY3RvcjxXS1N0cmlu
Z1JlZj4gcmF3S2V5cyhrZXlzLnNpemUoKSk7CisgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3VmFs
dWVzKHZhbHVlcy5zaXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIHJhd0tleXNbaV0gPSBrZXlzW2ldLmdldCgpOworICAgICAg
ICByYXdWYWx1ZXNbaV0gPSB2YWx1ZXNbaV0uZ2V0KCk7CisgICAgfQorICAgIFdLUmV0YWluUHRy
PFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIlNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljIikpOworICAgIFdLUmV0YWlu
UHRyPFdLRGljdGlvbmFyeVJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLRGljdGlvbmFyeUNy
ZWF0ZShyYXdLZXlzLmRhdGEoKSwgcmF3VmFsdWVzLmRhdGEoKSwgcmF3S2V5cy5zaXplKCkpKTsK
KyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5k
bGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwordm9pZCBU
ZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldEV4cGlyZWRTdGF0aXN0aWNDYWxsYmFjaygp
Cit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRp
c3RpY0NhbGxiYWNrSUQpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZShKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSwgSlNWYWx1ZVJl
ZiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhTZXRT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VDYWxsYmFja0lELCBjb21wbGV0aW9uSGFuZGxlcik7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5oCmluZGV4IGNlODAxYTNiMzJiOWFiZTA3YjhlYWYyODZkZGNkYTRmYzhkZjQ1YTcuLjNhNTIy
NGQyYTRlMTExODc4OWU4M2MxMzNlYTAzMmJhOGQwZTA3ZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00MDMsNiArNDAz
LDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRMYXN0U2VlbkNhbGxi
YWNrKCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMoSlNTdHJpbmdSZWYg
aG9zdE5hbWUsIEpTU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluMSwgSlNTdHJpbmdSZWYgdG9wRnJh
bWVEb21haW4yLCBkb3VibGUgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBkb3Vi
bGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wg
aXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1Jl
bW92ZWQsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlzdGlj
c0NhbGxEaWRTZXRNZXJnZVN0YXRpc3RpY0NhbGxiYWNrKCk7CisgICAgdm9pZCBzZXRTdGF0aXN0
aWNzRXhwaXJlZFN0YXRpc3RpYyhKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCBoYWRVc2VySW50
ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9v
bCBpc1ByZXZhbGVudCwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9pZCBz
dGF0aXN0aWNzQ2FsbERpZFNldEV4cGlyZWRTdGF0aXN0aWNDYWxsYmFjaygpOwogICAgIHZvaWQg
c2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBib29s
IHZhbHVlLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3Rp
Y3NDYWxsRGlkU2V0UHJldmFsZW50UmVzb3VyY2VDYWxsYmFjaygpOwogICAgIHZvaWQgc2V0U3Rh
dGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2
YWx1ZSwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDQ3NDYwMzIyYzZmMGNiNTE0NzU2ZmFmNTMzNTA4
OTI1ZDM2MDcxNDkuLjhkMmM4ZGVlNTRhMDY0M2JiOTZiNzMwODdkYjdjOTk4NDY1ZmUwZGEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNDc3LDYgKzM0
NzcsMTQgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGlj
KFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHQKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9u
LT5kaWRNZXJnZVN0YXRpc3RpYygpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRTdGF0
aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhXS1N0cmluZ1JlZiBob3N0LCBib29sIGhhZFVzZXJJbnRl
cmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29s
IGlzUHJldmFsZW50KQoreworICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBj
b250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzRXhwaXJl
ZFN0YXRpc3RpYyh3ZWJzaXRlRGF0YVN0b3JlKCksIGhvc3QsIGhhZFVzZXJJbnRlcmFjdGlvbiwg
aXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQsICZjb250
ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOworICAgIHJ1blVudGls
KGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRT
ZXRFeHBpcmVkU3RhdGlzdGljKCk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlKQogewog
ICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAwNTQ2MWM0ZDkxN2RhMGRk
OTM1NzNmYjM4MWU5MzUyNTI1YjFiODE1Li4xZDE0MmE2NzRjY2ZkZTA3YjIzZGJmNzFiYzAyMDk4
YTMxNjIzNTNkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0y
MjIsNiArMjIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlRm9yRGVidWdNb2RlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2b2lkIHNldFN0
YXRpc3RpY3NMYXN0U2VlbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgZG91YmxlIHNlY29uZHMpOwog
ICAgIHZvaWQgc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKFdLU3RyaW5nUmVmIGhvc3QsIFdL
U3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluMSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVEb21haW4yLCBk
b3VibGUgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUgbW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQs
IGJvb2wgaXNWZXJ5UHJldmFsZW50LCBpbnQgZGF0YVJlY29yZHNSZW1vdmVkKTsKKyAgICB2b2lk
IHNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgaGFk
VXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwsIGJvb2wgaXNQcmV2YWxlbnQpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKTsKICAgICB2b2lkIHNldFN0
YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wg
dmFsdWUpOwogICAgIFN0cmluZyBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBlYTFhOWY3ZmEwOGRmZTIy
YTBjZmJhYWRlZGFkMjdiN2UwMDJkMDI2Li41MDI5ZDJmZjNjY2IyM2NlODNjMWNhNzIxZDFkMGM1
NmNmNTgyNDQ4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApA
QCAtODcxLDYgKzg3MSwyNSBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2Fn
ZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICBUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKGhvc3RO
YW1lLCB0b3BGcmFtZURvbWFpbjEsIHRvcEZyYW1lRG9tYWluMiwgV0tEb3VibGVHZXRWYWx1ZShs
YXN0U2VlbiksIFdLQm9vbGVhbkdldFZhbHVlKGhhZFVzZXJJbnRlcmFjdGlvbiksIFdLRG91Ymxl
R2V0VmFsdWUobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiksIFdLQm9vbGVhbkdldFZhbHVlKGlz
R3JhbmRmYXRoZXJlZCksIFdLQm9vbGVhbkdldFZhbHVlKGlzUHJldmFsZW50KSwgV0tCb29sZWFu
R2V0VmFsdWUoaXNWZXJ5UHJldmFsZW50KSwgV0tVSW50NjRHZXRWYWx1ZShkYXRhUmVjb3Jkc1Jl
bW92ZWQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NFeHBpcmVkU3Rh
dGlzdGljIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBX
S0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CisKKyAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJv
ZHkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaG9zdE5hbWVLZXkgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIpKTsKKyAgICAgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhhZFVzZXJJbnRlcmFjdGlvbktleSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhhZFVzZXJJbnRlcmFjdGlvbiIpKTsKKyAg
ICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25L
ZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uIikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaXNTY2hl
ZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIklzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwi
KSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBpc1ByZXZhbGVudEtleSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIklzUHJldmFsZW50IikpOworCisg
ICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFtZUtl
eS5nZXQoKSkpOworICAgICAgICBXS0Jvb2xlYW5SZWYgaGFkVXNlckludGVyYWN0aW9uID0gc3Rh
dGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VC
b2R5RGljdGlvbmFyeSwgaGFkVXNlckludGVyYWN0aW9uS2V5LmdldCgpKSk7CisgICAgICAgIFdL
Qm9vbGVhblJlZiBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsID0gc3RhdGlj
X2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5
RGljdGlvbmFyeSwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEtleS5nZXQo
KSkpOworICAgICAgICBXS0Jvb2xlYW5SZWYgaXNQcmV2YWxlbnQgPSBzdGF0aWNfY2FzdDxXS0Jv
b2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5
LCBpc1ByZXZhbGVudEtleS5nZXQoKSkpOworCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5n
bGV0b24oKS5zZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhob3N0TmFtZSwgV0tCb29sZWFu
R2V0VmFsdWUoaGFkVXNlckludGVyYWN0aW9uKSwgV0tCb29sZWFuR2V0VmFsdWUoaXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCksIFdLQm9vbGVhbkdldFZhbHVlKGlzUHJldmFs
ZW50KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZSIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tEaWN0
aW9uYXJ5R2V0VHlwZUlEKCkpOwpAQCAtMTk3Miw2ICsxOTkxLDEyIEBAIHZvaWQgVGVzdEludm9j
YXRpb246OmRpZE1lcmdlU3RhdGlzdGljKCkKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0
ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2Uo
KSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRT
ZXRFeHBpcmVkU3RhdGlzdGljKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVz
c2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlk
U2V0RXhwaXJlZFN0YXRpc3RpYyIpKTsKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRC
dW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRQ
cmV2YWxlbnRSZXNvdXJjZSgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3Nh
Z2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFNl
dFByZXZhbGVudFJlc291cmNlIikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5oCmluZGV4IDI5MzQ0MGMzNjFiNjFkMjQ4YTNmZTNmOTRjMjhhMDViMWNmNDlmZDIuLjYyMzFi
MGMyMDQ0NDVhZDYwYzk1ZDNlODE3ZmIzMGY0NzZmOGUxYTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTgzLDYgKzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkU2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoKTsKICAgICB2b2lkIGRpZFNldExh
c3RTZWVuKCk7CiAgICAgdm9pZCBkaWRNZXJnZVN0YXRpc3RpYygpOworICAgIHZvaWQgZGlkU2V0
RXhwaXJlZFN0YXRpc3RpYygpOwogICAgIHZvaWQgZGlkU2V0UHJldmFsZW50UmVzb3VyY2UoKTsK
ICAgICB2b2lkIGRpZFNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZSgpOwogICAgIHZvaWQgZGlkU2V0
SGFzSGFkVXNlckludGVyYWN0aW9uKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTc4OGE0NWI3NzNkMDI3MjZlNGJhZjRj
ZjBlODRjN2Q5NjdhNDAwYi4uYTBhNGQ3ODg0MmE3NTE0MTU2MDdhZjVlYTdlNzYyMjlkNjJkZTM5
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA1LTE4ICBLYXRlIENoZW5leSAgPGthdGhl
cmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgb3BlcmF0aW5nIGRhdGVz
IGluIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIwMzQKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzYzMzQ5MjQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCB0ZXN0cyBmb3IgbWVtb3J5IGFuZCBkYXRhYmFzZSBzdG9yZXMuCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVz
LWFsbC1idXQtY29va2llcy1yZW1vdmVkLWRhdGFiYXNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRl
cy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC1kYXRhYmFzZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1i
dXQtY29va2llcy1yZW1vdmVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tp
ZXMtcmVtb3ZlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEtcmVtb3ZlZC1kYXRh
YmFzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLXdlYnNpdGUtZGF0YS1yZW1vdmVkLWRh
dGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLXdlYnNpdGUtZGF0YS1yZW1vdmVkLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQuaHRtbDogQWRkZWQuCisK
IDIwMjAtMDUtMTIgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAK
ICAgICAgICAgW1dpbkNhaXJvXVtXSzFdIHJlcXVlc3RBbmltYXRpb25GcmFtZSBkb2Vzbid0IHdv
cmsgc2luY2UgcjI0NDE4MiBpbiBBY2NlbGVyYXRlZCBDb21wb3NpdGluZyBtb2RlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0
aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmct
ZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtZGF0YWJhc2UtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY1YTVlYTI0MTA4NWU0YjUxMWE4MTBmODk2YWM0ZTM0OTlhODQ3NDAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mv
b3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLWRhdGFiYXNlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE0IEBACisKK0JlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IENs
aWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBI
dHRwT25seSBjb29raWUgZXhpc3RzLgorQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogUmVn
dWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vz
c2luZzogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCitCZWZvcmUgc3RhdGlzdGljcyBw
cm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIgc3RhdGlzdGljcyBwcm9j
ZXNzaW5nOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNz
aW5nOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNz
aW5nOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCitBZnRlciBzdGF0aXN0aWNz
IHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIG5vdCBleGlzdC4KK0FmdGVyIHN0
YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LgorCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVy
YXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtZGF0YWJhc2UuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMt
YWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtZGF0YWJhc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2UzMTI4
MTllMTlmOWRkZDg2OGJhNmNhNzMzNzgyNTJhMGJhYTk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRl
cy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC1kYXRhYmFzZS5odG1sCkBAIC0wLDAgKzEsMjUyIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29r
aWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJzZXRUaW1lb3V0KCdydW5UZXN0KCknLCAwKSI+Cis8YnI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwv
ZGl2PgorPGJyPgorPHNjcmlwdD4KKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAg
ICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLnNldFVzZUlUUERhdGFi
YXNlKHRydWUpOworCisgICAgY29uc3QgaHR0cE9ubHlDb29raWVOYW1lID0gImh0dHAtb25seS1j
b29raWUiOworICAgIGNvbnN0IHNlcnZlclNpZGVDb29raWVOYW1lID0gInNlcnZlci1zaWRlLWNv
b2tpZSI7CisgICAgY29uc3QgY2xpZW50U2lkZUNvb2tpZU5hbWUgPSAiY2xpZW50LXNpZGUtY29v
a2llIjsKKworICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdBcnJheShhLCBiKSB7CisgICAgICAgIGEg
PSBhLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIGIgPSBiLnRvTG93ZXJDYXNlKCk7CisKKyAgICAg
ICAgcmV0dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEgOiAwOworICAgIH0KKworICAgIGZ1bmN0
aW9uIGFkZExpbmVicmVha1RvT3V0cHV0KCkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVt
ZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRPdXRwdXQobWVzc2FnZSkgeworICAgICAg
ICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBl
bGVtZW50LmlubmVyVGV4dCA9IG1lc3NhZ2U7CisgICAgICAgIG91dHB1dC5hcHBlbmRDaGlsZChl
bGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZXMoaXNBZnRlckRlbGV0
aW9uKSB7CisgICAgICAgIGxldCB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IFtdOworICAg
ICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRDb29raWVzKCk7CisgICAgICAgIGlmICgh
Y29va2llcy5sZW5ndGggJiYgaXNBZnRlckRlbGV0aW9uKQorICAgICAgICAgICAgYWRkT3V0cHV0
KCJGQUlMOiAiICsgIk5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAgIGZvciAobGV0IGNvb2tp
ZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNvb2tpZS5uYW1lKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBodHRwT25seUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAg
IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRl
ciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogIiArIChpc0FmdGVyRGVs
ZXRpb24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2ZXJTaWRlQ29va2ll
TmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVz
aCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc3RhdGlzdGljcyBw
cm9jZXNzaW5nOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgY2xpZW50U2lkZUNvb2tp
ZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1
c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3Mg
cHJvY2Vzc2luZzogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGV0IHNvcnRl
ZFRlc3RQYXNzZWRNZXNzYWdlcyA9IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnNvcnQoc29y
dFN0cmluZ0FycmF5KTsKKyAgICAgICAgZm9yIChsZXQgdGVzdFBhc3NlZE1lc3NhZ2Ugb2Ygc29y
dGVkVGVzdFBhc3NlZE1lc3NhZ2VzKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQodGVzdFBhc3Nl
ZE1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgZGJOYW1lID0gIlRlc3RE
YXRhYmFzZSI7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVJREJEYXRhU3RvcmUoY2FsbGJhY2spIHsK
KyAgICAgICAgbGV0IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCgiQ291
bGRuJ3QgY3JlYXRlIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAgICAgbGV0IGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAg
ICAgIGxldCBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0Iiwge2F1dG9JbmNy
ZW1lbnQ6IHRydWV9KTsKKyAgICAgICAgICAgIG9ialN0b3JlLmFkZCgidmFsdWUiKTsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBtYXhJbnRl
cnZhbHMgPSAyMDsKKworICAgIGxldCBpbnRlcnZhbENvdW50ZXJJREI7CisgICAgbGV0IGNoZWNr
SURCQ2FsbGJhY2s7CisgICAgbGV0IGNoZWNrSURCSW50ZXJ2YWxJRDsKKyAgICBsZXQgc2VtYXBo
b3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICBmdW5jdGlvbiBjaGVja0lEQkRhdGFTdG9yZUV4aXN0
cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0OworICAg
ICAgICBpbnRlcnZhbENvdW50ZXJJREIgPSAwOworICAgICAgICBjaGVja0lEQkNhbGxiYWNrID0g
Y2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAgICAv
LyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2
YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1h
cGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2lu
dGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBh
ZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIG5v
dCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3Bl
bihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50
ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9w
ZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hl
Y2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhl
IG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1h
cGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzog
SURCIGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhv
cmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxs
YmFjaygpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1
bnRpbCB0aGVyZSBpcyBubyBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBz
ZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbWFwaG9yZUlE
QkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgc2Vt
YXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxD
b3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhcklu
dGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1
dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsK
KyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOwor
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERC
LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURC
SW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0
YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4gYmVj
YXVzZSBkZWxldGlvbiBtaWdodCBiZSBkZWxheWVkLgorICAgICAgICAgICAgICAgICAgICAgICAg
c2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9CisgICAgfQorCisg
ICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZTsKKyAgICBsZXQgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEOworICAg
IGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7CisgICAgY29uc3QgbG9jYWxTdG9yYWdl
VmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlz
QWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVyTG9jYWxT
dG9yYWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNr
OworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sg
dW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
aWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAg
ICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJ
RCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVt
KGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9y
ZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09
PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsK
KyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3Jh
Z2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFs
KGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2
YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAg
ICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2Fs
U3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6
ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2Nh
bFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEw
MCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBp
cyBubyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFs
SUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRl
cnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAg
ICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9y
YWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGlj
cyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9y
YWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAg
ICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5V
bmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2Nh
bFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9j
YWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50
cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3Qi
KSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2Fs
bGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAg
ICB9CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRp
bnVlKCkgeworICAgICAgICAvLyBXcml0ZSBjb29raWVzLgorICAgICAgICBhd2FpdCBmZXRjaCgi
L2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29va2llLnBocD9jb29raWVOYW1lPSIg
KyBodHRwT25seUNvb2tpZU5hbWUsIHsgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7Cisg
ICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0Q29va2llcy5jZ2kiLCB7
IGhlYWRlcnM6IHsgIlNldC1Db29raWUiOiBzZXJ2ZXJTaWRlQ29va2llTmFtZSArICI9MTsgcGF0
aD0vOyIgfSwgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGRvY3VtZW50
LmNvb2tpZSA9IGNsaWVudFNpZGVDb29raWVOYW1lICsgIj0xIjsKKworICAgICAgICBjaGVja0Nv
b2tpZXMoZmFsc2UpOworCisgICAgICAgIC8vIFdyaXRlIExvY2FsU3RvcmFnZQorICAgICAgICBs
b2NhbFN0b3JhZ2Uuc2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lLCBsb2NhbFN0b3JhZ2VWYWx1ZSk7
CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKwor
ICAgICAgICAgICAgLy8gV3JpdGUgSW5kZXhlZERCLgorICAgICAgICAgICAgY3JlYXRlSURCRGF0
YVN0b3JlKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4
aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZExpbmVicmVh
a1RvT3V0cHV0KCk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENv
bnRpbnVlKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUo
KSB7CisgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29y
ZHNDYWxsYmFjayhjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUpOworICAgICAgICB0ZXN0UnVu
bmVyLnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICBj
aGVja0Nvb2tpZXModHJ1ZSk7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKHRydWUs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKHRydWUs
IGZpbmlzaFRlc3QpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcmlnaW5VbmRl
clRlc3QgID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVuY3Rpb24gZmluaXNoVGVz
dCgpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVy
YWN0aW9uKG9yaWdpblVuZGVyVGVzdCkpCisgICAgICAgICAgICBhZGRPdXRwdXQoIkZBSUw6ICIg
KyBvcmlnaW5VbmRlclRlc3QgKyAiIHN0aWxsIGhhcyB1c2VyIGludGVyYWN0aW9uIGFmdGVyIHBy
b2Nlc3NpbmcuIik7CisgICAgICAgIHJlc2V0Q29va2llcygpOworICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgewor
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2Rl
KHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAvLyBpbnNlcnRTdGF0aXN0aWNz
RXhwaXJlZFN0YXRpc3RpYyhkb21haW4sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQpCisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhvcmlnaW5VbmRlclRl
c3QsIHRydWUsIHRydWUsIGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAg
d3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRp
bmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY1YTVlYTI0MTA4NWU0YjUxMWE4MTBmODk2YWM0ZTM0OTlhODQ3NDAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0
aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACisKK0JlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IENsaWVudC1zaWRlIGNvb2tp
ZSBleGlzdHMuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBIdHRwT25seSBjb29raWUg
ZXhpc3RzLgorQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogUmVndWxhciBzZXJ2ZXItc2lk
ZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9y
YWdlIGVudHJ5IGRvZXMgZXhpc3QuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIg
ZW50cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBIdHRwT25s
eSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBDbGllbnQtc2lk
ZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBSZWd1bGFyIHNl
cnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExv
Y2FsU3RvcmFnZSBlbnRyeSBkb2VzIG5vdCBleGlzdC4KK0FmdGVyIHN0YXRpc3RpY3MgcHJvY2Vz
c2luZzogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxs
LWJ1dC1jb29raWVzLXJlbW92ZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jN2UzMTI4MTllMTlmOWRkZDg2OGJhNmNhNzMzNzgyNTJhMGJhYTk1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC5odG1sCkBA
IC0wLDAgKzEsMjUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNj
cmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KCdydW5UZXN0KCknLCAwKSI+Cis8YnI+Cis8ZGl2
IGlkPSJvdXRwdXQiPjwvZGl2PgorPGJyPgorPHNjcmlwdD4KKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVy
LnNldFVzZUlUUERhdGFiYXNlKHRydWUpOworCisgICAgY29uc3QgaHR0cE9ubHlDb29raWVOYW1l
ID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNvbnN0IHNlcnZlclNpZGVDb29raWVOYW1lID0g
InNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29uc3QgY2xpZW50U2lkZUNvb2tpZU5hbWUgPSAi
Y2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdBcnJheShhLCBi
KSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIGIgPSBiLnRvTG93ZXJD
YXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEgOiAwOworICAg
IH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVicmVha1RvT3V0cHV0KCkgeworICAgICAgICBsZXQg
ZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7CisgICAgICAgIG91dHB1dC5h
cHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRPdXRwdXQobWVz
c2FnZSkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9IG1lc3NhZ2U7CisgICAgICAgIG91dHB1
dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tp
ZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgIGxldCB1bnNvcnRlZFRlc3RQYXNzZWRNZXNz
YWdlcyA9IFtdOworICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRDb29raWVzKCk7
CisgICAgICAgIGlmICghY29va2llcy5sZW5ndGggJiYgaXNBZnRlckRlbGV0aW9uKQorICAgICAg
ICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsgIk5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAg
IGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNvb2tp
ZS5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSBodHRwT25seUNvb2tpZU5hbWU6CisgICAg
ICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJE
ZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzog
IiArIChpc0FmdGVyRGVsZXRpb24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0
cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBz
ZXJ2ZXJTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFz
c2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSAr
ICIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlz
dHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
Y2xpZW50U2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBh
c3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikg
KyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4iKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgbGV0IHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IHVuc29ydGVkVGVzdFBhc3NlZE1l
c3NhZ2VzLnNvcnQoc29ydFN0cmluZ0FycmF5KTsKKyAgICAgICAgZm9yIChsZXQgdGVzdFBhc3Nl
ZE1lc3NhZ2Ugb2Ygc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzKSB7CisgICAgICAgICAgICBhZGRP
dXRwdXQodGVzdFBhc3NlZE1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3Qg
ZGJOYW1lID0gIlRlc3REYXRhYmFzZSI7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVJREJEYXRhU3Rv
cmUoY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5h
bWUpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGFkZE91dHB1dCgiQ291bGRuJ3QgY3JlYXRlIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgIGZp
bmlzaFRlc3QoKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQg
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgbGV0IGRiID0gZXZlbnQudGFyZ2V0LnJl
c3VsdDsKKyAgICAgICAgICAgIGxldCBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0
ZXN0Iiwge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKKyAgICAgICAgICAgIG9ialN0b3JlLmFkZCgi
dmFsdWUiKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBjb25zdCBtYXhJbnRlcnZhbHMgPSAyMDsKKworICAgIGxldCBpbnRlcnZhbENvdW50ZXJJREI7
CisgICAgbGV0IGNoZWNrSURCQ2FsbGJhY2s7CisgICAgbGV0IGNoZWNrSURCSW50ZXJ2YWxJRDsK
KyAgICBsZXQgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICBmdW5jdGlvbiBjaGVja0lE
QkRhdGFTdG9yZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7CisgICAgICAgIGxl
dCByZXF1ZXN0OworICAgICAgICBpbnRlcnZhbENvdW50ZXJJREIgPSAwOworICAgICAgICBjaGVj
a0lEQkNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7
CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4KKyAgICAgICAgICAg
IGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAg
ICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAg
ICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElE
QiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3Jl
SURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygp
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qg
PSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9u
ZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVy
dmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRw
dXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
c2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlz
aFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAgICAgICAgICAg
ICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZh
bElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0YXRpc3Rp
Y3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAg
ICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBJREIuCisgICAgICAgICAgICBjaGVja0lE
QkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
aWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAg
aWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAg
ICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkg
ZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIu
b3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURC
SW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0
IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURC
Q2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAg
ICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcklu
dGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRP
dXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgbm90IGV4
aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwg
Y2hlY2sgYWdhaW4gYmVjYXVzZSBkZWxldGlvbiBtaWdodCBiZSBkZWxheWVkLgorICAgICAgICAg
ICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAg
ICB9CisgICAgfQorCisgICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZTsKKyAgICBs
ZXQgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VJ
bnRlcnZhbElEOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7CisgICAgY29u
c3QgbG9jYWxTdG9yYWdlVmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxT
dG9yYWdlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgaW50ZXJ2
YWxDb3VudGVyTG9jYWxTdG9yYWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxs
YmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAg
ICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAg
Y2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heElu
dGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxT
dG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2Fs
U3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBh
ZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRy
eSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIp
ICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxs
YmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3Rp
Y3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAgICAgICAgICAgICAg
ICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAg
ICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5h
bWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHBy
b2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VW
YWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVj
ayB1bnRpbCB0aGVyZSBpcyBubyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2Fs
U3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7
CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRl
cnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdl
dEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgi
QWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1
ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3Qu
Iik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2Fs
U3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAg
bGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBM
b2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9l
cyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNr
TG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
LCAxMDApOworICAgICAgICB9CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVXZWJz
aXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICAvLyBXcml0ZSBjb29raWVzLgorICAgICAg
ICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29va2llLnBo
cD9jb29raWVOYW1lPSIgKyBodHRwT25seUNvb2tpZU5hbWUsIHsgY3JlZGVudGlhbHM6ICJzYW1l
LW9yaWdpbiIgfSk7CisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0
Q29va2llcy5jZ2kiLCB7IGhlYWRlcnM6IHsgIlNldC1Db29raWUiOiBzZXJ2ZXJTaWRlQ29va2ll
TmFtZSArICI9MTsgcGF0aD0vOyIgfSwgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7Cisg
ICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNsaWVudFNpZGVDb29raWVOYW1lICsgIj0xIjsKKwor
ICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UpOworCisgICAgICAgIC8vIFdyaXRlIExvY2FsU3Rv
cmFnZQorICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lLCBsb2Nh
bFN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGZhbHNlLCBm
dW5jdGlvbigpIHsKKworICAgICAgICAgICAgLy8gV3JpdGUgSW5kZXhlZERCLgorICAgICAgICAg
ICAgY3JlYXRlSURCRGF0YVN0b3JlKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBjaGVj
a0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NX
ZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJvY2Vzc1dlYnNpdGVE
YXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NE
aWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUpOwor
ICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNv
cmRzKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVl
KCkgeworICAgICAgICBjaGVja0Nvb2tpZXModHJ1ZSk7CisgICAgICAgIGNoZWNrTG9jYWxTdG9y
YWdlRXhpc3RzKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0
b3JlRXhpc3RzKHRydWUsIGZpbmlzaFRlc3QpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBj
b25zdCBvcmlnaW5VbmRlclRlc3QgID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVu
Y3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNz
SGFzSGFkVXNlckludGVyYWN0aW9uKG9yaWdpblVuZGVyVGVzdCkpCisgICAgICAgICAgICBhZGRP
dXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIHN0aWxsIGhhcyB1c2VyIGludGVy
YWN0aW9uIGFmdGVyIHByb2Nlc3NpbmcuIik7CisgICAgICAgIHJlc2V0Q29va2llcygpOworICAg
ICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAvLyBp
bnNlcnRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhkb21haW4sIGhhc0hhZFVzZXJJbnRlcmFj
dGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQp
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3Rp
YyhvcmlnaW5VbmRlclRlc3QsIHRydWUsIHRydWUsIGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEtcmVt
b3ZlZC1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEtcmVtb3Zl
ZC1kYXRhYmFzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTczMDk2YzgyZTNhZjE4MTUyM2I3
OTg2NDc2NmNmNGM1NTEwZTY1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLXdlYnNpdGUt
ZGF0YS1yZW1vdmVkLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACisKK0Jl
Zm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitC
ZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgorQmVm
b3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhp
c3RzLgorQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5IGRv
ZXMgZXhpc3QuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBl
eGlzdC4KKworQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBObyBjb29raWVzIGZvdW5kLgor
QWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgZG9lcyBub3Qg
ZXhpc3QuCitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIG5vdCBl
eGlzdC4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEtcmVtb3ZlZC1kYXRh
YmFzZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQtZGF0YWJhc2UuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yZTdmNTZmODIxYzZlNGFkNmRmMDg5NGYxNmNiNDNhY2QwOWVhYjRlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQtZGF0YWJhc2UuaHRt
bApAQCAtMCwwICsxLDI1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAg
IDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpJywgMCkiPgorPGJyPgor
PGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxicj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1
bm5lci5zZXRVc2VJVFBEYXRhYmFzZSh0cnVlKTsKKworICAgIGNvbnN0IGh0dHBPbmx5Q29va2ll
TmFtZSA9ICJodHRwLW9ubHktY29va2llIjsKKyAgICBjb25zdCBzZXJ2ZXJTaWRlQ29va2llTmFt
ZSA9ICJzZXJ2ZXItc2lkZS1jb29raWUiOworICAgIGNvbnN0IGNsaWVudFNpZGVDb29raWVOYW1l
ID0gImNsaWVudC1zaWRlLWNvb2tpZSI7CisKKyAgICBmdW5jdGlvbiBzb3J0U3RyaW5nQXJyYXko
YSwgYikgeworICAgICAgICBhID0gYS50b0xvd2VyQ2FzZSgpOworICAgICAgICBiID0gYi50b0xv
d2VyQ2FzZSgpOworCisgICAgICAgIHJldHVybiBhID4gYiA/IDEgOiBiID4gYSA/IC0xIDogMDsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRMaW5lYnJlYWtUb091dHB1dCgpIHsKKyAgICAgICAg
bGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpOworICAgICAgICBvdXRw
dXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkT3V0cHV0
KG1lc3NhZ2UpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKKyAgICAgICAgZWxlbWVudC5pbm5lclRleHQgPSBtZXNzYWdlOworICAgICAgICBv
dXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tD
b29raWVzKGlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICBsZXQgdW5zb3J0ZWRUZXN0UGFzc2Vk
TWVzc2FnZXMgPSBbXTsKKyAgICAgICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2ll
cygpOworICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoICYmIGlzQWZ0ZXJEZWxldGlvbikKKyAg
ICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8g
IkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBObyBjb29raWVz
IGZvdW5kLiIpOworICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykgeworICAgICAg
ICAgICAgc3dpdGNoIChjb29raWUubmFtZSkgeworICAgICAgICAgICAgICAgIGNhc2UgaHR0cE9u
bHlDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNz
YWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzdGF0
aXN0aWNzIHByb2Nlc3Npbmc6ICIgKyAoaXNBZnRlckRlbGV0aW9uID8gIiAiIDogIiIpICsgIkh0
dHBPbmx5IGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2Ugc2VydmVyU2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAg
ICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJB
ZnRlciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogUmVndWxhciBzZXJ2
ZXItc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjYXNlIGNsaWVudFNpZGVDb29raWVOYW1lOgorICAgICAgICAgICAgICAg
ICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAi
QWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IENsaWVudC1zaWRl
IGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSB1
bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7CisgICAgICAg
IGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcykg
eworICAgICAgICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOworCisgICAgZnVuY3Rp
b24gY3JlYXRlSURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0ID0g
aW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0ZSBpbmRleGVkREIu
Iik7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07CisgICAgICAgIHJlcXVl
c3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGxldCBk
YiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2JqU3RvcmUgPSBkYi5j
cmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7CisgICAgICAg
ICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBjYWxsYmFjaygpOworICAg
ICAgICB9CisgICAgfQorCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7CisKKyAgICBsZXQg
aW50ZXJ2YWxDb3VudGVySURCOworICAgIGxldCBjaGVja0lEQkNhbGxiYWNrOworICAgIGxldCBj
aGVja0lEQkludGVydmFsSUQ7CisgICAgbGV0IHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Cisg
ICAgZnVuY3Rpb24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxs
YmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdDsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVySURC
ID0gMDsKKyAgICAgICAgY2hlY2tJREJDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAo
IWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMg
YSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9
IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4
SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJ
bnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlz
dGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuIik7CisgICAgICAgICAg
ICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
IGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFn
YWluLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1
Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVy
dmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRw
dXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8gSURCLgor
ICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkg
eworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsK
KworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZh
bHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFs
SUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJv
Y2Vzc2luZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIHNl
bWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2Fs
bGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xl
YXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAg
YWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAg
ICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElE
QiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0
KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
b25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0
IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluIGJlY2F1c2UgZGVsZXRpb24gbWlnaHQgYmUg
ZGVsYXllZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSwgMjAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBpbnRlcnZhbENvdW50ZXJM
b2NhbFN0b3JhZ2U7CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2s7CisgICAgbGV0
IGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRDsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VOYW1l
ID0gInRlc3QiOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZhbHVlID0gInZhbHVlIjsKKyAgICBm
dW5jdGlvbiBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNr
KSB7CisgICAgICAgIGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA9IDA7CisgICAgICAgIGNo
ZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVy
RGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIExvY2FsU3Rv
cmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVy
dmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlckxv
Y2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJ
bnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAg
ICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5n
OiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAi
ZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNo
ZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRl
c3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVy
dmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0
SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJC
ZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1
ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3Qu
Iik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8gTG9jYWxTdG9yYWdlLgorICAg
ICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdl
ID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNo
ZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1
ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9y
YWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRv
ZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3Rv
cmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAgICAg
ICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7Cisg
ICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2Fs
U3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRp
c3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2Fs
U3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAg
ICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzeW5j
IGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgLy8gV3Jp
dGUgY29va2llcy4KKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXQt
aHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2llTmFtZT0iICsgaHR0cE9ubHlDb29raWVOYW1lLCB7
IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBhd2FpdCBmZXRjaCgiL2Nv
b2tpZXMvcmVzb3VyY2VzL3NldENvb2tpZXMuY2dpIiwgeyBoZWFkZXJzOiB7ICJTZXQtQ29va2ll
Ijogc2VydmVyU2lkZUNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LzsiIH0sIGNyZWRlbnRpYWxzOiAi
c2FtZS1vcmlnaW4iIH0pOworICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjbGllbnRTaWRlQ29v
a2llTmFtZSArICI9MSI7CisKKyAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsKKworICAgICAg
ICAvLyBXcml0ZSBMb2NhbFN0b3JhZ2UKKyAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obG9j
YWxTdG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUpOworICAgICAgICBjaGVja0xvY2FsU3Rv
cmFnZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8vIFdyaXRlIElu
ZGV4ZWREQi4KKyAgICAgICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlvbiAoKSB7Cisg
ICAgICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOworICAgICAgICAg
ICAgICAgICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICB0ZXN0UnVubmVy
Lmluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soY2hlY2tXZWJzaXRl
RGF0YUFuZENvbnRpbnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUHJvY2Vzc1N0
YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrV2Vi
c2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgY2hlY2tDb29raWVzKHRydWUpOworICAg
ICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyh0cnVlLCBmaW5pc2hUZXN0KTsKKyAgICAgICAg
fSk7CisgICAgfQorCisgICAgY29uc3Qgb3JpZ2luVW5kZXJUZXN0ICA9ICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAiOworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAgIGlmICh0ZXN0
UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihvcmlnaW5VbmRlclRlc3Qp
KQorICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsgb3JpZ2luVW5kZXJUZXN0ICsgIiBz
dGlsbCBoYXMgdXNlciBpbnRlcmFjdGlvbiBhZnRlciBwcm9jZXNzaW5nLiIpOworICAgICAgICBy
ZXNldENvb2tpZXMoKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVy
ZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAvLyBpbnNlcnRTdGF0aXN0aWNzRXhw
aXJlZFN0YXRpc3RpYyhkb21haW4sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRG
b3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKG9yaWdpblVuZGVyVGVzdCwgdHJ1
ZSwgZmFsc2UsIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1
bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShvcmlnaW5VbmRlclRlc3QpKQorICAg
ICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAi
IGRpZCBub3QgZ2V0IGluc2VydGVkIGludG8gZGF0YWJhc2UuIik7CisgICAgICAgICAgICAgICAg
d3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVz
LWFsbC13ZWJzaXRlLWRhdGEtcmVtb3ZlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRl
LWRhdGEtcmVtb3ZlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTczMDk2YzgyZTNhZjE4MTUy
M2I3OTg2NDc2NmNmNGM1NTEwZTY1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLXdlYnNp
dGUtZGF0YS1yZW1vdmVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACisKK0JlZm9yZSBz
dGF0aXN0aWNzIHByb2Nlc3Npbmc6IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUg
c3RhdGlzdGljcyBwcm9jZXNzaW5nOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgorQmVmb3JlIHN0
YXRpc3RpY3MgcHJvY2Vzc2luZzogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgor
QmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhp
c3QuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBleGlzdC4K
KworQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBObyBjb29raWVzIGZvdW5kLgorQWZ0ZXIg
c3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgZG9lcyBub3QgZXhpc3Qu
CitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4K
KworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEtcmVtb3ZlZC5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRl
cy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTdmNTZmODIxYzZl
NGFkNmRmMDg5NGYxNmNiNDNhY2QwOWVhYjRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwt
d2Vic2l0ZS1kYXRhLXJlbW92ZWQuaHRtbApAQCAtMCwwICsxLDI1MiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMv
Y29va2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNl
cy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgn
cnVuVGVzdCgpJywgMCkiPgorPGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxicj4KKzxz
Y3JpcHQ+CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBEYXRhYmFzZSh0cnVlKTsKKwor
ICAgIGNvbnN0IGh0dHBPbmx5Q29va2llTmFtZSA9ICJodHRwLW9ubHktY29va2llIjsKKyAgICBj
b25zdCBzZXJ2ZXJTaWRlQ29va2llTmFtZSA9ICJzZXJ2ZXItc2lkZS1jb29raWUiOworICAgIGNv
bnN0IGNsaWVudFNpZGVDb29raWVOYW1lID0gImNsaWVudC1zaWRlLWNvb2tpZSI7CisKKyAgICBm
dW5jdGlvbiBzb3J0U3RyaW5nQXJyYXkoYSwgYikgeworICAgICAgICBhID0gYS50b0xvd2VyQ2Fz
ZSgpOworICAgICAgICBiID0gYi50b0xvd2VyQ2FzZSgpOworCisgICAgICAgIHJldHVybiBhID4g
YiA/IDEgOiBiID4gYSA/IC0xIDogMDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRMaW5lYnJl
YWtUb091dHB1dCgpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJiciIpOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gYWRkT3V0cHV0KG1lc3NhZ2UpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZWxlbWVudC5pbm5lclRl
eHQgPSBtZXNzYWdlOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0ZXJEZWxldGlvbikgeworICAgICAg
ICBsZXQgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSBbXTsKKyAgICAgICAgbGV0IGNvb2tp
ZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3Ro
ICYmIGlzQWZ0ZXJEZWxldGlvbikKKyAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMu
cHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc3RhdGlzdGlj
cyBwcm9jZXNzaW5nOiBObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICBmb3IgKGxldCBjb29r
aWUgb2YgY29va2llcykgeworICAgICAgICAgICAgc3dpdGNoIChjb29raWUubmFtZSkgeworICAg
ICAgICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAg
ICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0
ZXIiIDogIkJlZm9yZSIpICsgIiBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6ICIgKyAoaXNBZnRlckRl
bGV0aW9uID8gIiAiIDogIiIpICsgIkh0dHBPbmx5IGNvb2tpZSBleGlzdHMuIik7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ugc2VydmVyU2lkZUNvb2tp
ZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1
c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3Mg
cHJvY2Vzc2luZzogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGNsaWVudFNpZGVDb29r
aWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5w
dXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzdGF0aXN0aWNz
IHByb2Nlc3Npbmc6IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxldCBzb3J0
ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNv
cnRTdHJpbmdBcnJheSk7CisgICAgICAgIGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNv
cnRlZFRlc3RQYXNzZWRNZXNzYWdlcykgeworICAgICAgICAgICAgYWRkT3V0cHV0KHRlc3RQYXNz
ZWRNZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0
RGF0YWJhc2UiOworCisgICAgZnVuY3Rpb24gY3JlYXRlSURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7
CisgICAgICAgIGxldCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAg
cmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoIkNv
dWxkbid0IGNyZWF0ZSBpbmRleGVkREIuIik7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Cisg
ICAgICAgIH07CisgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAg
ICAgICBsZXQgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHthdXRvSW5j
cmVtZW50OiB0cnVlfSk7CisgICAgICAgICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIik7CisgICAg
ICAgICAgICBjYWxsYmFjaygpOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgbWF4SW50
ZXJ2YWxzID0gMjA7CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVySURCOworICAgIGxldCBjaGVj
a0lEQkNhbGxiYWNrOworICAgIGxldCBjaGVja0lEQkludGVydmFsSUQ7CisgICAgbGV0IHNlbWFw
aG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgZnVuY3Rpb24gY2hlY2tJREJEYXRhU3RvcmVFeGlz
dHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdDsKKyAg
ICAgICAgaW50ZXJ2YWxDb3VudGVySURCID0gMDsKKyAgICAgICAgY2hlY2tJREJDYWxsYmFjayA9
IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAg
Ly8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgYSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVy
dmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2Vt
YXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytp
bnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAg
IGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAg
YWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBu
b3QgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9w
ZW4oZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQklu
dGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBv
cGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNo
ZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAg
ICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRl
bmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRo
ZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgc2Vt
YXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6
IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBo
b3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2Fs
bGJhY2soKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9LCAyMDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sg
dW50aWwgdGhlcmUgaXMgbm8gSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElEID0g
c2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJ
REJDaGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNl
bWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFs
Q291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJ
bnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRw
dXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7
CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsK
KyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWRE
Qi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAg
ICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lE
QkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBz
dGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluIGJl
Y2F1c2UgZGVsZXRpb24gbWlnaHQgYmUgZGVsYXllZC4KKyAgICAgICAgICAgICAgICAgICAgICAg
IHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGxldCBpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2U7CisgICAgbGV0IGNoZWNrTG9jYWxT
dG9yYWdlQ2FsbGJhY2s7CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRDsKKyAg
ICBjb25zdCBsb2NhbFN0b3JhZ2VOYW1lID0gInRlc3QiOworICAgIGNvbnN0IGxvY2FsU3RvcmFn
ZVZhbHVlID0gInZhbHVlIjsKKyAgICBmdW5jdGlvbiBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhp
c0FmdGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7CisgICAgICAgIGludGVydmFsQ291bnRlckxvY2Fs
U3RvcmFnZSA9IDA7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2sgPSBjYWxsYmFj
azsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNr
IHVudGlsIHRoZXJlIGlzIExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9y
YWdlSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IGlmICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFs
SUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRl
bShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZv
cmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9
PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7
CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9y
YWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZh
bChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQg
dmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAg
ICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2Nh
bFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIg
OiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9j
YWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAx
MDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUg
aXMgbm8gTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZh
bElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50
ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAgICAgICAgICAg
ICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAg
ICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3Rv
cmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3Rp
Y3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3Rv
cmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAg
ICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2lu
VW5kZXJUZXN0KSkgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9j
YWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxv
Y2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAg
ICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVu
dHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90
IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNh
bGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250
aW51ZSgpIHsKKyAgICAgICAgLy8gV3JpdGUgY29va2llcy4KKyAgICAgICAgYXdhaXQgZmV0Y2go
Ii9jb29raWVzL3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2llTmFtZT0i
ICsgaHR0cE9ubHlDb29raWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOwor
ICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldENvb2tpZXMuY2dpIiwg
eyBoZWFkZXJzOiB7ICJTZXQtQ29va2llIjogc2VydmVyU2lkZUNvb2tpZU5hbWUgKyAiPTE7IHBh
dGg9LzsiIH0sIGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBkb2N1bWVu
dC5jb29raWUgPSBjbGllbnRTaWRlQ29va2llTmFtZSArICI9MSI7CisKKyAgICAgICAgY2hlY2tD
b29raWVzKGZhbHNlKTsKKworICAgICAgICAvLyBXcml0ZSBMb2NhbFN0b3JhZ2UKKyAgICAgICAg
bG9jYWxTdG9yYWdlLnNldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUp
OworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisK
KyAgICAgICAgICAgIC8vIFdyaXRlIEluZGV4ZWREQi4KKyAgICAgICAgICAgIGNyZWF0ZUlEQkRh
dGFTdG9yZShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVF
eGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBhZGRMaW5lYnJl
YWtUb091dHB1dCgpOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRD
b250aW51ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVl
KCkgeworICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNv
cmRzQ2FsbGJhY2soY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKTsKKyAgICAgICAgdGVzdFJ1
bm5lci5zdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAg
Y2hlY2tDb29raWVzKHRydWUpOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyh0cnVl
LCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyh0cnVl
LCBmaW5pc2hUZXN0KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgY29uc3Qgb3JpZ2luVW5k
ZXJUZXN0ICA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGZ1bmN0aW9uIGZpbmlzaFRl
c3QoKSB7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRl
cmFjdGlvbihvcmlnaW5VbmRlclRlc3QpKQorICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAi
ICsgb3JpZ2luVW5kZXJUZXN0ICsgIiBzdGlsbCBoYXMgdXNlciBpbnRlcmFjdGlvbiBhZnRlciBw
cm9jZXNzaW5nLiIpOworICAgICAgICByZXNldENvb2tpZXMoKTsKKyAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsK
KyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAvLyBpbnNlcnRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhkb21haW4sIGhhc0hhZFVzZXJJ
bnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2
YWxlbnQpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlz
dGljKG9yaWdpblVuZGVyVGVzdCwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZShvcmlnaW5VbmRlclRlc3QpKQorICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkZBSUw6
ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIGRpZCBub3QgZ2V0IGluc2VydGVkIGludG8gZGF0YWJh
c2UuIik7CisgICAgICAgICAgICAgICAgd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399776</attachid>
            <date>2020-05-19 15:50:44 -0700</date>
            <delta_ts>2020-05-20 12:19:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212034-20200519155043.patch</filename>
            <type>text/plain</type>
            <size>126546</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE1YTFmYTlhYjRiNTg5OGY0
MWM3OTY5NmY3N2IxNGY2MDMwODU5YmIuLjY3MGNmNjY2YTIwOTk1YzU0ZjMwYTBmNTRkZmM0Zjhj
MzRjZjMxNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDIwLTA1LTE4ICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgb3Bl
cmF0aW5nIGRhdGVzIGluIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIwMzQKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzYzMzQ5MjQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLWRhdGFiYXNlLmh0
bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVy
YXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQuaHRtbAorICAgICAgICAgICAgICAg
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vi
c2l0ZS1kYXRhLXJlbW92ZWQtZGF0YWJhc2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRh
LXJlbW92ZWQuaHRtbAorCisgICAgICAgIFBhdGNoIHRvIHN1cHBvcnQgT3BlcmF0aW5nIERhdGVz
IGluIHRoZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS4KKyAgICAgICAgTW92
ZXMgZnVuY3Rpb25zIG91dCBvZiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgbm93IHRoYXQg
ZWFjaCBzdG9yZQorICAgICAgICBuZWVkcyBpdHMgb3duIGltcGxlbWVudGF0aW9uLgorCisgICAg
ICAgIEFkZHMgYSBuZXcgZnVuY3Rpb24gZm9yIHRlc3Rpbmcgd2hpY2ggaW5zZXJ0cyBhbiBleHBp
cmVkIHN0YXRpc3RpYworICAgICAgICBhbmQgbWFrZXMgc3VyZSB0aGUgcHJvcGVyIGJlaGF2aW9y
IG9jY3VycyBkZXBlbmRpbmcgb24gYWRkaXRpb25hbAorICAgICAgICBwYXJhbWV0ZXJzLgorCisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVRhYmxlUXVlcmllcyk6
CisgICAgICAgIEFkZGVkIDcgbmV3IHF1ZXJpZXMgdG8gc3VwcG9ydCBPcGVyYXRpbmcgRGF0ZXMg
ZnVuY3Rpb25zLgorCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVTY2hl
bWEpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6cHJlcGFyZVN0YXRlbWVudHMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZmluZEV4cGlyZWRVc2VySW50ZXJhY3Rpb24pOgorICAgICAg
ICBVcGRhdGVkIHN0YXRpc3RpY3NFeHBpcmF0aW9uVGltZSB0byBoYXZlIGEgbW9yZSBkZXNjcmlw
dGl2ZSBuYW1lOgorICAgICAgICBnZXRMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGUoKTsKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldExlYXN0
UmVjZW50T3BlcmF0aW5nRGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjptZXJnZU9wZXJhdGluZ0RhdGVzKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY2x1ZGVUb2RheUFzT3Bl
cmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydEV4
cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKToKKyAgICAgICAgTWlncmF0ZWQgT3BlcmF0aW5nIERh
dGVzIGZ1bmN0aW9ucyBmcm9tIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBhbmQgaW1wbGVt
ZW50ZWQKKyAgICAgICAgdGhlbSB1c2luZyBTUUxpdGUgaW5zdGVhZCBvZiBhIHZlY3Rvci4gRnVu
Y3Rpb25hbGl0eSBpcworICAgICAgICBpZGVudGljYWwgdG8gdGhlIG9yaWdpbmFsIGluLW1lbW9y
eSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjptZXJnZU9wZXJhdGluZ0RhdGVzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjppbmNsdWRlVG9k
YXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omluc2Vy
dEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgorICAgICAgICBN
aWdyYXRlZCBPcGVyYXRpbmcgRGF0ZXMgZnVuY3Rpb25zIGZyb20gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlCisgICAgICAgIG5vdyB0aGF0IHRoZSBkYXRhYmFzZSBzdG9yZSBkb2VzIG5vdCB1
c2UgdGhlbS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpwb3B1bGF0ZU1lbW9yeVN0b3Jl
RnJvbURpc2spOgorICAgICAgICBTcGVsbGluZyBlcnJvci4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUpOgorICAgICAgICBNb3ZlZCB0aGVzZSBpbXBsZW1lbnRhdGlvbnMgdG8gdGhl
IG1lbW9yeSBzdG9yZS4gTW92ZWQKKyAgICAgICAgb3BlcmF0aW5nRGF0ZXNXaW5kb3cgY29uc3Rl
eHByIHZhcmlhYmxlcyB0byB0aGUgaGVhZGVyIGZpbGUgc28gdGhhdAorICAgICAgICB0aGUgZGF0
YWJhc2UgYW5kIG1lbW9yeSBzdG9yZXMgY2FuIGJvdGggdXNlIHRoZW0uCisKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3Jkcyk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc1N0YXRp
c3RpY3NBbmREYXRhUmVjb3Jkcyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6dXBkYXRlQ29va2llQmxvY2tpbmdGb3JEb21haW5zKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0aWNzRXBpcmF0aW9uVGlt
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6bWVyZ2VPcGVyYXRpbmdEYXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRl
SWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOgorICAgICAgICAoV2ViS2l0OjpPcGVyYXRpbmdEYXRlOjp5ZWFyIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6T3BlcmF0aW5nRGF0ZTo6bW9udGggY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpPcGVyYXRpbmdEYXRlOjptb250aERheSBjb25zdCk6CisgICAgICAgIFRoZXNlIGZ1bmN0aW9u
cyBzaG91bGQgYmUgcHVibGljIG5vdyB0aGF0IHRoZXkgYXJlIG5lZWRlZCBvdXRzaWRlCisgICAg
ICAgIG9mIHRoaXMgZmlsZSBhZnRlciBtaWdyYXRpbmcgT3BlcmF0aW5nRGF0ZXMgZnVuY3Rpb25z
LgorCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGFyYW1l
dGVycyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6b3BlcmF0aW5nRGF0ZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyT3BlcmF0aW5nRGF0ZXMpOiBEZWxldGVkLgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcDoKKyAgICAgICAgKFdLV2Vic2l0
ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVz
dGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aDoKKyAgICAgICAgRnVuY3Rpb24gdG8gYWRkIGV4cGlyZWQgc3RhdGlzdGljIHRvIHRoZSBJVFAg
c3RvcmUuCisKKwogMjAyMC0wNS0xMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmV3b3JrIGRyYWcgYW5kIGRyb3AgaGFuZGxpbmcg
aW4gcHJlcGFyYXRpb24gZm9yIEdUSzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDMxZTkxOTk4NjU4NjAwMjMxZDY0Y2Jj
MDQ5MzAxY2M1YzNhZjViNDguLjc4NTBiZGE0Zjc4M2I2OGEwMGE5YmU4MzRhNDY2MDdiN2ZlNmYw
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmNwcApAQCAtNzIsNiArNzIsNyBAQCBjb25zdGV4cHIgYXV0byBjb3VudFN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZVF1ZXJ5ID0gIlNFTEVDVCBDT1VOVCgqKSBGUk9NIFN1YnJlcwogY29u
c3RleHByIGF1dG8gY291bnRTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvUXVlcnkgPSAiU0VM
RUNUIENPVU5UKCopIEZST00gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyBXSEVSRSBzdWJy
ZXNvdXJjZURvbWFpbklEID0gPyBBTkQgdG9Eb21haW5JRCA9ID87Il9zOwogY29uc3RleHByIGF1
dG8gY291bnRQcmV2YWxlbnRSZXNvdXJjZXNRdWVyeSA9ICJTRUxFQ1QgQ09VTlQoRElTVElOQ1Qg
cmVnaXN0cmFibGVEb21haW4pIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGlzUHJldmFsZW50
ID0gMTsiX3M7CiBjb25zdGV4cHIgYXV0byBjb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhVc2Vy
SW50ZXJhY3Rpb25RdWVyeSA9ICJTRUxFQ1QgQ09VTlQoRElTVElOQ1QgcmVnaXN0cmFibGVEb21h
aW4pIEZST00gT2JzZXJ2ZWREb21haW5zIFdIRVJFIGlzUHJldmFsZW50ID0gMSBBTkQgaGFkVXNl
ckludGVyYWN0aW9uID0gMTsiX3M7Citjb25zdGV4cHIgYXV0byBjb3VudE9wZXJhdGluZ0RhdGVz
UXVlcnkgPSAiU0VMRUNUIENPVU5UKCopIEZST00gT3BlcmF0aW5nRGF0ZXM7Il9zOwogCiBjb25z
dGV4cHIgYXV0byBjb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25R
dWVyeSA9ICJTRUxFQ1QgQ09VTlQoRElTVElOQ1QgcmVnaXN0cmFibGVEb21haW4pIEZST00gT2Jz
ZXJ2ZWREb21haW5zIFdIRVJFIGlzUHJldmFsZW50ID0gMSBBTkQgaGFkVXNlckludGVyYWN0aW9u
ID0gMDsiX3M7CiAKQEAgLTg2LDYgKzg3LDcgQEAgY29uc3RleHByIGF1dG8gdG9wRnJhbWVVbmlx
dWVSZWRpcmVjdHNUb1NpbmNlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudFF1ZXJ5ID0gIkkKIGNv
bnN0ZXhwciBhdXRvIHRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzRnJvbVF1ZXJ5ID0gIklOU0VSVCBP
UiBJR05PUkUgSU5UTyBUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0c0Zyb20gKHRhcmdldERvbWFpbklE
LCBmcm9tRG9tYWluSUQpIFNFTEVDVCA/LCBkb21haW5JRCBGUk9NIE9ic2VydmVkRG9tYWlucyBX
SEVSRSByZWdpc3RyYWJsZURvbWFpbiBpbiAoICJfczsKIGNvbnN0ZXhwciBhdXRvIHRvcEZyYW1l
TG9hZGVkVGhpcmRQYXJ0eVNjcmlwdHNRdWVyeSA9ICJJTlNFUlQgT1IgSUdOT1JFIGludG8gVG9w
RnJhbWVMb2FkZWRUaGlyZFBhcnR5U2NyaXB0cyAodG9wRnJhbWVEb21haW5JRCwgc3VicmVzb3Vy
Y2VEb21haW5JRCkgU0VMRUNUID8sIGRvbWFpbklEIEZST00gT2JzZXJ2ZWREb21haW5zIHdoZXJl
IHJlZ2lzdHJhYmxlRG9tYWluIGluICggIl9zOwogY29uc3RleHByIGF1dG8gc3VicmVzb3VyY2VV
bmlxdWVSZWRpcmVjdHNGcm9tUXVlcnkgPSAiSU5TRVJUIE9SIElHTk9SRSBJTlRPIFN1YnJlc291
cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSAoc3VicmVzb3VyY2VEb21haW5JRCwgZnJvbURvbWFpbklE
KSBTRUxFQ1QgPywgZG9tYWluSUQgRlJPTSBPYnNlcnZlZERvbWFpbnMgV0hFUkUgcmVnaXN0cmFi
bGVEb21haW4gaW4gKCAiX3M7Citjb25zdGV4cHIgYXV0byBpbnNlcnRPcGVyYXRpbmdEYXRlc1F1
ZXJ5ID0gIklOU0VSVCBPUiBJR05PUkUgSU5UTyBPcGVyYXRpbmdEYXRlcyAoeWVhciwgbW9udGgs
IG1vbnRoRGF5KSBTRUxFQ1QgPywgPywgPyJfczsKIAogLy8gSU5TRVJUIE9SIFJFUExBQ0UgUXVl
cmllcwogY29uc3RleHByIGF1dG8gc3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc1F1ZXJ5ID0g
IklOU0VSVCBPUiBSRVBMQUNFIGludG8gU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlucyAoc3Vi
RnJhbWVEb21haW5JRCwgbGFzdFVwZGF0ZWQsIHRvcEZyYW1lRG9tYWluSUQpIFNFTEVDVCA/LCA/
LCBkb21haW5JRCBGUk9NIE9ic2VydmVkRG9tYWlucyB3aGVyZSByZWdpc3RyYWJsZURvbWFpbiBp
biAoICJfczsKQEAgLTEzNCw2ICsxMzYsOCBAQCBjb25zdGV4cHIgYXV0byBnZXRBbGxEb21haW5z
UXVlcnkgPSAiU0VMRUNUIHJlZ2lzdHJhYmxlRG9tYWluIEZST00gT2JzZXJ2ZWREb21haQogY29u
c3RleHByIGF1dG8gZ2V0QWxsU3ViU3RhdGlzdGljc1VuZGVyRG9tYWluUXVlcnkgPSAiU0VMRUNU
IHRvcEZyYW1lRG9tYWluSUQgRlJPTSBTdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJF
IHN1YkZyYW1lRG9tYWluSUQgPSA/IgogICAgICJVTklPTiBBTEwgU0VMRUNUIHRvcEZyYW1lRG9t
YWluSUQgRlJPTSBTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zIFdIRVJFIHN1YnJlc291
cmNlRG9tYWluSUQgPSA/IgogICAgICJVTklPTiBBTEwgU0VMRUNUIHRvRG9tYWluSUQgRlJPTSBT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIFdIRVJFIHN1YnJlc291cmNlRG9tYWluSUQgPSA/
Il9zOworY29uc3RleHByIGF1dG8gZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0RhdGVRdWVyeSA9ICJT
RUxFQ1QgKiBGUk9NIE9wZXJhdGluZ0RhdGVzIE9SREVSIEJZIHllYXIgREVTQywgbW9udGggREVT
QywgbW9udGhEYXkgREVTQyBMSU1JVCAxOyJfczsKK2NvbnN0ZXhwciBhdXRvIGdldExlYXN0UmVj
ZW50T3BlcmF0aW5nRGF0ZVF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gT3BlcmF0aW5nRGF0ZXMgT1JE
RVIgQlkgeWVhciwgbW9udGgsIG1vbnRoRGF5IExJTUlUIDE7Il9zOwogCiAvLyBFWElTVFMgZm9y
IHRlc3RpbmcgcXVlcmllcwogY29uc3RleHByIGF1dG8gbGlua0RlY29yYXRpb25FeGlzdHNRdWVy
eSA9ICJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIFRvcEZyYW1lTGlua0RlY29yYXRpb25z
RnJvbSBXSEVSRSB0b0RvbWFpbklEID0gPyBPUiBmcm9tRG9tYWluSUQgPSA/KSJfczsKQEAgLTE0
NSw2ICsxNDksNyBAQCBjb25zdGV4cHIgYXV0byBvYnNlcnZlZERvbWFpbnNFeGlzdHNRdWVyeSA9
ICJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIE9ic2VydgogCiAvLyBERUxFVEUgUXVlcmll
cwogY29uc3RleHByIGF1dG8gcmVtb3ZlQWxsRGF0YVF1ZXJ5ID0gIkRFTEVURSBGUk9NIE9ic2Vy
dmVkRG9tYWlucyBXSEVSRSBkb21haW5JRCA9ID8iX3M7Citjb25zdGV4cHIgYXV0byBkZWxldGVM
ZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVzUXVlcnkgPSAiREVMRVRFIEZST00gT3BlcmF0aW5nRGF0
ZXMgT1JERVIgQlkgeWVhciwgbW9udGgsIG1vbnRoRGF5IExJTUlUID87Il9zOwogCiBjb25zdGV4
cHIgYXV0byBjcmVhdGVPYnNlcnZlZERvbWFpbiA9ICJDUkVBVEUgVEFCTEUgT2JzZXJ2ZWREb21h
aW5zICgiCiAgICAgImRvbWFpbklEIElOVEVHRVIgUFJJTUFSWSBLRVksIHJlZ2lzdHJhYmxlRG9t
YWluIFRFWFQgTk9UIE5VTEwgVU5JUVVFIE9OIENPTkZMSUNUIEZBSUwsIGxhc3RTZWVuIFJFQUwg
Tk9UIE5VTEwsICIKQEAgLTIyMiw2ICsyMjcsMTAgQEAgY29uc3RleHByIGF1dG8gY3JlYXRlU3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tID0gIkNSRUFURSBUQUJMRSBTdWJyZXNvdXJjZVUK
ICAgICAiRk9SRUlHTiBLRVkoc3VicmVzb3VyY2VEb21haW5JRCkgUkVGRVJFTkNFUyBPYnNlcnZl
ZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFLCAiCiAgICAgIkZPUkVJR04gS0VZ
KGZyb21Eb21haW5JRCkgUkVGRVJFTkNFUyBPYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERF
TEVURSBDQVNDQURFKTsiX3M7CiAKK2NvbnN0ZXhwciBhdXRvIGNyZWF0ZU9wZXJhdGluZ0RhdGVz
ID0gIkNSRUFURSBUQUJMRSBPcGVyYXRpbmdEYXRlcyAoIgorICAgICJ5ZWFyIElOVEVHRVIgTk9U
IE5VTEwsIG1vbnRoIElOVEVHRVIgTk9UIE5VTEwsIG1vbnRoRGF5IElOVEVHRVIgTk9UIE5VTEwp
OyJfczsKKworCiAvLyBDUkVBVEUgVU5JUVVFIElOREVYIFF1ZXJpZXMKIGNvbnN0ZXhwciBhdXRv
IGNyZWF0ZVVuaXF1ZUluZGV4U3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zID0gIkNS
RUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFt
ZURvbWFpbnNfZG9tYWluSURfdG9wTGV2ZWxEb21haW5JRCBvbiBTdG9yYWdlQWNjZXNzVW5kZXJU
b3BGcmFtZURvbWFpbnMgKCBkb21haW5JRCwgdG9wTGV2ZWxEb21haW5JRCApOyJfczsKIGNvbnN0
ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4VG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyA9ICJD
UkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNU
b19zb3VyY2VEb21haW5JRF90b0RvbWFpbklEIG9uIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8g
KCBzb3VyY2VEb21haW5JRCwgdG9Eb21haW5JRCApOyJfczsKQEAgLTIzMyw2ICsyNDIsNyBAQCBj
b25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFp
bnMgPSAiQ1JFQVRFIFVOSVFVRSBJTgogY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYg
Tk9UIEVYSVNUUyBTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zX3N1YnJlc291cmNlRG9t
YWluSURfdG9wRnJhbWVEb21haW5JRCBvbiBTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5z
ICggc3VicmVzb3VyY2VEb21haW5JRCwgdG9wRnJhbWVEb21haW5JRCApOyJfczsKIGNvbnN0ZXhw
ciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyA9ICJD
UkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNUb19zdWJyZXNvdXJjZURvbWFpbklEX3RvRG9tYWluSUQgb24gU3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNUbyAoIHN1YnJlc291cmNlRG9tYWluSUQsIHRvRG9tYWluSUQgKTsiX3M7CiBjb25z
dGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJv
bSA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgU3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNGcm9tX3N1YnJlc291cmNlRG9tYWluSURfZnJvbURvbWFpbklEIG9uIFN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgKCBzdWJyZXNvdXJjZURvbWFpbklELCBmcm9tRG9tYWlu
SUQgKTsiX3M7Citjb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleE9wZXJhdGluZ0RhdGVz
ID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBPcGVyYXRpbmdEYXRlc195ZWFy
X21vbnRoX21vbnRoRGF5IG9uIE9wZXJhdGluZ0RhdGVzICggeWVhciwgbW9udGgsIG1vbnRoRGF5
ICk7Il9zOwogCiBjb25zdCB1bnNpZ25lZCBtaW5pbXVtUHJldmFsZW50UmVzb3VyY2VzRm9yVGVs
ZW1ldHJ5ID0gMzsKIApAQCAtMjY1LDcgKzI3NSw4IEBAIHN0YXRpYyBjb25zdCBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPiYgY3JlYXRlVGFibGVRdWVyaWVzKCkKICAgICAgICAgeyAiU3ViZnJhbWVV
bmRlclRvcEZyYW1lRG9tYWlucyJfcywgY3JlYXRlU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWlu
c30sCiAgICAgICAgIHsgIlN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIGNyZWF0
ZVN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnN9LAogICAgICAgICB7ICJTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvIl9zLCBjcmVhdGVTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
fSwKLSAgICAgICAgeyAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLCBjcmVhdGVT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb219CisgICAgICAgIHsgIlN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzRnJvbSJfcywgY3JlYXRlU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9t
fSwKKyAgICAgICAgeyAiT3BlcmF0aW5nRGF0ZXMiX3MsIGNyZWF0ZU9wZXJhdGluZ0RhdGVzfQog
ICAgIH0pOwogICAgIAogICAgIHJldHVybiBjcmVhdGVUYWJsZVF1ZXJpZXM7CkBAIC0zMTMsNiAr
MzI0LDExIEBAIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvCiAgICAgLCBtX3VuaXF1ZVJlZGlyZWN0
RXhpc3RzU3RhdGVtZW50KG1fZGF0YWJhc2UsIHVuaXF1ZVJlZGlyZWN0RXhpc3RzUXVlcnkpCiAg
ICAgLCBtX29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRlbWVudChtX2RhdGFiYXNlLCBvYnNlcnZl
ZERvbWFpbnNFeGlzdHNRdWVyeSkKICAgICAsIG1fcmVtb3ZlQWxsRGF0YVN0YXRlbWVudChtX2Rh
dGFiYXNlLCByZW1vdmVBbGxEYXRhUXVlcnkpCisgICAgLCBtX2luc2VydE9wZXJhdGluZ0RhdGVT
dGF0ZW1lbnQobV9kYXRhYmFzZSwgaW5zZXJ0T3BlcmF0aW5nRGF0ZXNRdWVyeSkKKyAgICAsIG1f
Y291bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudChtX2RhdGFiYXNlLCBjb3VudE9wZXJhdGluZ0Rh
dGVzUXVlcnkpCisgICAgLCBtX2dldE1vc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50KG1f
ZGF0YWJhc2UsIGdldE1vc3RSZWNlbnRPcGVyYXRpbmdEYXRlUXVlcnkpCisgICAgLCBtX2RlbGV0
ZUxlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQobV9kYXRhYmFzZSwgZGVsZXRlTGVh
c3RSZWNlbnRPcGVyYXRpbmdEYXRlc1F1ZXJ5KQorICAgICwgbV9nZXRMZWFzdFJlY2VudE9wZXJh
dGluZ0RhdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRl
UXVlcnkpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CkBAIC0zMzYsNiArMzUyLDggQEAgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKFdlYlJl
c28KICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgd2Vha1RoaXMtPmNhbGN1bGF0
ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIH0pOworCisgICAgaW5jbHVkZVRvZGF5QXNPcGVy
YXRpbmdEYXRlSWZOZWNlc3NhcnkoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6b3BlbklUUERhdGFiYXNlKCkKQEAgLTYzNiw2ICs2NTQsMTEgQEAgYm9v
bCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3JlYXRlU2NoZW1hKCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKKyAgICBpZiAoIW1fZGF0YWJhc2UuZXhl
Y3V0ZUNvbW1hbmQoY3JlYXRlT3BlcmF0aW5nRGF0ZXMpKSB7CisgICAgICAgIExPR19FUlJPUigi
Q291bGQgbm90IGNyZWF0ZSBPcGVyYXRpbmdEYXRlcyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0g
JXMiLCBtX2RhdGFiYXNlLmxhc3RFcnJvcigpLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKICAgICBpZiAoIWNyZWF0ZVVuaXF1
ZUluZGljZXMoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC02ODQsNiArNzA3LDExIEBA
IGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnByZXBhcmVTdGF0ZW1l
bnRzKCkKICAgICAgICAgfHwgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudC5wcmVwYXJl
KCkgIT0gU1FMSVRFX09LCiAgICAgICAgIHx8IG1fb2JzZXJ2ZWREb21haW5zRXhpc3RzU3RhdGVt
ZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgfHwgbV9yZW1vdmVBbGxEYXRhU3Rh
dGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRPcGVyYXRp
bmdEYXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9jb3Vu
dE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAg
fHwgbV9nZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FM
SVRFX09LCisgICAgICAgIHx8IG1fZGVsZXRlTGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlc1N0YXRl
bWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1fZ2V0TGVhc3RSZWNlbnRP
cGVyYXRpbmdEYXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKICAgICAgICAgKSB7
CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpwcmVwYXJlU3RhdGVtZW50cyBmYWlsZWQgdG8gcHJlcGFy
ZSwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI0ODcs
NyArMjUxNSw3IEBAIFZlY3Rvcjx1bnNpZ25lZD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmZpbmRFeHBpcmVkVXNlckludGVyYWN0aW9uCiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKICAgICBWZWN0b3I8dW5zaWduZWQ+IHJlc3VsdHM7Ci0gICAgT3B0aW9u
YWw8U2Vjb25kcz4gZXhwaXJhdGlvbkRhdGVUaW1lID0gc3RhdGlzdGljc0VwaXJhdGlvblRpbWUo
KTsKKyAgICBPcHRpb25hbDxTZWNvbmRzPiBleHBpcmF0aW9uRGF0ZVRpbWUgPSBnZXRMZWFzdFJl
Y2VudE9wZXJhdGluZ0RhdGUoKTsKICAgICBpZiAoIWV4cGlyYXRpb25EYXRlVGltZSkKICAgICAg
ICAgcmV0dXJuIHJlc3VsdHM7CiAKQEAgLTI5OTYsNiArMzAyNCwxODMgQEAgYm9vbCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKGlu
dCBkb21haW5JRCkKICAgICByZXR1cm4gbV9saW5rRGVjb3JhdGlvbkV4aXN0c1N0YXRlbWVudC5n
ZXRDb2x1bW5JbnQoMCkgfHwgbV9zY3JpcHRMb2FkRXhpc3RzU3RhdGVtZW50LmdldENvbHVtbklu
dCgwKSB8fCBtX3N1YkZyYW1lRXhpc3RzU3RhdGVtZW50LmdldENvbHVtbkludCgwKSB8fCBtX3N1
YlJlc291cmNlRXhpc3RzU3RhdGVtZW50LmdldENvbHVtbkludCgwKSB8fCBtX3VuaXF1ZVJlZGly
ZWN0RXhpc3RzU3RhdGVtZW50LmdldENvbHVtbkludCgwKSB8fCBtX29ic2VydmVkRG9tYWluc0V4
aXN0c1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7CiB9CiAKK09wdGlvbmFsPFNlY29uZHM+IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRMZWFzdFJlY2VudE9wZXJhdGlu
Z0RhdGUoKSBjb25zdAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAg
aWYgKHRoaXMtPnBhcmFtZXRlcnMoKS50aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKQorICAgICAg
ICByZXR1cm4gV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkgLSB0aGlzLT5wYXJh
bWV0ZXJzKCkudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbi52YWx1ZSgpOworICAgIAorICAgIGlm
IChtX2NvdW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ST1cpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nlc3Npb25JRCwgIiVwIC0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnN0YXRpc3RpY3NFeHBpcmF0aW9u
VGltZS4gY291bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudCBmYWlsZWQgdG8gc3RlcCwgZXJyb3Ig
bWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgfQorICAgIAorICAgIGNvbnN0IHVuc2lnbmVkIG9wZXJhdGluZ0RhdGVzU2l6ZSA9
IG1fY291bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCk7CisgICAgcmVz
ZXRTdGF0ZW1lbnQobV9jb3VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50KTsKKworICAgIGlmIChv
cGVyYXRpbmdEYXRlc1NpemUgPj0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nKSB7CisgICAgICAg
IGlmIChtX2dldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FM
SVRFX1JPVykgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnN0YXRp
c3RpY3NFeHBpcmF0aW9uVGltZS4gZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50
IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9CisKKyAgICAgICAg
YXV0byBsZWFzdFJlY2VudE9wZXJhdGluZ0RhdGUgPSBPcGVyYXRpbmdEYXRlKG1fZ2V0TGVhc3RS
ZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgwKSwgbV9nZXRMZWFzdFJl
Y2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDEpLCBtX2dldExlYXN0UmVj
ZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMikpOworICAgICAgICByZXNl
dFN0YXRlbWVudChtX2dldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCk7CisgICAg
ICAgIHJldHVybiBsZWFzdFJlY2VudE9wZXJhdGluZ0RhdGUuc2Vjb25kc1NpbmNlRXBvY2goKTsK
KyAgICB9CisKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCit2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5l
Y2Vzc2FyeSgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgCisgICAg
aWYgKG1fY291bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykg
eworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAg
LSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVy
YXRpbmdEYXRlSWZOZWNlc3NhcnkuIGNvdW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQgZmFpbGVk
IHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRhYmFzZS5s
YXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8gb3BlcmF0aW5nRGF0ZXNTaXplID0gbV9jb3Vu
dE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50LmdldENvbHVtbkludCgwKTsKKyAgICByZXNldFN0YXRl
bWVudChtX2NvdW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQpOworICAgIGF1dG8gdG9kYXkgPSBP
cGVyYXRpbmdEYXRlOjp0b2RheSgpOworCisgICAgaWYgKG9wZXJhdGluZ0RhdGVzU2l6ZSA+IDAp
IHsKKyAgICAgICAgaWYgKG1fZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuc3Rl
cCgpICE9IFNRTElURV9ST1cpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeS4gZ2V0Rmlyc3RPcGVy
YXRpbmdEYXRlU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3ByaXZh
dGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgYXV0byBtb3N0UmVjZW50T3BlcmF0aW5nRGF0ZSA9IE9wZXJhdGluZ0RhdGUobV9nZXRNb3N0
UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCksIG1fZ2V0TW9zdFJl
Y2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDEpLCBtX2dldE1vc3RSZWNl
bnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgyKSk7CisKKyAgICAgICAgcmVz
ZXRTdGF0ZW1lbnQobV9nZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCk7CisKKyAg
ICAgICAgaWYgKHRvZGF5IDw9IG1vc3RSZWNlbnRPcGVyYXRpbmdEYXRlKQorICAgICAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGludCByb3dzVG9QcnVuZSA9IG9wZXJhdGluZ0RhdGVzU2l6
ZSAtIG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZyArIDE7CisgICAgaWYgKHJvd3NUb1BydW5lID4g
MCkgeworICAgICAgICBpZiAobV9kZWxldGVMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVzU3RhdGVt
ZW50LmJpbmRJbnQoMSwgcm93c1RvUHJ1bmUpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwg
bV9kZWxldGVMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJ
VEVfRE9ORSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChtX3Nl
c3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY2x1
ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5LiBkZWxldGVMZWFzdFJlY2VudE9wZXJh
dGluZ0RhdGVzU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3ByaXZh
dGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmVzZXRTdGF0ZW1lbnQobV9k
ZWxldGVMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50KTsKKyAgICB9CisKKyAgICBp
ZiAobV9pbnNlcnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmJpbmRJbnQoMSwgdG9kYXkueWVhcigp
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgbV9pbnNlcnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50
LmJpbmRJbnQoMiwgdG9kYXkubW9udGgoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faW5z
ZXJ0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5iaW5kSW50KDMsIHRvZGF5Lm1vbnRoRGF5KCkpICE9
IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuc3Rl
cCgpICE9IFNRTElURV9ET05FKSB7CisKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChtX3Nlc3Npb25JRCwgIiVwIC0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5LiBpbnNlcnRPcGVyYXRp
bmdEYXRlU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9
cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmVzZXRTdGF0ZW1lbnQobV9pbnNlcnRPcGVyYXRpbmdE
YXRlU3RhdGVtZW50KTsKK30KKworYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQoV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRlcmFj
dGlvblRpbWUsIE9wZXJhdGluZ0RhdGVzV2luZG93IG9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25z
dAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgdW5zaWduZWQgb3Bl
cmF0aW5nRGF0ZXNXaW5kb3dJbkRheXMgPSAwOworICAgIHN3aXRjaCAob3BlcmF0aW5nRGF0ZXNX
aW5kb3cpIHsKKyAgICBjYXNlIE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nOgorICAgICAgICBv
cGVyYXRpbmdEYXRlc1dpbmRvd0luRGF5cyA9IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZzsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6U2hvcnQ6CisgICAg
ICAgIG9wZXJhdGluZ0RhdGVzV2luZG93SW5EYXlzID0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dTaG9y
dDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6Rm9yTGl2
ZU9uVGVzdGluZzoKKyAgICAgICAgcmV0dXJuIFdhbGxUaW1lOjpub3coKSA+IG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25UaW1lICsgb3BlcmF0aW5nVGltZVdpbmRvd0ZvckxpdmVPblRlc3Rpbmc7
CisgICAgY2FzZSBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6Rm9yUmVwcm9UZXN0aW5nOgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgaWYgKG1fY291bnRPcGVyYXRpbmdEYXRl
c1N0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQuIGNvdW50T3BlcmF0aW5nRGF0ZXNT
dGF0ZW1lbnQgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhp
cywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIGNvbnN0IHVuc2ln
bmVkIG9wZXJhdGluZ0RhdGVzU2l6ZSA9IG1fY291bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudC5n
ZXRDb2x1bW5JbnQoMCk7CisgICAgcmVzZXRTdGF0ZW1lbnQobV9jb3VudE9wZXJhdGluZ0RhdGVz
U3RhdGVtZW50KTsKKworICAgIGlmIChvcGVyYXRpbmdEYXRlc1NpemUgPj0gb3BlcmF0aW5nRGF0
ZXNXaW5kb3dJbkRheXMpIHsKKyAgICAgICAgaWYgKG1fZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdE
YXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKSB7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQuIGdldExlYXN0UmVjZW50
T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJXtw
cml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgICAgIGF1dG8gbGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlID0gT3BlcmF0aW5nRGF0
ZShtX2dldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMCks
IG1fZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgxKSwg
bV9nZXRMZWFzdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDIpKTsK
KworICAgICAgICByZXNldFN0YXRlbWVudChtX2dldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0
YXRlbWVudCk7CisKKyAgICAgICAgaWYgKE9wZXJhdGluZ0RhdGU6OmZyb21XYWxsVGltZShtb3N0
UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkgPCBsZWFzdFJlY2VudE9wZXJhdGluZ0RhdGUpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSBkb24ndCBtZWV0
IHRoZSByZWFsIGNyaXRlcmlhIGZvciBhbiBleHBpcmVkIHN0YXRpc3RpYywgY2hlY2sgdGhlIHVz
ZXIgc2V0dGluZyBmb3IgYSB0aWdodGVyIHJlc3RyaWN0aW9uIChtYWlubHkgZm9yIHRlc3Rpbmcp
LgorICAgIGlmICh0aGlzLT5wYXJhbWV0ZXJzKCkudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbikg
eworICAgICAgICBpZiAoV2FsbFRpbWU6Om5vdygpID4gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
blRpbWUgKyB0aGlzLT5wYXJhbWV0ZXJzKCkudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbi52YWx1
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRF
eHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
LCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tp
ZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KQoreworICAgIC8vIFBvcHVsYXRlIHRoZSBP
cGVyYXRpbmcgRGF0ZXMgdGFibGUgd2l0aCBlbm91Z2ggZGF5cyB0byByZXF1aXJlIHBydW5pbmcu
CisgICAgZG91YmxlIGRheXNBZ29JblNlY29uZHMgPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9
IDE7IGkgPD0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nOyBpKyspIHsKKyAgICAgICAgZG91Ymxl
IGRheXNUb1N1YnRyYWN0ID0gU2Vjb25kczo6ZnJvbUhvdXJzKDI0ICogaSkudmFsdWUoKTsKKyAg
ICAgICAgZGF5c0Fnb0luU2Vjb25kcyA9IFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9j
aCgpLnZhbHVlKCkgLSBkYXlzVG9TdWJ0cmFjdDsKKyAgICAgICAgYXV0byBkYXRlVG9JbnNlcnQg
PSBPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUoV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGRh
eXNBZ29JblNlY29uZHMpKTsKKworICAgICAgICBpZiAobV9pbnNlcnRPcGVyYXRpbmdEYXRlU3Rh
dGVtZW50LmJpbmRJbnQoMSwgZGF0ZVRvSW5zZXJ0LnllYXIoKSkgIT0gU1FMSVRFX09LCisgICAg
ICAgICAgICB8fCBtX2luc2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuYmluZEludCgyLCBkYXRl
VG9JbnNlcnQubW9udGgoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBtX2luc2VydE9w
ZXJhdGluZ0RhdGVTdGF0ZW1lbnQuYmluZEludCgzLCBkYXRlVG9JbnNlcnQubW9udGhEYXkoKSkg
IT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBtX2luc2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1l
bnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CisKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeS4gaW5z
ZXJ0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTog
JXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIHJlc2V0U3RhdGVt
ZW50KG1faW5zZXJ0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudCk7CisgICAgfQorCisgICAgLy8gTWFr
ZSBzdXJlIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lIGlzIHRoZSBsZWFzdCByZWNlbnQg
b2YgYWxsIGVudHJpZXMuCisgICAgZGF5c0Fnb0luU2Vjb25kcyAtPSBTZWNvbmRzOjpmcm9tSG91
cnMoMjQpLnZhbHVlKCk7CisKKyAgICBpZiAobV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVu
dC5iaW5kVGV4dChSZWdpc3RyYWJsZURvbWFpbkluZGV4LCBkb21haW4uc3RyaW5nKCkpICE9IFNR
TElURV9PSworICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRE
b3VibGUoTGFzdFNlZW5JbmRleCwgZGF5c0Fnb0luU2Vjb25kcykgIT0gU1FMSVRFX09LCisgICAg
ICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZEludChIYWRVc2VySW50
ZXJhY3Rpb25JbmRleCwgaGFzVXNlckludGVyYWN0aW9uKSAhPSBTUUxJVEVfT0sKKyAgICAgICAg
fHwgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kRG91YmxlKE1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25UaW1lSW5kZXgsIGRheXNBZ29JblNlY29uZHMpICE9IFNRTElURV9PSwor
ICAgICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoR3JhbmRm
YXRoZXJlZEluZGV4LCBmYWxzZSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0T2Jz
ZXJ2ZWREb21haW5TdGF0ZW1lbnQuYmluZEludChJc1ByZXZhbGVudEluZGV4LCBpc1ByZXZhbGVu
dCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1l
bnQuYmluZEludChJc1ZlcnlQcmV2YWxlbnRJbmRleCwgZmFsc2UpICE9IFNRTElURV9PSworICAg
ICAgICB8fCBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoRGF0YVJlY29y
ZHNSZW1vdmVkSW5kZXgsIDApICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2VydE9ic2Vy
dmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRv
VXNlckludGVyYWN0aW9uSW5kZXgsIDApICE9IFNRTElURV9PSworICAgICAgICB8fCBtX2luc2Vy
dE9ic2VydmVkRG9tYWluU3RhdGVtZW50LmJpbmRJbnQoVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0
eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSUluZGV4LCAwKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwg
bV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5iaW5kSW50KElzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWxJbmRleCwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRh
UmVtb3ZhbCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyBmYWlsZWQgdG8gYmluZCwgZXJy
b3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAobV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC5zdGVwKCkgIT0gU1FM
SVRFX0RPTkUpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNG
b3JUZXN0aW5nIGZhaWxlZCB0byBjb21taXQsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwg
dGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlc2V0U3RhdGVtZW50KG1faW5z
ZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5oCmluZGV4IGI0N2Q1MmRmMmI0YTVlOGRlODcxNjQxMmUxYWFkNTM5MDdhZDNkOWIu
LmM3YzY0MjA3YjJlNzc1NmY4YjQ5MWM3OTE0MmQ0NTk3ODcxNzI0YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC0xNDEsOCAr
MTQxLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZURhdGFGb3JEb21haW4oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mKSBvdmVycmlkZTsKICAgICBib29sIGRvbWFpbklERXhpc3RzSW5EYXRh
YmFzZShpbnQpOwogICAgIE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PiBjaGVja0Zvck1pc3NpbmdU
YWJsZXNJblNjaGVtYSgpOworICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3Rp
bmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9v
bCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGluY2x1ZGVUb2RheUFzT3BlcmF0aW5n
RGF0ZUlmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhck9wZXJhdGluZ0RhdGVz
KCkgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBoYXNTdGF0aXN0aWNzRXhwaXJlZChXYWxsVGltZSBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cpIGNvbnN0
IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPFNlY29uZHM+IGdldExlYXN0UmVjZW50T3BlcmF0aW5n
RGF0ZSgpIGNvbnN0OworICAgIAogICAgIHZvaWQgb3BlbklUUERhdGFiYXNlKCk7CiAgICAgdm9p
ZCBhZGRNaXNzaW5nVGFibGVzSWZOZWNlc3NhcnkoKTsKICAgICB2b2lkIGVuYWJsZUZvcmVpZ25L
ZXlzKCk7CkBAIC0yNzMsNiArMjc5LDExIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBXZWJDb3Jl
OjpTUUxpdGVTdGF0ZW1lbnQgbV91bmlxdWVSZWRpcmVjdEV4aXN0c1N0YXRlbWVudDsKICAgICBt
dXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX29ic2VydmVkRG9tYWluc0V4aXN0c1N0
YXRlbWVudDsKICAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX3JlbW92ZUFs
bERhdGFTdGF0ZW1lbnQ7CisgICAgbXV0YWJsZSBXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQgbV9p
bnNlcnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50OworICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRl
U3RhdGVtZW50IG1fY291bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIFdl
YkNvcmU6OlNRTGl0ZVN0YXRlbWVudCBtX2dldE1vc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVt
ZW50OworICAgIG11dGFibGUgV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50IG1fZGVsZXRlTGVhc3RS
ZWNlbnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudDsKKyAgICBtdXRhYmxlIFdlYkNvcmU6OlNRTGl0
ZVN0YXRlbWVudCBtX2dldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudDsKICAgICBQ
QUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBib29sIG1faXNOZXdSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VGaWxlIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IGFmNTAwNDFkMjM3YjQw
Yzc2ZDViNGQxYzc2MDg4OTUzYTNhZjhmNTYuLjk2NmViOWNlZThhOGRkNjI5ZWVkOGU5NmM1NDRl
MmE5NDMxODBmNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuY3BwCkBAIC04MCw2ICs4MCw4IEBAIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlKFdlYlJlc291cmNl
CiAgICAgICAgIGlmICh3ZWFrVGhpcykKICAgICAgICAgICAgIHdlYWtUaGlzLT5jYWxjdWxhdGVB
bmRTdWJtaXRUZWxlbWV0cnkoKTsKICAgICB9KTsKKworICAgIGluY2x1ZGVUb2RheUFzT3BlcmF0
aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7CiB9CiAKIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlOjppc0VtcHR5KCkgY29uc3QKQEAgLTEwODEsNiArMTA4MywxMDkgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnNldFZlcnlQcmV2YWxlbnRSZXNvdXJj
ZShjb25zdCBSZWdpc3RyYWIKICAgICBzZXRQcmV2YWxlbnRSZXNvdXJjZShyZXNvdXJjZVN0YXRp
c3RpYywgUmVzb3VyY2VMb2FkUHJldmFsZW5jZTo6VmVyeUhpZ2gpOwogfQogCitWZWN0b3I8T3Bl
cmF0aW5nRGF0ZT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjptZXJnZU9wZXJh
dGluZ0RhdGVzKGNvbnN0IFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYgZXhpc3RpbmdEYXRlcywgVmVj
dG9yPE9wZXJhdGluZ0RhdGU+JiYgbmV3RGF0ZXMpCit7CisgICAgaWYgKGV4aXN0aW5nRGF0ZXMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gV1RGTW92ZShuZXdEYXRlcyk7CisKKyAgICBWZWN0
b3I8T3BlcmF0aW5nRGF0ZT4gbWVyZ2VkRGF0ZXMoZXhpc3RpbmdEYXRlcy5zaXplKCkgKyBuZXdE
YXRlcy5zaXplKCkpOworCisgICAgLy8gTWVyZ2UgdGhlIHR3byBzb3J0ZWQgdmVjdG9ycyBvZiBk
YXRlcy4KKyAgICBzdGQ6Om1lcmdlKGV4aXN0aW5nRGF0ZXMuYmVnaW4oKSwgZXhpc3RpbmdEYXRl
cy5lbmQoKSwgbmV3RGF0ZXMuYmVnaW4oKSwgbmV3RGF0ZXMuZW5kKCksIG1lcmdlZERhdGVzLmJl
Z2luKCkpOworICAgIC8vIFJlbW92ZSBkdXBsaWNhdGUgZGF0ZXMuCisgICAgcmVtb3ZlUmVwZWF0
ZWRFbGVtZW50cyhtZXJnZWREYXRlcyk7CisKKyAgICAvLyBEcm9wIG9sZCBkYXRlcyB1bnRpbCB0
aGUgVmVjdG9yIHNpemUgcmVhY2hlcyBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcuCisgICAgd2hp
bGUgKG1lcmdlZERhdGVzLnNpemUoKSA+IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZykKKyAgICAg
ICAgbWVyZ2VkRGF0ZXMucmVtb3ZlKDApOworCisgICAgcmV0dXJuIG1lcmdlZERhdGVzOworfQor
Cit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6bWVyZ2VPcGVyYXRpbmdE
YXRlcyhWZWN0b3I8T3BlcmF0aW5nRGF0ZT4mJiBuZXdEYXRlcykKK3sKKyAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKKworICAgIG1fb3BlcmF0aW5nRGF0ZXMgPSBtZXJnZU9wZXJhdGlu
Z0RhdGVzKG1fb3BlcmF0aW5nRGF0ZXMsIFdURk1vdmUobmV3RGF0ZXMpKTsKK30KKwordm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmluY2x1ZGVUb2RheUFzT3BlcmF0aW5n
RGF0ZUlmTmVjZXNzYXJ5KCkKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKwor
ICAgIGF1dG8gdG9kYXkgPSBPcGVyYXRpbmdEYXRlOjp0b2RheSgpOworICAgIGlmICghbV9vcGVy
YXRpbmdEYXRlcy5pc0VtcHR5KCkgJiYgdG9kYXkgPD0gbV9vcGVyYXRpbmdEYXRlcy5sYXN0KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIHdoaWxlIChtX29wZXJhdGluZ0RhdGVzLnNpemUoKSA+
PSBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcpCisgICAgICAgIG1fb3BlcmF0aW5nRGF0ZXMucmVt
b3ZlKDApOworCisgICAgbV9vcGVyYXRpbmdEYXRlcy5hcHBlbmQodG9kYXkpOworfQorCitib29s
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQo
V2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUsIE9wZXJhdGluZ0RhdGVzV2lu
ZG93IG9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOworCisgICAgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5kb3dJbkRheXMgPSAw
OworICAgIHN3aXRjaCAob3BlcmF0aW5nRGF0ZXNXaW5kb3cpIHsKKyAgICBjYXNlIE9wZXJhdGlu
Z0RhdGVzV2luZG93OjpMb25nOgorICAgICAgICBvcGVyYXRpbmdEYXRlc1dpbmRvd0luRGF5cyA9
IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPcGVy
YXRpbmdEYXRlc1dpbmRvdzo6U2hvcnQ6CisgICAgICAgIG9wZXJhdGluZ0RhdGVzV2luZG93SW5E
YXlzID0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dTaG9ydDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6Rm9yTGl2ZU9uVGVzdGluZzoKKyAgICAgICAgcmV0dXJu
IFdhbGxUaW1lOjpub3coKSA+IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lICsgb3BlcmF0
aW5nVGltZVdpbmRvd0ZvckxpdmVPblRlc3Rpbmc7CisgICAgY2FzZSBPcGVyYXRpbmdEYXRlc1dp
bmRvdzo6Rm9yUmVwcm9UZXN0aW5nOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICBpZiAobV9vcGVyYXRpbmdEYXRlcy5zaXplKCkgPj0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dJbkRh
eXMpIHsKKyAgICAgICAgaWYgKE9wZXJhdGluZ0RhdGU6OmZyb21XYWxsVGltZShtb3N0UmVjZW50
VXNlckludGVyYWN0aW9uVGltZSkgPCBtX29wZXJhdGluZ0RhdGVzLmZpcnN0KCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSBkb24ndCBtZWV0IHRoZSBy
ZWFsIGNyaXRlcmlhIGZvciBhbiBleHBpcmVkIHN0YXRpc3RpYywgY2hlY2sgdGhlIHVzZXIgc2V0
dGluZyBmb3IgYSB0aWdodGVyIHJlc3RyaWN0aW9uIChtYWlubHkgZm9yIHRlc3RpbmcpLgorICAg
IGlmICh0aGlzLT5wYXJhbWV0ZXJzKCkudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbikgeworICAg
ICAgICBpZiAoV2FsbFRpbWU6Om5vdygpID4gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUg
KyB0aGlzLT5wYXJhbWV0ZXJzKCkudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbi52YWx1ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQor
Citib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RhdGlzdGljc0V4
cGlyZWQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMsIE9w
ZXJhdGluZ0RhdGVzV2luZG93IG9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdAoreworICAgIHJl
dHVybiBoYXNTdGF0aXN0aWNzRXhwaXJlZChyZXNvdXJjZVN0YXRpc3RpYy5tb3N0UmVjZW50VXNl
ckludGVyYWN0aW9uVGltZSwgb3BlcmF0aW5nRGF0ZXNXaW5kb3cpOworfQorCit2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRl
c3RpbmcoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgYm9vbCBoYXNVc2VySW50ZXJh
Y3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBp
c1ByZXZhbGVudCkKK3sKKyAgICAvLyBQb3B1bGF0ZSB0aGUgT3BlcmF0aW5nIERhdGVzIHRhYmxl
IHdpdGggZW5vdWdoIGRheXMgdG8gcmVxdWlyZSBwcnVuaW5nLgorICAgIGRvdWJsZSBkYXlzQWdv
SW5TZWNvbmRzID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDw9IG9wZXJhdGluZ0Rh
dGVzV2luZG93TG9uZzsgaSsrKSB7CisgICAgICAgIGRvdWJsZSBkYXlzVG9TdWJ0cmFjdCA9IFNl
Y29uZHM6OmZyb21Ib3VycygyNCAqIGkpLnZhbHVlKCk7CisgICAgICAgIGRheXNBZ29JblNlY29u
ZHMgPSBXYWxsVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIC0gZGF5c1Rv
U3VidHJhY3Q7CisgICAgICAgIGF1dG8gZGF0ZVRvSW5zZXJ0ID0gT3BlcmF0aW5nRGF0ZTo6ZnJv
bVdhbGxUaW1lKFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhkYXlzQWdvSW5TZWNvbmRzKSk7Cisg
ICAgICAgIG1fb3BlcmF0aW5nRGF0ZXMuYXBwZW5kKE9wZXJhdGluZ0RhdGUoZGF0ZVRvSW5zZXJ0
LnllYXIoKSwgZGF0ZVRvSW5zZXJ0Lm1vbnRoKCksIGRhdGVUb0luc2VydC5tb250aERheSgpKSk7
CisgICAgfQorCisgICAgLy8gTWFrZSBzdXJlIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1l
IGlzIHRoZSBsZWFzdCByZWNlbnQgb2YgYWxsIGVudHJpZXMuCisgICAgZGF5c0Fnb0luU2Vjb25k
cyAtPSBTZWNvbmRzOjpmcm9tSG91cnMoMjQpLnZhbHVlKCk7CisKKyAgICBhdXRvIHN0YXRpc3Rp
YyA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3MoZG9tYWluKTsKKyAgICBzdGF0aXN0aWMubGFzdFNl
ZW4gPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZGF5c0Fnb0luU2Vjb25kcyk7CisgICAgc3Rh
dGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbiA9IGhhc1VzZXJJbnRlcmFjdGlvbjsKKyAgICBzdGF0
aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoZGF5c0Fnb0luU2Vjb25kcyk7CisgICAgc3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3Vy
Y2UgPSBpc1ByZXZhbGVudDsKKyAgICBzdGF0aXN0aWMuZ290TGlua0RlY29yYXRpb25Gcm9tUHJl
dmFsZW50UmVzb3VyY2UgPSBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsOwor
CisgICAgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5zdXJlKHN0YXRpc3RpYy5yZWdpc3RyYWJs
ZURvbWFpbiwgWyZzdGF0aXN0aWNdIHsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoc3RhdGlzdGlj
KTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCmluZGV4IDI0NmU3
NjcxZWExODUwNTI5NTdlMzIyMGY3YmYxMWM1ZTI0YjA4YjcuLjVlYjM3MzIyMzc2ZThkZWY1NGQ3
NTljYTVkZTdlZWY3M2M3MzBkYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTExMyw4ICsxMTMsMTcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMpIG92ZXJy
aWRlOwogICAgIHZvaWQgcmVtb3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYpIG92ZXJyaWRlOworICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3Rpbmco
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBp
c1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0
ZUlmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7CisgICAgY29uc3QgVmVjdG9yPE9wZXJhdGluZ0RhdGU+
JiBvcGVyYXRpbmdEYXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nRGF0ZXM7IH0KKyAg
ICB2b2lkIGNsZWFyT3BlcmF0aW5nRGF0ZXMoKSBvdmVycmlkZSB7IG1fb3BlcmF0aW5nRGF0ZXMu
Y2xlYXIoKTsgfQorICAgIHZvaWQgbWVyZ2VPcGVyYXRpbmdEYXRlcyhWZWN0b3I8T3BlcmF0aW5n
RGF0ZT4mJik7CisgICAgYm9vbCBoYXNTdGF0aXN0aWNzRXhwaXJlZChjb25zdCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJiwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cpIGNvbnN0OworICAgIHN0YXRpYyBW
ZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbWVyZ2VPcGVyYXRpbmdEYXRlcyhjb25zdCBWZWN0b3I8T3Bl
cmF0aW5nRGF0ZT4mIGV4aXN0aW5nRGF0ZXMsIFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYmIG5ld0Rh
dGVzKTsKKyAgICBib29sIGhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1lIG1vc3RSZWNlbnRV
c2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRpbmdEYXRlc1dpbmRvdykgY29uc3Qgb3ZlcnJpZGU7
CisKICAgICBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0FuZEtlZXBDb29raWVzKGNvbnN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0FuZFB1cmdl
Q29va2llcyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgc3RhdGljIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBoYXNVc2VyR3JhbnRlZFN0b3JhZ2VBY2Nl
c3NUaHJvdWdoUHJvbXB0KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpOwpAQCAtMTM3LDYgKzE0Niw3IEBAIHByaXZhdGU6CiAKICAgICBXZWFr
UHRyPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4gbV9wZXJzaXN0ZW50
U3RvcmFnZTsKICAgICBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzPiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKKyAgICBWZWN0b3I8T3BlcmF0aW5nRGF0
ZT4gbV9vcGVyYXRpbmdEYXRlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
LmNwcAppbmRleCBkZDk2MzhmZjgxN2ZiNzYxMDY4NzY0NTQ4MDFjMzQzYTNjNjk4ZDZkLi43M2Rh
ZTcwNmJlOTNhNGJjOTNlMGFlYjRkZjM5ZjM3YWZhNTczZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAt
MjA4LDcgKzIwOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlOjpwb3B1bGF0ZU1lbW9yeVN0b3JlRnJvbURpc2soQ29tcGxlCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICAvLyBEZWJ1ZyBtb2RlIGhhcyBhIHByZXBvdWxhdGVkIG1lbW9yeSBzdG9y
ZS4KKyAgICAvLyBEZWJ1ZyBtb2RlIGhhcyBhIHByZXBvcHVsYXRlZCBtZW1vcnkgc3RvcmUuCiAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX21lbW9yeVN0b3JlLmlzRW1wdHkoKSB8fCBtX21lbW9y
eVN0b3JlLmlzRGVidWdNb2RlRW5hYmxlZCgpLCAiVGhpcyBpcyB0aGUgaW5pdGlhbCBpbXBvcnQg
c28gdGhlIHN0b3JlIHNob3VsZCBiZSBlbXB0eSIpOwogICAgIG1fbWVtb3J5U3RvcmUubWVyZ2VX
aXRoRGF0YUZyb21EZWNvZGVyKCpkZWNvZGVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBlMzRjNWU5NjNjZDNjYmQwNWRhZjI2NmIzOTNjNzky
ODliMTNlZDEwLi40NzlmNTE2MTg1OWE4ODYzOGE4ZDI4ZTUwOGM5NWQxOGY1MTQ4OGUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtNTIsOSArNTIs
NiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBjb25z
dGV4cHIgU2Vjb25kcyBtaW5pbXVtU3RhdGlzdGljc1Byb2Nlc3NpbmdJbnRlcnZhbCB7IDVfcyB9
OwotY29uc3RleHByIHVuc2lnbmVkIG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZyB7IDMwIH07Ci1j
b25zdGV4cHIgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5kb3dTaG9ydCB7IDcgfTsKLWNvbnN0
ZXhwciBTZWNvbmRzIG9wZXJhdGluZ1RpbWVXaW5kb3dGb3JMaXZlT25UZXN0aW5nIHsgMV9oIH07
CiAKIHN0YXRpYyBTdHJpbmcgZG9tYWluc1RvU3RyaW5nKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4mIGRvbWFpbnMpCiB7CkBAIC0xMzMsOCArMTMwLDYgQEAgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGkKICAgICAsIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdChzaG91bGRJbmNsdWRlTG9j
YWxob3N0KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaW5jbHVk
ZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKTsKIH0KIAogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjp+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkKQEAgLTQ1MSw5NyAr
NDQ2LDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZUJs
b2NraW5nRm9yRG9tYWlucyhjb25zdCBSZWdpc3RyYWIKICAgICAgICAgfSk7CiAgICAgfSk7CiB9
Ci0gICAgCi0KLU9wdGlvbmFsPFNlY29uZHM+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c3RhdGlzdGljc0VwaXJhdGlvblRpbWUoKSBjb25zdAotewotICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwotCi0gICAgaWYgKG1fcGFyYW1ldGVycy50aW1lVG9MaXZlVXNlckludGVyYWN0
aW9uKQotICAgICAgICByZXR1cm4gV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkg
LSBtX3BhcmFtZXRlcnMudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbi52YWx1ZSgpOwotICAgIAot
ICAgIGlmIChtX29wZXJhdGluZ0RhdGVzLnNpemUoKSA+PSBvcGVyYXRpbmdEYXRlc1dpbmRvd0xv
bmcpCi0gICAgICAgIHJldHVybiBtX29wZXJhdGluZ0RhdGVzLmZpcnN0KCkuc2Vjb25kc1NpbmNl
RXBvY2goKTsKLSAgICAKLSAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotfQotCi1WZWN0b3I8T3Bl
cmF0aW5nRGF0ZT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXJnZU9wZXJhdGluZ0Rh
dGVzKGNvbnN0IFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYgZXhpc3RpbmdEYXRlcywgVmVjdG9yPE9w
ZXJhdGluZ0RhdGU+JiYgbmV3RGF0ZXMpCi17Ci0gICAgaWYgKGV4aXN0aW5nRGF0ZXMuaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gV1RGTW92ZShuZXdEYXRlcyk7Ci0gICAgCi0gICAgVmVjdG9y
PE9wZXJhdGluZ0RhdGU+IG1lcmdlZERhdGVzKGV4aXN0aW5nRGF0ZXMuc2l6ZSgpICsgbmV3RGF0
ZXMuc2l6ZSgpKTsKLSAgICAKLSAgICAvLyBNZXJnZSB0aGUgdHdvIHNvcnRlZCB2ZWN0b3JzIG9m
IGRhdGVzLgotICAgIHN0ZDo6bWVyZ2UoZXhpc3RpbmdEYXRlcy5iZWdpbigpLCBleGlzdGluZ0Rh
dGVzLmVuZCgpLCBuZXdEYXRlcy5iZWdpbigpLCBuZXdEYXRlcy5lbmQoKSwgbWVyZ2VkRGF0ZXMu
YmVnaW4oKSk7Ci0gICAgLy8gUmVtb3ZlIGR1cGxpY2F0ZSBkYXRlcy4KLSAgICByZW1vdmVSZXBl
YXRlZEVsZW1lbnRzKG1lcmdlZERhdGVzKTsKLSAgICAKLSAgICAvLyBEcm9wIG9sZCBkYXRlcyB1
bnRpbCB0aGUgVmVjdG9yIHNpemUgcmVhY2hlcyBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcuCi0g
ICAgd2hpbGUgKG1lcmdlZERhdGVzLnNpemUoKSA+IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZykK
LSAgICAgICAgbWVyZ2VkRGF0ZXMucmVtb3ZlKDApOwotICAgIAotICAgIHJldHVybiBtZXJnZWRE
YXRlczsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdlT3BlcmF0
aW5nRGF0ZXMoVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiYgbmV3RGF0ZXMpCi17Ci0gICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBtX29wZXJhdGluZ0RhdGVzID0gbWVyZ2VPcGVy
YXRpbmdEYXRlcyhtX29wZXJhdGluZ0RhdGVzLCBXVEZNb3ZlKG5ld0RhdGVzKSk7Ci19Ci0KLXZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0Rh
dGVJZk5lY2Vzc2FyeSgpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAg
ICBhdXRvIHRvZGF5ID0gT3BlcmF0aW5nRGF0ZTo6dG9kYXkoKTsKLSAgICBpZiAoIW1fb3BlcmF0
aW5nRGF0ZXMuaXNFbXB0eSgpICYmIHRvZGF5IDw9IG1fb3BlcmF0aW5nRGF0ZXMubGFzdCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICB3aGlsZSAobV9vcGVyYXRpbmdEYXRlcy5zaXplKCkgPj0g
b3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nKQotICAgICAgICBtX29wZXJhdGluZ0RhdGVzLnJlbW92
ZSgwKTsKLQotICAgIG1fb3BlcmF0aW5nRGF0ZXMuYXBwZW5kKHRvZGF5KTsKLX0KLQotYm9vbCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1l
IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRpbmdEYXRlc1dpbmRvdyBvcGVy
YXRpbmdEYXRlc1dpbmRvdykgY29uc3QKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKLQotICAgIHVuc2lnbmVkIG9wZXJhdGluZ0RhdGVzV2luZG93SW5EYXlzID0gMDsKLSAgICBz
d2l0Y2ggKG9wZXJhdGluZ0RhdGVzV2luZG93KSB7Ci0gICAgY2FzZSBPcGVyYXRpbmdEYXRlc1dp
bmRvdzo6TG9uZzoKLSAgICAgICAgb3BlcmF0aW5nRGF0ZXNXaW5kb3dJbkRheXMgPSBvcGVyYXRp
bmdEYXRlc1dpbmRvd0xvbmc7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3BlcmF0aW5nRGF0
ZXNXaW5kb3c6OlNob3J0OgotICAgICAgICBvcGVyYXRpbmdEYXRlc1dpbmRvd0luRGF5cyA9IG9w
ZXJhdGluZ0RhdGVzV2luZG93U2hvcnQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3BlcmF0
aW5nRGF0ZXNXaW5kb3c6OkZvckxpdmVPblRlc3Rpbmc6Ci0gICAgICAgIHJldHVybiBXYWxsVGlt
ZTo6bm93KCkgPiBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSArIG9wZXJhdGluZ1RpbWVX
aW5kb3dGb3JMaXZlT25UZXN0aW5nOwotICAgIGNhc2UgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6OkZv
clJlcHJvVGVzdGluZzoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgaWYgKG1f
b3BlcmF0aW5nRGF0ZXMuc2l6ZSgpID49IG9wZXJhdGluZ0RhdGVzV2luZG93SW5EYXlzKSB7Ci0g
ICAgICAgIGlmIChPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUobW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUpIDwgbV9vcGVyYXRpbmdEYXRlcy5maXJzdCgpKQotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIC8vIElmIHdlIGRvbid0IG1lZXQgdGhlIHJlYWwg
Y3JpdGVyaWEgZm9yIGFuIGV4cGlyZWQgc3RhdGlzdGljLCBjaGVjayB0aGUgdXNlciBzZXR0aW5n
IGZvciBhIHRpZ2h0ZXIgcmVzdHJpY3Rpb24gKG1haW5seSBmb3IgdGVzdGluZykuCi0gICAgaWYg
KG1fcGFyYW1ldGVycy50aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKSB7Ci0gICAgICAgIGlmIChX
YWxsVGltZTo6bm93KCkgPiBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSArIG1fcGFyYW1l
dGVycy50aW1lVG9MaXZlVXNlckludGVyYWN0aW9uLnZhbHVlKCkpCi0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQoY29uc3QgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWMsIE9wZXJhdGluZ0RhdGVzV2luZG93
IG9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdAotewotICAgIHJldHVybiBoYXNTdGF0aXN0aWNz
RXhwaXJlZChyZXNvdXJjZVN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwg
b3BlcmF0aW5nRGF0ZXNXaW5kb3cpOwotfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2hvdWxkRW5mb3JjZVNhbWVTaXRlU3RyaWN0Rm9yU3BlY2lmaWNEb21haW4oY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAyZGJlOWU1MGJhZTQ3MGY5YzgxMDVjNTJjOWY1MDNh
ZmJkZWY3NDY4Li5mYmFmNmU4MzJlYzc1N2M1Mzc3ZGU2NjRjNTBiMGVjYWMyMjBlNWQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC01OSwyMiArNTksMzAg
QEAgcHVibGljOgogICAgIHN0YXRpYyBPcGVyYXRpbmdEYXRlIGZyb21XYWxsVGltZShXYWxsVGlt
ZSk7CiAgICAgc3RhdGljIE9wZXJhdGluZ0RhdGUgdG9kYXkoKTsKICAgICBTZWNvbmRzIHNlY29u
ZHNTaW5jZUVwb2NoKCkgY29uc3Q7CisgICAgaW50IHllYXIoKSBjb25zdCB7IHJldHVybiBtX3ll
YXI7IH0KKyAgICBpbnQgbW9udGgoKSBjb25zdCB7IHJldHVybiBtX21vbnRoOyB9CisgICAgaW50
IG1vbnRoRGF5KCkgY29uc3QgeyByZXR1cm4gbV9tb250aERheTsgfQorCiAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IE9wZXJhdGluZ0RhdGUmIG90aGVyKSBjb25zdDsKICAgICBib29sIG9wZXJh
dG9yPChjb25zdCBPcGVyYXRpbmdEYXRlJiBvdGhlcikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRv
cjw9KGNvbnN0IE9wZXJhdGluZ0RhdGUmIG90aGVyKSBjb25zdDsKICAgICAKLXByaXZhdGU6CiAg
ICAgT3BlcmF0aW5nRGF0ZShpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgbW9udGhEYXkpCiAgICAg
ICAgIDogbV95ZWFyKHllYXIpCiAgICAgICAgICwgbV9tb250aChtb250aCkKICAgICAgICAgLCBt
X21vbnRoRGF5KG1vbnRoRGF5KQogICAgIHsgfQogCitwcml2YXRlOgogICAgIGludCBtX3llYXIg
eyAwIH07CiAgICAgaW50IG1fbW9udGggeyAwIH07IC8vIFswLCAxMV0uCiAgICAgaW50IG1fbW9u
dGhEYXkgeyAwIH07IC8vIFsxLCAzMV0uCiB9OwogCitjb25zdGV4cHIgdW5zaWduZWQgb3BlcmF0
aW5nRGF0ZXNXaW5kb3dMb25nIHsgMzAgfTsKK2NvbnN0ZXhwciB1bnNpZ25lZCBvcGVyYXRpbmdE
YXRlc1dpbmRvd1Nob3J0IHsgNyB9OworY29uc3RleHByIFNlY29uZHMgb3BlcmF0aW5nVGltZVdp
bmRvd0ZvckxpdmVPblRlc3RpbmcgeyAxX2ggfTsKKwogZW51bSBjbGFzcyBPcGVyYXRpbmdEYXRl
c1dpbmRvdyA6IHVpbnQ4X3QgeyBMb25nLCBTaG9ydCwgRm9yTGl2ZU9uVGVzdGluZywgRm9yUmVw
cm9UZXN0aW5nIH07CiBlbnVtIGNsYXNzIENvb2tpZUFjY2VzcyA6IHVpbnQ4X3QgeyBDYW5ub3RS
ZXF1ZXN0LCBCYXNlZE9uQ29va2llUG9saWN5LCBPbmx5SWZHcmFudGVkIH07CiAKQEAgLTEwNSw3
ICsxMTMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDb29raWVCbG9ja2luZ0ZvckRvbWFp
bnMoY29uc3QgUmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZXNGb3ImLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJCbG9ja2luZ1N0YXRlRm9yRG9tYWlu
cyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogCi0gICAgdm9pZCBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJ
Zk5lY2Vzc2FyeSgpOwogICAgIHZvaWQgcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcygp
OwogCiAgICAgdmlydHVhbCB2b2lkIGNsYXNzaWZ5UHJldmFsZW50UmVzb3VyY2VzKCkgPSAwOwpA
QCAtMTQ4LDcgKzE1NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1heFN0YXRpc3RpY3NFbnRy
aWVzKHNpemVfdCBtYXhpbXVtRW50cnlDb3VudCk7CiAgICAgdm9pZCBzZXRQcnVuZUVudHJpZXNE
b3duVG8oc2l6ZV90IHBydW5lVGFyZ2V0Q291bnQpOwogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJz
VG9EZWZhdWx0VmFsdWVzKCk7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gc3RhdGlzdGljc0VwaXJh
dGlvblRpbWUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmRTdWJtaXRU
ZWxlbWV0cnkoKSBjb25zdCA9IDA7CiAKQEAgLTE5NiwxOCArMjAyLDE5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNNZW1vcnlTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGlzRGF0YWJhc2VTdG9yZSgpY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAorICAgIHZpcnR1YWwgdm9pZCBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2Fy
eSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPcGVyYXRpbmdEYXRlcygpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQoV2FsbFRpbWUgbW9zdFJlY2VudFVz
ZXJJbnRlcmFjdGlvblRpbWUsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgYm9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRG
b3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCkgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAg
c3RhdGljIHVuc2lnbmVkIGNvbXB1dGVJbXBvcnRhbmNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3MmKTsKLSAgICBzdGF0aWMgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1lcmdl
T3BlcmF0aW5nRGF0ZXMoY29uc3QgVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiBleGlzdGluZ0RhdGVz
LCBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4mJiBuZXdEYXRlcyk7CiAKICAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiwgV29ya1F1ZXVl
JiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCk7CiAgICAgCiAgICAgYm9vbCBkYXRhUmVjb3Jkc0Jl
aW5nUmVtb3ZlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQ7IH0K
IAotICAgIGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdDsKLSAgICBib29sIGhhc1N0YXRpc3Rp
Y3NFeHBpcmVkKFdhbGxUaW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRp
bmdEYXRlc1dpbmRvdykgY29uc3Q7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NQcm9jZXNz
aW5nUmVxdWVzdElmTmVjZXNzYXJ5KCk7Ci0gICAgdm9pZCBtZXJnZU9wZXJhdGluZ0RhdGVzKFZl
Y3RvcjxPcGVyYXRpbmdEYXRlPiYmKTsKICAgICBib29sIHNob3VsZEVuZm9yY2VTYW1lU2l0ZVN0
cmljdEZvclNwZWNpZmljRG9tYWluKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAg
ICAgdmlydHVhbCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGVuc3VyZVByZXZhbGVudFJlc291
cmNlc0ZvckRlYnVnTW9kZSgpID0gMDsKICAgICB2aXJ0dWFsIFJlZ2lzdHJhYmxlRG9tYWluc1Rv
RGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yIHJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRl
T3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yKCkgPSAwOwpAQCAtMjM3LDggKzI0NCw2IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgYm9vbCBpc1J1bm5pbmdUZXN0IHsgZmFsc2UgfTsKICAgICB9OwogICAg
IGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRl
cnM7IH0KLSAgICBjb25zdCBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4mIG9wZXJhdGluZ0RhdGVzKCkg
Y29uc3QgeyByZXR1cm4gbV9vcGVyYXRpbmdEYXRlczsgfQotICAgIHZvaWQgY2xlYXJPcGVyYXRp
bmdEYXRlcygpIHsgbV9vcGVyYXRpbmdEYXRlcy5jbGVhcigpOyB9CiAgICAgV2FsbFRpbWUmIGVu
ZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAoKSB7IHJldHVybiBtX2VuZE9mR3JhbmRmYXRoZXJp
bmdUaW1lc3RhbXA7IH0KICAgICBjb25zdCBXYWxsVGltZSYgZW5kT2ZHcmFuZGZhdGhlcmluZ1Rp
bWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcDsg
fQogICAgIHZvaWQgc2V0RW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcChjb25zdCBXYWxsVGlt
ZSYgZ3JhbmRmYXRoZXJpbmdUaW1lKSB7IG1fZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcCA9
IGdyYW5kZmF0aGVyaW5nVGltZTsgfQpAQCAtMjc3LDcgKzI4Miw2IEBAIHByaXZhdGU6CiAgICAg
SGFzaFNldDx1aW50NjRfdD4gbV9hY3RpdmVQbHVnaW5Ub2tlbnM7CiAjZW5kaWYKICAgICBQYXJh
bWV0ZXJzIG1fcGFyYW1ldGVyczsKLSAgICBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbV9vcGVyYXRp
bmdEYXRlczsKICAgICBXYWxsVGltZSBtX2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXA7CiAg
ICAgUmVnaXN0cmFibGVEb21haW4gbV9kZWJ1Z01hbnVhbFByZXZhbGVudFJlc291cmNlOwogICAg
IE1vbm90b25pY1RpbWUgbV9sYXN0VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDUzODdiNzY5
MjRhN2I0MDdhMzYxMjFhYjg4YzlkZWVjODIyMWY4MWEuLjdlODdjMTM4MjhkMGE1NTNjMGNmNzVi
Y2NmMmYxYzcxNzRhNzdhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCkBAIC0xNDUxLDYgKzE0NTEsMTcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnJlc3VtZSgpCiAgICAgICAgIHN1c3BlbmRlZFN0YXRlQ2hhbmdl
Q29uZGl0aW9uLm5vdGlmeU9uZSgpOwogfQogCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGRvbWFpbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVs
ZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CisKKyAgICBwb3N0VGFzayhbdGhpcywgZG9tYWluID0gZG9tYWluLmlz
b2xhdGVkQ29weSgpLCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29v
a2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAobV9zdGF0aXN0aWNz
U3RvcmUpCisgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+aW5zZXJ0RXhwaXJlZFN0YXRp
c3RpY0ZvclRlc3RpbmcoV1RGTW92ZShkb21haW4pLCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2No
ZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50KTsKKyAgICAgICAg
cG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAzNDVmZDI4NzdhYzllZDIwMzQ5MTQxMGUzYmUw
MWM3NjBkNmUxODdiLi5kZTJmNzYwN2E1Y2UwZjljNTY5OTEwNGExN2ExZDhiNjU4ODA3OWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yOTcs
NiArMjk3LDcgQEAgc3RydWN0IFRoaXJkUGFydHlEYXRhIHsKICAgICBzdGF0aWMgdm9pZCByZXN1
bWUoKTsKICAgICAKICAgICBib29sIGlzRXBoZW1lcmFsKCkgY29uc3QgeyByZXR1cm4gbV9pc0Vw
aGVtZXJhbCA9PSBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6
WWVzOyB9OworICAgIHZvaWQgaW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVk
dWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYsIFNo
b3VsZEluY2x1ZGVMb2NhbGhvc3QsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6Oklz
RXBoZW1lcmFsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggNWI0NmQzMzM0MGU1MTYwZWZjNDYzNDVkNmY0NWE4ZjFlOTViMWE3Ni4u
NTE2NGM2MzM1YWQxODM1OWI3OTQ1ZmU2YzlhNTU3N2UyMTFhZmE4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTEwMzQsNiArMTAz
NCwxOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjptZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZQogICAgIH0KIH0KIAordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBib29sIGhhZFVzZXJJ
bnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBi
b29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nl
c3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCisgICAgICAg
ICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5pbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVz
dGluZyhkb21haW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29r
aWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9IGVs
c2UgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKKyAgICB9Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldEFsbFN0b3JhZ2VB
Y2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApp
bmRleCA2YmQzODE4N2IxZDBhNGM1YWJlYjY5ZjA3ZDIwYjk2ZDIxZDZkNTY4Li4wNzU5NGM5Mzgx
ZTg1NDEyZTg2ZDBiZjNlMzMzNmRlZjEzOGQzNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNDAsNiArMjQwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRv
bWFpbklERXhpc3RzSW5EYXRhYmFzZShQQUw6OlNlc3Npb25JRCwgaW50IGRvbWFpbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIG1lcmdlU3RhdGlzdGljRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBU
b3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4xLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9w
RnJhbWVEb21haW4yLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwg
U2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwg
Ym9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNv
cmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGluc2Vy
dEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVk
KFBBTDo6U2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0SXNSdW5uaW5nUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rlc3QoUEFMOjpT
ZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCA1MGJhZTQzODJmY2QxYjQ5MWQ5NzQ1MjcwNzEyNjM3ZGI4YTIzMWNiLi5i
NjZlYTMxYTdhNzE5N2E3NjAyODI2MTZiYmQwNWJlMGU5YWU2OWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTk1LDYgKzk1LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aW9uYWw8U2Vjb25kcz4gc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRM
YXN0U2VlbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHJlc291cmNlRG9tYWluLCBTZWNvbmRzIHNlY29uZHMpIC0+ICgpIEFzeW5jCiAgICAgTWVy
Z2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHRvcEZyYW1lRG9tYWluMSwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVE
b21haW4yLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25k
cyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBp
c1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVpbnQ2NF90IGRhdGFSZWNvcmRzUmVt
b3ZlZCkgLT4gKCkgQXN5bmMKKyAgICBJbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291
cmNlRG9tYWluLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFs
bEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KSAtPiAoKSBBc3luYwogICAg
IFNldFByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCiAgICAgU2V0UHJl
dmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbikgLT4gKCkgQXN5bmMKICAgICBJ
c1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFcGhlbWVyYWwoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSAtPiAoYm9vbCBpc0VwaGVtZXJhbCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDJjZmQzYTFl
NDVlZWQwMjc0MzllMjNlYTA5MTVjODdlMWY3NTA1MDAuLjBhN2Q4MDY0ZGM4NDIwM2RkYzUwZjFk
MDViYzM4ODI2Yjg2NDYwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtMTY5LDYgKzE2OSwxNyBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhXS1dlYnNp
dGVEYXRhU3RvcmVSZWYgZGF0YVN0bwogI2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJv
b2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVu
dCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc01lcmdlU3RhdGlz
dGljRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5pbnNlcnRF
eHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKGhvc3Qp
LT5zdHJpbmcoKSksIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29r
aWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0g
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyAgICB9KTsKKyNlbHNlCisg
ICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisjZW5kaWYKK30KKwogdm9pZCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCog
Y29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRnVu
Y3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJz
aXRlRGF0YVN0b3JlUmVmLmgKaW5kZXggNzFiOTdmM2NiZjY5ODRkNTQyYjQ4OGQ1OGM5MDI1N2U0
NzNhNjBiOS4uMzUyNTI2MmZhNDE4NTEwODY2OTE3ZGFkYjQ1YTk4MTkzODhiMTE4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmgKQEAgLTU1LDYgKzU1LDggQEAgdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3Jl
U3RhdGlzdGljc0xhc3RTZWVuRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGUKIFdLX0VYUE9S
VCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NMYXN0U2VlbihXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCBkb3VibGUgc2Vjb25k
cywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0xhc3RTZWVuRnVu
Y3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc01lcmdlU3RhdGlzdGljRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCk7CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWVyZ2VT
dGF0aXN0aWMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYg
aG9zdCwgV0tTdHJpbmdSZWYgdG9wRnJhbWVEb21haW4xLCBXS1N0cmluZ1JlZiB0b3BGcmFtZURv
bWFpbjIsIGRvdWJsZSBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGRvdWJsZSBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1By
ZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3Zl
ZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc01lcmdlU3RhdGlz
dGljRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRl
RGF0YVN0b3JlU3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWNGdW5jdGlvbikodm9pZCogZnVuY3Rp
b25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3Rp
Y3NFeHBpcmVkU3RhdGlzdGljKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdL
U3RyaW5nUmVmIGhvc3QsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVk
Rm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljRnVuY3Rpb24g
Y29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7
CiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2UoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYg
aG9zdCwgYm9vbCB2YWx1ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc1ByZXZhbGVudFJlc291cmNlRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRl
ZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJj
ZUZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMzZm
N2M0NWYwYmRhYTUyYjVkOGYxMTAyYWEzOGI2ZTc5YTVkNjg0MC4uZDgwNmI5MjU3YzlhODZjYWRi
MDI5ZWZhMjIxMzQ2NzkxMWUxMTg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC01OTMsNiArNTkzLDEx
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6TWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKHNlc3Npb25JRCwg
cmVzb3VyY2VEb21haW4sIHRvcEZyYW1lRG9tYWluMSwgdG9wRnJhbWVEb21haW4yLCBsYXN0U2Vl
biwgaGFkVXNlckludGVyYWN0aW9uLCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBpc0dyYW5k
ZmF0aGVyZWQsIGlzUHJldmFsZW50LCBpc1ZlcnlQcmV2YWxlbnQsIGRhdGFSZWNvcmRzUmVtb3Zl
ZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgYm9vbCBo
YWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6Okluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKHNlc3Npb25JRCwgcmVz
b3VyY2VEb21haW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29r
aWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJj
ZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBlYzMwMmJiZjA4
MDc1MDFkNmFiNjgyZWRjOGUyNzI5MjFjNzBmNTU0Li44NTQ3Y2Y2M2IyODMyNjVlNDM1NWRlNzA0
MDRjMWYwMmZhN2IxZDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTM0LDYgKzEzNCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRvbWFpbklERXhpc3RzSW5EYXRhYmFzZShQQUw6OlNlc3Npb25JRCwgaW50IGRv
bWFpbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHN0YXRp
c3RpY3NEYXRhYmFzZUhhc0FsbFRhYmxlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRlc3RpbmcoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mIHRvcEZyYW1lRG9tYWluMSwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWlu
MiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2
YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBpbnNlcnRFeHBpcmVkU3Rh
dGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
LCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tp
ZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoUEFMOjpTZXNzaW9u
SUQsIE9wdGlvbmFsPFNlY29uZHM+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXAoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBjMDZmMDI2
YTM2YjZlNzI4ZmQ1M2E1ZGMzNjU1ZDlkNTJjMzQ4ZTIxLi41YTUyN2QxNmVjNmFlZjI3ZjUxODlh
MDRiMDEwYjI5YmMyYTAzODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTYyMiw3ICsxNjIyLDcg
QEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkb21haW5JREV4aXN0c0luRGF0YWJhc2UoaW50IGRv
bWFpbklELCBDb21wbGV0aW9uSGFuZGxlcjwKICAgICB9CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFVSTCYgdXJsICwgY29uc3QgVVJM
JiB0b3BGcmFtZVVybDEsIGNvbnN0IFVSTCYgdG9wRnJhbWVVcmwyLCBTZWNvbmRzIGxhc3RTZWVu
LCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vjb25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0
aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9vbCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQ
cmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRzUmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjptZXJn
ZVN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgdG9wRnJhbWVV
cmwxLCBjb25zdCBVUkwmIHRvcEZyYW1lVXJsMiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRV
c2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBp
c0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1
bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAodXJsLnByb3RvY29sSXNBYm91dCgpIHx8IHVy
bC5pc0VtcHR5KCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2MzcsNiAr
MTYzNywyMSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGlu
Zyhjb25zdCBVUkwmIHVybCAsIGNvbnN0IFVSTCYgdG9wRgogICAgIH0KIH0KIAordm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBVUkwm
IHVybCwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRD
b29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICh1cmwucHJvdG9jb2xJc0Fib3V0
KCkgfHwgdXJsLmlzRW1wdHkoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxs
YmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKKyAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYg
KGF1dG8qIHByb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAg
ICAgIHByb2Nlc3MtPmluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKG1fc2Vzc2lvbklE
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB7IHVybCB9LCBoYWRVc2VySW50ZXJhY3Rpb24s
IGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50LCBbcHJv
Y2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVm
KCldIHsgfSk7CisgICAgfQorfQorCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IGEzNWI2OTc5NzVhOWYxNWRlMTIyMjkxZDliZDhkYTNh
MjMxMjRhZDcuLmRiZGEwNDE4OGMxNGMxNjUzNDRkZDUwODQyYjZhYzk0NGUwZDM5MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKQEAgLTE3Miw2ICsxNzIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkb21haW5JREV4
aXN0c0luRGF0YWJhc2UoaW50IGRvbWFpbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKICAgICB2b2lkIHN0YXRpc3RpY3NEYXRhYmFzZUhhc0FsbFRhYmxlcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIG1lcmdlU3RhdGlzdGljRm9yVGVzdGlu
Zyhjb25zdCBVUkwmLCBjb25zdCBVUkwmIHRvcEZyYW1lVXJsMSwgY29uc3QgVVJMJiB0b3BGcmFt
ZVVybDIsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRz
IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlz
UHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1v
dmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgaW5zZXJ0RXhwaXJl
ZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3QgVVJMJiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24s
IGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZh
bGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldE5vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0
KGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcnVuZUVu
dHJpZXNEb3duVG8oc2l6ZV90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE2YzY5OWI5ZTk5
NDU3MGJhMGJiNjQ5OWJiOTc4Y2JkOGU3OGJiYzEuLmZjNDQ1MDg2MWRjM2RlNjFiYzUzYmU3Nzk1
Mjc5YmUyYTNmYzNmMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0wNS0xOCAgS2F0ZSBDaGVuZXkgIDxrYXRo
ZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IG9wZXJhdGluZyBkYXRl
cyBpbiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEyMDM0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82MzM0OTI0Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSB0ZXN0aW5nIGZ1bmN0aW9uIHRvIGluc2VydCBhbiBleHBpcmVkIHN0
YXRpc3RpYy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
OjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
c2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVy
OjpzdGF0aXN0aWNzQ2FsbERpZFNldEV4cGlyZWRTdGF0aXN0aWNDYWxsYmFjayk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0
SW52b2NhdGlvbjo6ZGlkU2V0RXhwaXJlZFN0YXRpc3RpYyk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorCiAyMDIwLTA1LTEyICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2lPUyBTaW11bGF0b3JdIFRl
c3RXZWJLaXRBUEkuX1dLRG93bmxvYWQuUmVzdW1lIGlzIGEgZmxha3kgY3Jhc2gKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCmluZGV4IGExOWRmOTVmNjQwNTViZWRiMDUyN2QwZGNhYmM3ODZmZjA3
ZDQ3OGQuLmNmYTFiNWMzOTMzNzZmOTNhMjAyZTc1MTAzNWM0MGYxYjAzOTRiMGQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzAzLDYgKzMwMyw3IEBAIGludGVyZmFjZSBUZXN0UnVu
bmVyIHsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9k
ZShET01TdHJpbmcgaG9zdE5hbWUsIG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9p
ZCBzZXRTdGF0aXN0aWNzTGFzdFNlZW4oRE9NU3RyaW5nIGhvc3ROYW1lLCBkb3VibGUgc2Vjb25k
cywgb2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NNZXJn
ZVN0YXRpc3RpYyhET01TdHJpbmcgaG9zdE5hbWUsIERPTVN0cmluZyB0b3BGcmFtZURvbWFpbjEs
IERPTVN0cmluZyB0b3BGcmFtZURvbWFpbjIsIGRvdWJsZSBsYXN0U2VlbiwgYm9vbGVhbiBoYWRV
c2VySW50ZXJhY3Rpb24sIGRvdWJsZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sZWFu
IGlzR3JhbmRmYXRoZXJlZCwgYm9vbGVhbiBpc1ByZXZhbGVudCwgYm9vbGVhbiBpc1ZlcnlQcmV2
YWxlbnQsIHVuc2lnbmVkIGxvbmcgZGF0YVJlY29yZHNSZW1vdmVkLCBvYmplY3QgY29tcGxldGlv
bkhhbmRsZXIpOworICAgIHZvaWQgc2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoRE9NU3Ry
aW5nIGhvc3ROYW1lLCBib29sZWFuIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbGVhbiBpc1NjaGVk
dWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sZWFuIGlzUHJldmFsZW50LCBvYmpl
Y3QgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKERPTVN0cmluZyBob3N0TmFtZSwgYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNvbXBsZXRp
b25IYW5kbGVyKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2Uo
RE9NU3RyaW5nIGhvc3ROYW1lLCBib29sZWFuIHZhbHVlLCBvYmplY3QgY29tcGxldGlvbkhhbmRs
ZXIpOwogICAgIGJvb2xlYW4gaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoRE9NU3RyaW5n
IGhvc3ROYW1lKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggZmU1ZDc1NzRkNzFmMzNjZWNhYWEyYzc2
YWM3MTQ0ZThlY2QzN2YyNy4uNTM2OWNlMGFjYjZmNzgwYTdjZWEyNzFjMGFmM2IxMzYwNDZlZTg1
YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTM4Niw2ICszODYsMTEgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3Ry
aW5nUmVmIG0KICAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldE1lcmdl
U3RhdGlzdGljQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRTZXRF
eHBpcmVkU3RhdGlzdGljIikpIHsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2Fs
bERpZFNldEV4cGlyZWRTdGF0aXN0aWNDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAg
fQogCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJD
YWxsRGlkU2V0UHJldmFsZW50UmVzb3VyY2UiKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0
YXRpc3RpY3NDYWxsRGlkU2V0UHJldmFsZW50UmVzb3VyY2VDYWxsYmFjaygpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5k
ZXggNGExOGMxODkzNTA3ZDNkNmQzZDRmZmJkZDFiZDA5NDE4NzU1MDViOC4uYmFmYzc2MzdhZWU2
YzY3OTdjMTFhNTdjZmFiOGY5YWMxMDZmMWZiNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC03NDEsNiArNzQxLDcg
QEAgZW51bSB7CiAgICAgU2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2Rl
Q2FsbGJhY2tJRCwKICAgICBTZXRTdGF0aXN0aWNzTGFzdFNlZW5DYWxsYmFja0lELAogICAgIFNl
dFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpY0NhbGxiYWNrSUQsCisgICAgU2V0U3RhdGlzdGljc0V4
cGlyZWRTdGF0aXN0aWNDYWxsYmFja0lELAogICAgIFNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZUNhbGxiYWNrSUQsCiAgICAgU2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZUNh
bGxiYWNrSUQsCiAgICAgU2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkNhbGxiYWNr
SUQsCkBAIC0xNTc1LDYgKzE1NzYsNDIgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2Fs
bERpZFNldE1lcmdlU3RhdGlzdGljQ2FsbGJhY2soKQogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJh
Y2soU2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljQ2FsbGJhY2tJRCk7CiB9CiAKK3ZvaWQgVGVz
dFJ1bm5lcjo6c2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoSlNTdHJpbmdSZWYgaG9zdE5h
bWUsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29v
a2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soU2V0U3RhdGlzdGljc0V4cGly
ZWRTdGF0aXN0aWNDYWxsYmFja0lELCBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBWZWN0b3I8
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOworICAgIFZlY3RvcjxXS1JldGFpblB0cjxX
S1R5cGVSZWY+PiB2YWx1ZXM7CisKKyAgICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3Jl
YXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIpKSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKGhvc3ROYW1lKSkpOworCisgICAga2V5cy5h
cHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSGFkVXNlckludGVy
YWN0aW9uIikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGhh
ZFVzZXJJbnRlcmFjdGlvbikpKTsKKworICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIklzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwiKSkpOworICAgIHZhbHVlcy5hcHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNTY2hl
ZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCkpKTsKKworICAgIGtleXMuYXBwZW5kKGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIklzUHJldmFsZW50IikpKTsKKyAg
ICB2YWx1ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGlzUHJldmFsZW50KSkpOwor
ICAgIAorICAgIFZlY3RvcjxXS1N0cmluZ1JlZj4gcmF3S2V5cyhrZXlzLnNpemUoKSk7CisgICAg
VmVjdG9yPFdLVHlwZVJlZj4gcmF3VmFsdWVzKHZhbHVlcy5zaXplKCkpOworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBrZXlzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHJhd0tleXNbaV0g
PSBrZXlzW2ldLmdldCgpOworICAgICAgICByYXdWYWx1ZXNbaV0gPSB2YWx1ZXNbaV0uZ2V0KCk7
CisgICAgfQorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NFeHBpcmVkU3Rh
dGlzdGljIikpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gbWVzc2FnZUJvZHkg
PSBhZG9wdFdLKFdLRGljdGlvbmFyeUNyZWF0ZShyYXdLZXlzLmRhdGEoKSwgcmF3VmFsdWVzLmRh
dGEoKSwgcmF3S2V5cy5zaXplKCkpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVk
QnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VC
b2R5LmdldCgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldEV4
cGlyZWRTdGF0aXN0aWNDYWxsYmFjaygpCit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhT
ZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpY0NhbGxiYWNrSUQpOworfQorCiB2b2lkIFRlc3RS
dW5uZXI6OnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShKU1N0cmluZ1JlZiBob3N0TmFt
ZSwgYm9vbCB2YWx1ZSwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjYWNo
ZVRlc3RSdW5uZXJDYWxsYmFjayhTZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VDYWxsYmFj
a0lELCBjb21wbGV0aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGNlODAxYTNiMzJiOWFiZTA3YjhlYWYy
ODZkZGNkYTRmYzhkZjQ1YTcuLjNhNTIyNGQyYTRlMTExODc4OWU4M2MxMzNlYTAzMmJhOGQwZTA3
ZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oCkBAIC00MDMsNiArNDAzLDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGlj
c0NhbGxEaWRTZXRMYXN0U2VlbkNhbGxiYWNrKCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTWVy
Z2VTdGF0aXN0aWMoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIHRvcEZyYW1lRG9t
YWluMSwgSlNTdHJpbmdSZWYgdG9wRnJhbWVEb21haW4yLCBkb3VibGUgbGFzdFNlZW4sIGJvb2wg
aGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9v
bCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50
LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRs
ZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRNZXJnZVN0YXRpc3RpY0NhbGxiYWNr
KCk7CisgICAgdm9pZCBzZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhKU1N0cmluZ1JlZiBo
b3N0TmFtZSwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxC
dXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgSlNWYWx1ZVJlZiBjb21wbGV0
aW9uSGFuZGxlcik7CisgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldEV4cGlyZWRTdGF0aXN0
aWNDYWxsYmFjaygpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKEpT
U3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5k
bGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0UHJldmFsZW50UmVzb3VyY2VDYWxs
YmFjaygpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShKU1N0
cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxl
cik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDQ3NDYw
MzIyYzZmMGNiNTE0NzU2ZmFmNTMzNTA4OTI1ZDM2MDcxNDkuLjhkMmM4ZGVlNTRhMDY0M2JiOTZi
NzMwODdkYjdjOTk4NDY1ZmUwZGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCkBAIC0zNDc3LDYgKzM0NzcsMTQgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0
U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHQK
ICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRNZXJnZVN0YXRpc3RpYygpOwogfQogCit2b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhXS1N0cmluZ1Jl
ZiBob3N0LCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1
dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KQoreworICAgIFJlc291cmNlU3Rh
dGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyh3ZWJzaXRlRGF0YVN0b3JlKCksIGhv
c3QsIGhhZFVzZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVt
b3ZhbCwgaXNQcmV2YWxlbnQsICZjb250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0
Q2FsbGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICBt
X2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRFeHBpcmVkU3RhdGlzdGljKCk7Cit9CisKIHZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1Jl
ZiBob3N0LCBib29sIHZhbHVlKQogewogICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29u
dGV4dCBjb250ZXh0KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aAppbmRleCAwNTQ2MWM0ZDkxN2RhMGRkOTM1NzNmYjM4MWU5MzUyNTI1YjFiODE1Li4xZDE0MmE2
NzRjY2ZkZTA3YjIzZGJmNzFiYzAyMDk4YTMxNjIzNTNkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCkBAIC0yMjIsNiArMjIyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFdLU3RyaW5nUmVmIGhv
c3ROYW1lKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NMYXN0U2VlbihXS1N0cmluZ1JlZiBob3N0
TmFtZSwgZG91YmxlIHNlY29uZHMpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc01lcmdlU3RhdGlz
dGljKFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluMSwgV0tTdHJp
bmdSZWYgdG9wRnJhbWVEb21haW4yLCBkb3VibGUgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVy
YWN0aW9uLCBkb3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0
aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCBpbnQgZGF0YVJl
Y29yZHNSZW1vdmVkKTsKKyAgICB2b2lkIHNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKFdL
U3RyaW5nUmVmIGhvc3QsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVk
Rm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQpOwogICAgIHZvaWQg
c2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29s
IHZhbHVlKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tT
dHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgdmFsdWUpOwogICAgIFN0cmluZyBkdW1wUmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAppbmRleCBlYTFhOWY3ZmEwOGRmZTIyYTBjZmJhYWRlZGFkMjdiN2UwMDJkMDI2Li41MDI5ZDJm
ZjNjY2IyM2NlODNjMWNhNzIxZDFkMGM1NmNmNTgyNDQ4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtODcxLDYgKzg3MSwyNSBAQCB2b2lkIFRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBt
ZXNzYWdlTmFtZQogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlz
dGljc01lcmdlU3RhdGlzdGljKGhvc3ROYW1lLCB0b3BGcmFtZURvbWFpbjEsIHRvcEZyYW1lRG9t
YWluMiwgV0tEb3VibGVHZXRWYWx1ZShsYXN0U2VlbiksIFdLQm9vbGVhbkdldFZhbHVlKGhhZFVz
ZXJJbnRlcmFjdGlvbiksIFdLRG91YmxlR2V0VmFsdWUobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlv
biksIFdLQm9vbGVhbkdldFZhbHVlKGlzR3JhbmRmYXRoZXJlZCksIFdLQm9vbGVhbkdldFZhbHVl
KGlzUHJldmFsZW50KSwgV0tCb29sZWFuR2V0VmFsdWUoaXNWZXJ5UHJldmFsZW50KSwgV0tVSW50
NjRHZXRWYWx1ZShkYXRhUmVjb3Jkc1JlbW92ZWQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IlNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0
VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CisKKyAgICAg
ICAgV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdL
RGljdGlvbmFyeVJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gaG9zdE5hbWVLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJIb3N0TmFtZSIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhhZFVzZXJJ
bnRlcmFjdGlvbktleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhh
ZFVzZXJJbnRlcmFjdGlvbiIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1v
c3RSZWNlbnRVc2VySW50ZXJhY3Rpb25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJNb3N0UmVjZW50VXNlckludGVyYWN0aW9uIikpOworICAgICAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEtl
eSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIklzU2NoZWR1bGVkRm9y
QWxsQnV0Q29va2llRGF0YVJlbW92YWwiKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBpc1ByZXZhbGVudEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIklzUHJldmFsZW50IikpOworCisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3Rh
dGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJv
ZHlEaWN0aW9uYXJ5LCBob3N0TmFtZUtleS5nZXQoKSkpOworICAgICAgICBXS0Jvb2xlYW5SZWYg
aGFkVXNlckludGVyYWN0aW9uID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25h
cnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaGFkVXNlckludGVyYWN0aW9u
S2V5LmdldCgpKSk7CisgICAgICAgIFdLQm9vbGVhblJlZiBpc1NjaGVkdWxlZEZvckFsbEJ1dENv
b2tpZURhdGFSZW1vdmFsID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlH
ZXRJdGVtRm9yS2V5KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgaXNTY2hlZHVsZWRGb3JBbGxCdXRD
b29raWVEYXRhUmVtb3ZhbEtleS5nZXQoKSkpOworICAgICAgICBXS0Jvb2xlYW5SZWYgaXNQcmV2
YWxlbnQgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JL
ZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBpc1ByZXZhbGVudEtleS5nZXQoKSkpOworCisgICAg
ICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRp
c3RpYyhob3N0TmFtZSwgV0tCb29sZWFuR2V0VmFsdWUoaGFkVXNlckludGVyYWN0aW9uKSwgV0tC
b29sZWFuR2V0VmFsdWUoaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCksIFdL
Qm9vbGVhbkdldFZhbHVlKGlzUHJldmFsZW50KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZSIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJ
RChtZXNzYWdlQm9keSkgPT0gV0tEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwpAQCAtMTk3Miw2ICsx
OTkxLDEyIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZE1lcmdlU3RhdGlzdGljKCkKICAgICBX
S1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCit2
b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRFeHBpcmVkU3RhdGlzdGljKCkKK3sKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkU2V0RXhwaXJlZFN0YXRpc3RpYyIpKTsKKyAgICBXS1Bh
Z2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
Lm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCiB2b2lk
IFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRQcmV2YWxlbnRSZXNvdXJjZSgpCiB7CiAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiQ2FsbERpZFNldFByZXZhbGVudFJlc291cmNlIikpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDI5MzQ0MGMzNjFiNjFkMjQ4YTNmZTNm
OTRjMjhhMDViMWNmNDlmZDIuLjYyMzFiMGMyMDQ0NDVhZDYwYzk1ZDNlODE3ZmIzMGY0NzZmOGUx
YTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTgzLDYgKzgz
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkU2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUoKTsKICAgICB2b2lkIGRpZFNldExhc3RTZWVuKCk7CiAgICAgdm9pZCBkaWRNZXJnZVN0YXRp
c3RpYygpOworICAgIHZvaWQgZGlkU2V0RXhwaXJlZFN0YXRpc3RpYygpOwogICAgIHZvaWQgZGlk
U2V0UHJldmFsZW50UmVzb3VyY2UoKTsKICAgICB2b2lkIGRpZFNldFZlcnlQcmV2YWxlbnRSZXNv
dXJjZSgpOwogICAgIHZvaWQgZGlkU2V0SGFzSGFkVXNlckludGVyYWN0aW9uKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MTc4OGE0NWI3NzNkMDI3MjZlNGJhZjRjZjBlODRjN2Q5NjdhNDAwYi4uYTBhNGQ3ODg0MmE3NTE0
MTU2MDdhZjVlYTdlNzYyMjlkNjJkZTM5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA1
LTE4ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAg
IFN1cHBvcnQgb3BlcmF0aW5nIGRhdGVzIGluIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTIwMzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYzMzQ5MjQyPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgbWVtb3J5IGFu
ZCBkYXRhYmFzZSBzdG9yZXMuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLWRhdGFiYXNl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC1kYXRhYmFz
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJh
dGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13
ZWJzaXRlLWRhdGEtcmVtb3ZlZC1kYXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxs
LXdlYnNpdGUtZGF0YS1yZW1vdmVkLWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLXdlYnNp
dGUtZGF0YS1yZW1vdmVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRh
LXJlbW92ZWQuaHRtbDogQWRkZWQuCisKIDIwMjAtMDUtMTIgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXVtXSzFdIHJlcXVlc3RB
bmltYXRpb25GcmFtZSBkb2Vzbid0IHdvcmsgc2luY2UgcjI0NDE4MiBpbiBBY2NlbGVyYXRlZCBD
b21wb3NpdGluZyBtb2RlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVk
LWRhdGFiYXNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtZGF0
YWJhc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1YTVlYTI0MTA4NWU0YjUxMWE4MTBmODk2
YWM0ZTM0OTlhODQ3NDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1y
ZW1vdmVkLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACisKK0JlZm9yZSBz
dGF0aXN0aWNzIHByb2Nlc3Npbmc6IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUg
c3RhdGlzdGljcyBwcm9jZXNzaW5nOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgorQmVmb3JlIHN0
YXRpc3RpY3MgcHJvY2Vzc2luZzogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgor
QmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhp
c3QuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBleGlzdC4K
KworQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgor
QWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgor
QWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBl
eGlzdHMuCitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSBk
b2VzIG5vdCBleGlzdC4KK0FmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRv
ZXMgbm90IGV4aXN0LgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92
ZWQtZGF0YWJhc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtZGF0YWJhc2Uu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jN2UzMTI4MTllMTlmOWRkZDg2OGJhNmNhNzMzNzgyNTJhMGJhYTk1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC1kYXRhYmFz
ZS5odG1sCkBAIC0wLDAgKzEsMjUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29raWUtdXRpbGl0aWVzLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KCdydW5UZXN0KCknLCAwKSI+Cis8
YnI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgorPGJyPgorPHNjcmlwdD4KKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0
ZXN0UnVubmVyLnNldFVzZUlUUERhdGFiYXNlKHRydWUpOworCisgICAgY29uc3QgaHR0cE9ubHlD
b29raWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNvbnN0IHNlcnZlclNpZGVDb29r
aWVOYW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29uc3QgY2xpZW50U2lkZUNvb2tp
ZU5hbWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdB
cnJheShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIGIgPSBi
LnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEg
OiAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVicmVha1RvT3V0cHV0KCkgeworICAg
ICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7CisgICAgICAg
IG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRP
dXRwdXQobWVzc2FnZSkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9IG1lc3NhZ2U7CisgICAg
ICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBj
aGVja0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgIGxldCB1bnNvcnRlZFRlc3RQ
YXNzZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRD
b29raWVzKCk7CisgICAgICAgIGlmICghY29va2llcy5sZW5ndGggJiYgaXNBZnRlckRlbGV0aW9u
KQorICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsgIk5vIGNvb2tpZXMgZm91bmQuIik7
CisgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICBzd2l0
Y2ggKGNvb2tpZS5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSBodHRwT25seUNvb2tpZU5h
bWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2go
KGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJv
Y2Vzc2luZzogIiArIChpc0FmdGVyRGVsZXRpb24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29v
a2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSBzZXJ2ZXJTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0
ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJC
ZWZvcmUiKSArICIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNv
b2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgY2xpZW50U2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29y
dGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAi
QmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogQ2xpZW50LXNpZGUgY29va2llIGV4
aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgbGV0IHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IHVuc29ydGVkVGVz
dFBhc3NlZE1lc3NhZ2VzLnNvcnQoc29ydFN0cmluZ0FycmF5KTsKKyAgICAgICAgZm9yIChsZXQg
dGVzdFBhc3NlZE1lc3NhZ2Ugb2Ygc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzKSB7CisgICAgICAg
ICAgICBhZGRPdXRwdXQodGVzdFBhc3NlZE1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorCisg
ICAgY29uc3QgZGJOYW1lID0gIlRlc3REYXRhYmFzZSI7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVJ
REJEYXRhU3RvcmUoY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3QgPSBpbmRleGVkREIu
b3BlbihkYk5hbWUpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3QgY3JlYXRlIGluZGV4ZWREQi4iKTsKKyAgICAg
ICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgbGV0IGRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGxldCBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCJ0ZXN0Iiwge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKKyAgICAgICAgICAgIG9ialN0
b3JlLmFkZCgidmFsdWUiKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBjb25zdCBtYXhJbnRlcnZhbHMgPSAyMDsKKworICAgIGxldCBpbnRlcnZhbENv
dW50ZXJJREI7CisgICAgbGV0IGNoZWNrSURCQ2FsbGJhY2s7CisgICAgbGV0IGNoZWNrSURCSW50
ZXJ2YWxJRDsKKyAgICBsZXQgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICBmdW5jdGlv
biBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7Cisg
ICAgICAgIGxldCByZXF1ZXN0OworICAgICAgICBpbnRlcnZhbENvdW50ZXJJREIgPSAwOworICAg
ICAgICBjaGVja0lEQkNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRl
bGV0aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4KKyAg
ICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKwor
ICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMp
IHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQp
OworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nl
c3Npbmc6IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAg
c2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJD
YWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBj
bGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAg
ICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJ
REJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3Jl
IHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBJREIuCisgICAgICAgICAg
ICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAg
ICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAg
ICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJ
REIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURC
Q2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBp
bmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFs
KGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQo
IkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2Vt
YXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRl
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRv
ZXMgbm90IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hl
Y2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQg
aW50ZXJ2YWwgY2hlY2sgYWdhaW4gYmVjYXVzZSBkZWxldGlvbiBtaWdodCBiZSBkZWxheWVkLgor
ICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDAp
OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFn
ZTsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2Nh
bFN0b3JhZ2VJbnRlcnZhbElEOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7
CisgICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNo
ZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAg
ICAgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikg
eworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAg
ICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdl
ID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNo
ZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1
ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3Rv
cmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJk
b2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAgICAg
ICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7Cisg
ICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2Fs
U3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0
aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2Nh
bFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50
ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxT
dG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFk
ZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkg
IiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSAr
ICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJh
Y2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAg
IGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAg
ICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFt
ZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9j
ZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFs
dWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAg
ICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9LCAxMDApOworICAgICAgICB9CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rpb24g
d3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICAvLyBXcml0ZSBjb29raWVz
LgorICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHkt
Y29va2llLnBocD9jb29raWVOYW1lPSIgKyBodHRwT25seUNvb2tpZU5hbWUsIHsgY3JlZGVudGlh
bHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNv
dXJjZXMvc2V0Q29va2llcy5jZ2kiLCB7IGhlYWRlcnM6IHsgIlNldC1Db29raWUiOiBzZXJ2ZXJT
aWRlQ29va2llTmFtZSArICI9MTsgcGF0aD0vOyIgfSwgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdp
biIgfSk7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNsaWVudFNpZGVDb29raWVOYW1lICsg
Ij0xIjsKKworICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UpOworCisgICAgICAgIC8vIFdyaXRl
IExvY2FsU3RvcmFnZQorICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsb2NhbFN0b3JhZ2VO
YW1lLCBsb2NhbFN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3Rz
KGZhbHNlLCBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgLy8gV3JpdGUgSW5kZXhlZERCLgor
ICAgICAgICAgICAgY3JlYXRlSURCRGF0YVN0b3JlKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7CisgICAgICAgICAgICAgICAgICAg
IHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJvY2Vz
c1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0
YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjaGVja1dlYnNpdGVEYXRhQW5kQ29u
dGludWUpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0Fu
ZERhdGFSZWNvcmRzKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tXZWJzaXRlRGF0YUFu
ZENvbnRpbnVlKCkgeworICAgICAgICBjaGVja0Nvb2tpZXModHJ1ZSk7CisgICAgICAgIGNoZWNr
TG9jYWxTdG9yYWdlRXhpc3RzKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGNoZWNr
SURCRGF0YVN0b3JlRXhpc3RzKHRydWUsIGZpbmlzaFRlc3QpOworICAgICAgICB9KTsKKyAgICB9
CisKKyAgICBjb25zdCBvcmlnaW5VbmRlclRlc3QgID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7
CisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKG9yaWdpblVuZGVyVGVzdCkpCisgICAgICAg
ICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIHN0aWxsIGhhcyB1
c2VyIGludGVyYWN0aW9uIGFmdGVyIHByb2Nlc3NpbmcuIik7CisgICAgICAgIHJlc2V0Q29va2ll
cygpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAvLyBpbnNlcnRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhkb21haW4sIGhhc0hhZFVz
ZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQ
cmV2YWxlbnQpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRXhwaXJl
ZFN0YXRpc3RpYyhvcmlnaW5VbmRlclRlc3QsIHRydWUsIHRydWUsIGZhbHNlLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29v
a2llcy1yZW1vdmVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1YTVlYTI0MTA4NWU0YjUxMWE4MTBmODk2YWM0ZTM0
OTlhODQ3NDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVk
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACisKK0JlZm9yZSBzdGF0aXN0aWNzIHByb2Nl
c3Npbmc6IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9j
ZXNzaW5nOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgorQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vz
c2luZzogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIHN0YXRpc3Rp
Y3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgZXhpc3QuCitCZWZvcmUgc3Rh
dGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIgc3RhdGlz
dGljcyBwcm9jZXNzaW5nOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgc3RhdGlzdGlj
cyBwcm9jZXNzaW5nOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQWZ0ZXIgc3RhdGlzdGlj
cyBwcm9jZXNzaW5nOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCitBZnRlciBz
dGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIG5vdCBleGlzdC4K
K0FmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0Lgor
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMt
YWxsLWJ1dC1jb29raWVzLXJlbW92ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2RlYTc4ZTYxMDJiN2Ex
MTc2MDkzYzUxZDE3YWEyNDMxY2RlOTE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0
LWNvb2tpZXMtcmVtb3ZlZC5odG1sCkBAIC0wLDAgKzEsMjUxIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii9jb29raWVzL3Jlc291cmNlcy9jb29r
aWUtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0
aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KCdydW5U
ZXN0KCknLCAwKSI+Cis8YnI+Cis8ZGl2IGlkPSJvdXRwdXQiPjwvZGl2PgorPGJyPgorPHNjcmlw
dD4KKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKworICAgIGNvbnN0IGh0dHBPbmx5Q29va2llTmFtZSA9ICJodHRwLW9ubHktY29v
a2llIjsKKyAgICBjb25zdCBzZXJ2ZXJTaWRlQ29va2llTmFtZSA9ICJzZXJ2ZXItc2lkZS1jb29r
aWUiOworICAgIGNvbnN0IGNsaWVudFNpZGVDb29raWVOYW1lID0gImNsaWVudC1zaWRlLWNvb2tp
ZSI7CisKKyAgICBmdW5jdGlvbiBzb3J0U3RyaW5nQXJyYXkoYSwgYikgeworICAgICAgICBhID0g
YS50b0xvd2VyQ2FzZSgpOworICAgICAgICBiID0gYi50b0xvd2VyQ2FzZSgpOworCisgICAgICAg
IHJldHVybiBhID4gYiA/IDEgOiBiID4gYSA/IC0xIDogMDsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBhZGRMaW5lYnJlYWtUb091dHB1dCgpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJiciIpOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVu
dCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkT3V0cHV0KG1lc3NhZ2UpIHsKKyAgICAgICAg
bGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZWxl
bWVudC5pbm5lclRleHQgPSBtZXNzYWdlOworICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxl
bWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKGlzQWZ0ZXJEZWxldGlv
bikgeworICAgICAgICBsZXQgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMgPSBbXTsKKyAgICAg
ICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMuZ2V0Q29va2llcygpOworICAgICAgICBpZiAoIWNv
b2tpZXMubGVuZ3RoICYmIGlzQWZ0ZXJEZWxldGlvbikKKyAgICAgICAgICAgIGFkZE91dHB1dCgi
RkFJTDogIiArICJObyBjb29raWVzIGZvdW5kLiIpOworICAgICAgICBmb3IgKGxldCBjb29raWUg
b2YgY29va2llcykgeworICAgICAgICAgICAgc3dpdGNoIChjb29raWUubmFtZSkgeworICAgICAg
ICAgICAgICAgIGNhc2UgaHR0cE9ubHlDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1
bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIi
IDogIkJlZm9yZSIpICsgIiBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6ICIgKyAoaXNBZnRlckRlbGV0
aW9uID8gIiAiIDogIiIpICsgIkh0dHBPbmx5IGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ugc2VydmVyU2lkZUNvb2tpZU5h
bWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2go
KGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJv
Y2Vzc2luZzogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGNsaWVudFNpZGVDb29raWVO
YW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNo
KChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzdGF0aXN0aWNzIHBy
b2Nlc3Npbmc6IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRU
ZXN0UGFzc2VkTWVzc2FnZXMgPSB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRT
dHJpbmdBcnJheSk7CisgICAgICAgIGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRl
ZFRlc3RQYXNzZWRNZXNzYWdlcykgeworICAgICAgICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRN
ZXNzYWdlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0
YWJhc2UiOworCisgICAgZnVuY3Rpb24gY3JlYXRlSURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7Cisg
ICAgICAgIGxldCByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgcmVx
dWVzdC5vbmVycm9yID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxk
bid0IGNyZWF0ZSBpbmRleGVkREIuIik7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAg
ICAgIH07CisgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQp
IHsKKyAgICAgICAgICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAg
ICBsZXQgb2JqU3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVt
ZW50OiB0cnVlfSk7CisgICAgICAgICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIik7CisgICAgICAg
ICAgICBjYWxsYmFjaygpOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgbWF4SW50ZXJ2
YWxzID0gMjA7CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVySURCOworICAgIGxldCBjaGVja0lE
QkNhbGxiYWNrOworICAgIGxldCBjaGVja0lEQkludGVydmFsSUQ7CisgICAgbGV0IHNlbWFwaG9y
ZUlEQkNoZWNrID0gZmFsc2U7CisgICAgZnVuY3Rpb24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMo
aXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdDsKKyAgICAg
ICAgaW50ZXJ2YWxDb3VudGVySURCID0gMDsKKyAgICAgICAgY2hlY2tJREJDYWxsYmFjayA9IGNh
bGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8g
Q2hlY2sgdW50aWwgdGhlcmUgaXMgYSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFs
SUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBo
b3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRl
cnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNs
ZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRk
T3V0cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBub3Qg
ZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4o
ZGJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVy
dmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVu
IGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNr
ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVl
ZGVkID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBu
ZXh0IGludGVydmFsIGNoZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBo
b3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElE
QiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3Jl
SURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJh
Y2soKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9LCAyMDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50
aWwgdGhlcmUgaXMgbm8gSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElEID0gc2V0
SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJD
aGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFw
aG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291
bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRl
cnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQo
IkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQklu
dGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0
aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluIGJlY2F1
c2UgZGVsZXRpb24gbWlnaHQgYmUgZGVsYXllZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGxldCBpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2U7CisgICAgbGV0IGNoZWNrTG9jYWxTdG9y
YWdlQ2FsbGJhY2s7CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRDsKKyAgICBj
b25zdCBsb2NhbFN0b3JhZ2VOYW1lID0gInRlc3QiOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZh
bHVlID0gInZhbHVlIjsKKyAgICBmdW5jdGlvbiBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhpc0Fm
dGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7CisgICAgICAgIGludGVydmFsQ291bnRlckxvY2FsU3Rv
cmFnZSA9IDA7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2sgPSBjYWxsYmFjazsK
KyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVu
dGlsIHRoZXJlIGlzIExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdl
SW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlm
ICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQp
OworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShs
b2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUg
c3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0g
bG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7Cisg
ICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdl
KG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChj
aGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFs
dWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0
b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAi
ZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxT
dG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDAp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMg
bm8gTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElE
ID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2
YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAg
ICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAg
ICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFn
ZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3Mg
cHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFn
ZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAg
ICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5k
ZXJUZXN0KSkgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxT
dG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2Fs
U3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBh
ZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5
ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90Iikg
KyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxi
YWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51
ZSgpIHsKKyAgICAgICAgLy8gV3JpdGUgY29va2llcy4KKyAgICAgICAgYXdhaXQgZmV0Y2goIi9j
b29raWVzL3Jlc291cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2llTmFtZT0iICsg
aHR0cE9ubHlDb29raWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAg
ICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldENvb2tpZXMuY2dpIiwgeyBo
ZWFkZXJzOiB7ICJTZXQtQ29va2llIjogc2VydmVyU2lkZUNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9
LzsiIH0sIGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBkb2N1bWVudC5j
b29raWUgPSBjbGllbnRTaWRlQ29va2llTmFtZSArICI9MSI7CisKKyAgICAgICAgY2hlY2tDb29r
aWVzKGZhbHNlKTsKKworICAgICAgICAvLyBXcml0ZSBMb2NhbFN0b3JhZ2UKKyAgICAgICAgbG9j
YWxTdG9yYWdlLnNldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUpOwor
ICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisKKyAg
ICAgICAgICAgIC8vIFdyaXRlIEluZGV4ZWREQi4KKyAgICAgICAgICAgIGNyZWF0ZUlEQkRhdGFT
dG9yZShmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlz
dHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtU
b091dHB1dCgpOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250
aW51ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkg
eworICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRz
Q2FsbGJhY2soY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKTsKKyAgICAgICAgdGVzdFJ1bm5l
ci5zdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgY2hl
Y2tDb29raWVzKHRydWUpOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyh0cnVlLCBm
dW5jdGlvbiAoKSB7CisgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyh0cnVlLCBm
aW5pc2hUZXN0KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgY29uc3Qgb3JpZ2luVW5kZXJU
ZXN0ICA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3Qo
KSB7CisgICAgICAgIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFj
dGlvbihvcmlnaW5VbmRlclRlc3QpKQorICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsg
b3JpZ2luVW5kZXJUZXN0ICsgIiBzdGlsbCBoYXMgdXNlciBpbnRlcmFjdGlvbiBhZnRlciBwcm9j
ZXNzaW5nLiIpOworICAgICAgICByZXNldENvb2tpZXMoKTsKKyAgICAgICAgc2V0RW5hYmxlRmVh
dHVyZShmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB0
ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSh0
cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgLy8gaW5zZXJ0U3RhdGlzdGljc0V4
cGlyZWRTdGF0aXN0aWMoZG9tYWluLCBoYXNIYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVk
Rm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50KQorICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMob3JpZ2luVW5kZXJUZXN0
LCB0cnVlLCB0cnVlLCBmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHdy
aXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQtZGF0YWJhc2UtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQtZGF0YWJhc2UtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE3MzA5NmM4MmUzYWYxODE1MjNiNzk4NjQ3NjZjZjRjNTUxMGU2
NTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEtcmVtb3ZlZC1kYXRh
YmFzZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCitCZWZvcmUgc3RhdGlzdGljcyBw
cm9jZXNzaW5nOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIHN0YXRpc3RpY3Mg
cHJvY2Vzc2luZzogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0JlZm9yZSBzdGF0aXN0aWNzIHBy
b2Nlc3Npbmc6IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBzdGF0
aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIGV4aXN0LgorQmVmb3Jl
IHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKK0FmdGVyIHN0
YXRpc3RpY3MgcHJvY2Vzc2luZzogTm8gY29va2llcyBmb3VuZC4KK0FmdGVyIHN0YXRpc3RpY3Mg
cHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgbm90IGV4aXN0LgorQWZ0ZXIgc3Rh
dGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuCisKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJh
dGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQtZGF0YWJhc2UuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMt
YWxsLXdlYnNpdGUtZGF0YS1yZW1vdmVkLWRhdGFiYXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU3ZjU2
ZjgyMWM2ZTRhZDZkZjA4OTRmMTZjYjQzYWNkMDllYWI0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0
ZXMtYWxsLXdlYnNpdGUtZGF0YS1yZW1vdmVkLWRhdGFiYXNlLmh0bWwKQEAgLTAsMCArMSwyNTIg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nv
b2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxicj4KKzxkaXYgaWQ9Im91dHB1dCI+
PC9kaXY+Cis8YnI+Cis8c2NyaXB0PgorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0
YWJhc2UodHJ1ZSk7CisKKyAgICBjb25zdCBodHRwT25seUNvb2tpZU5hbWUgPSAiaHR0cC1vbmx5
LWNvb2tpZSI7CisgICAgY29uc3Qgc2VydmVyU2lkZUNvb2tpZU5hbWUgPSAic2VydmVyLXNpZGUt
Y29va2llIjsKKyAgICBjb25zdCBjbGllbnRTaWRlQ29va2llTmFtZSA9ICJjbGllbnQtc2lkZS1j
b29raWUiOworCisgICAgZnVuY3Rpb24gc29ydFN0cmluZ0FycmF5KGEsIGIpIHsKKyAgICAgICAg
YSA9IGEudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgYiA9IGIudG9Mb3dlckNhc2UoKTsKKworICAg
ICAgICByZXR1cm4gYSA+IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7CisgICAgfQorCisgICAgZnVu
Y3Rpb24gYWRkTGluZWJyZWFrVG9PdXRwdXQoKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVs
ZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZE91dHB1dChtZXNzYWdlKSB7CisgICAg
ICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
IGVsZW1lbnQuaW5uZXJUZXh0ID0gbWVzc2FnZTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxk
KGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llcyhpc0FmdGVyRGVs
ZXRpb24pIHsKKyAgICAgICAgbGV0IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gW107Cisg
ICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgaWYg
KCFjb29raWVzLmxlbmd0aCAmJiBpc0FmdGVyRGVsZXRpb24pCisgICAgICAgIHVuc29ydGVkVGVz
dFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3Jl
IikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAg
ICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29v
a2llLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGh0dHBPbmx5Q29va2llTmFtZToKKyAg
ICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRl
ckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc3RhdGlzdGljcyBwcm9jZXNzaW5n
OiAiICsgKGlzQWZ0ZXJEZWxldGlvbiA/ICIgIiA6ICIiKSArICJIdHRwT25seSBjb29raWUgZXhp
c3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IHNlcnZlclNpZGVDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQ
YXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIp
ICsgIiBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4
aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBjbGllbnRTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0
UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUi
KSArICIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLiIp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBsZXQgc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gdW5zb3J0ZWRUZXN0UGFzc2Vk
TWVzc2FnZXMuc29ydChzb3J0U3RyaW5nQXJyYXkpOworICAgICAgICBmb3IgKGxldCB0ZXN0UGFz
c2VkTWVzc2FnZSBvZiBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMpIHsKKyAgICAgICAgICAgIGFk
ZE91dHB1dCh0ZXN0UGFzc2VkTWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25z
dCBkYk5hbWUgPSAiVGVzdERhdGFiYXNlIjsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZUlEQkRhdGFT
dG9yZShjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRi
TmFtZSk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBjcmVhdGUgaW5kZXhlZERCLiIpOworICAgICAgICAgICAg
ZmluaXNoVGVzdCgpOworICAgICAgICB9OworICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRl
ZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBsZXQgZGIgPSBldmVudC50YXJnZXQu
cmVzdWx0OworICAgICAgICAgICAgbGV0IG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUo
InRlc3QiLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOworICAgICAgICAgICAgb2JqU3RvcmUuYWRk
KCJ2YWx1ZSIpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGNvbnN0IG1heEludGVydmFscyA9IDIwOworCisgICAgbGV0IGludGVydmFsQ291bnRlcklE
QjsKKyAgICBsZXQgY2hlY2tJREJDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tJREJJbnRlcnZhbElE
OworICAgIGxldCBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgIGZ1bmN0aW9uIGNoZWNr
SURCRGF0YVN0b3JlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAg
bGV0IHJlcXVlc3Q7CisgICAgICAgIGludGVydmFsQ291bnRlcklEQiA9IDA7CisgICAgICAgIGNo
ZWNrSURCQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24p
IHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAg
ICAgY2hlY2tJREJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAg
ICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAg
ICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzog
SURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBzZW1hcGhv
cmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNr
KCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
b25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91
dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmlu
aXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fpbi4KKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVy
dmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlz
dGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIG5vIElEQi4KKyAgICAgICAgICAgIGNoZWNr
SURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAg
ICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRy
eSBkb2VzIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWRE
Qi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJ
REJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRu
J3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJ
REJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOwor
ICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFy
SW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBub3Qg
ZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0
aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZh
bCBjaGVjayBhZ2FpbiBiZWNhdXNlIGRlbGV0aW9uIG1pZ2h0IGJlIGRlbGF5ZWQuCisgICAgICAg
ICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlOworICAg
IGxldCBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFn
ZUludGVydmFsSUQ7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlTmFtZSA9ICJ0ZXN0IjsKKyAgICBj
b25zdCBsb2NhbFN0b3JhZ2VWYWx1ZSA9ICJ2YWx1ZSI7CisgICAgZnVuY3Rpb24gY2hlY2tMb2Nh
bFN0b3JhZ2VFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAgICAgICBpbnRl
cnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPSAwOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNh
bGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAg
ICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAg
ICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4
SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2Nh
bFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9j
YWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVu
dHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90
IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNh
bGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlz
dGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAg
ICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdl
TmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0YXRpc3RpY3Mg
cHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFn
ZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAg
ICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENo
ZWNrIHVudGlsIHRoZXJlIGlzIG5vIExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9j
YWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMp
IHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUlu
dGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2Uu
Z2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0
KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZh
bHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlz
dC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9j
YWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJ
bnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAg
ICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6
IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJk
b2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hl
Y2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0sIDEwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVdl
YnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIC8vIFdyaXRlIGNvb2tpZXMuCisgICAg
ICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUu
cGhwP2Nvb2tpZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFsczogInNh
bWUtb3JpZ2luIiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9z
ZXRDb29raWVzLmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZlclNpZGVDb29r
aWVOYW1lICsgIj0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsK
KyAgICAgICAgZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUgKyAiPTEiOwor
CisgICAgICAgIGNoZWNrQ29va2llcyhmYWxzZSk7CisKKyAgICAgICAgLy8gV3JpdGUgTG9jYWxT
dG9yYWdlCisgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUsIGxv
Y2FsU3RvcmFnZVZhbHVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoZmFsc2Us
IGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAvLyBXcml0ZSBJbmRleGVkREIuCisgICAgICAg
ICAgICBjcmVhdGVJREJEYXRhU3RvcmUoZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGNo
ZWNrSURCRGF0YVN0b3JlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vz
c1dlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9jZXNzV2Vic2l0
ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGlj
c0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSk7
CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJl
Y29yZHMoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1dlYnNpdGVEYXRhQW5kQ29udGlu
dWUoKSB7CisgICAgICAgIGNoZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VFeGlzdHModHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hlY2tJREJEYXRh
U3RvcmVFeGlzdHModHJ1ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAg
IGNvbnN0IG9yaWdpblVuZGVyVGVzdCAgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBm
dW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3Rp
Y3NIYXNIYWRVc2VySW50ZXJhY3Rpb24ob3JpZ2luVW5kZXJUZXN0KSkKKyAgICAgICAgICAgIGFk
ZE91dHB1dCgiRkFJTDogIiArIG9yaWdpblVuZGVyVGVzdCArICIgc3RpbGwgaGFzIHVzZXIgaW50
ZXJhY3Rpb24gYWZ0ZXIgcHJvY2Vzc2luZy4iKTsKKyAgICAgICAgcmVzZXRDb29raWVzKCk7Cisg
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24g
KCkgeworICAgICAgICAgICAgLy8gaW5zZXJ0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoZG9t
YWluLCBoYXNIYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0
YVJlbW92YWwsIGlzUHJldmFsZW50KQorICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0
aWNzRXhwaXJlZFN0YXRpc3RpYyhvcmlnaW5VbmRlclRlc3QsIHRydWUsIGZhbHNlLCB0cnVlLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNz
UHJldmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0KSkKKyAgICAgICAgICAgICAgICAgICAg
YWRkT3V0cHV0KCJGQUlMOiAiICsgb3JpZ2luVW5kZXJUZXN0ICsgIiBkaWQgbm90IGdldCBpbnNl
cnRlZCBpbnRvIGRhdGFiYXNlLiIpOworICAgICAgICAgICAgICAgIHdyaXRlV2Vic2l0ZURhdGFB
bmRDb250aW51ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRh
LXJlbW92ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3MzA5NmM4MmUzYWYxODE1MjNiNzk4NjQ3NjZjZjRjNTUx
MGU2NTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEtcmVtb3ZlZC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNz
aW5nOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLgorQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vz
c2luZzogSHR0cE9ubHkgY29va2llIGV4aXN0cy4KK0JlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Np
bmc6IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBzdGF0aXN0aWNz
IHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSBkb2VzIGV4aXN0LgorQmVmb3JlIHN0YXRp
c3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuCisKK0FmdGVyIHN0YXRpc3Rp
Y3MgcHJvY2Vzc2luZzogTm8gY29va2llcyBmb3VuZC4KK0FmdGVyIHN0YXRpc3RpY3MgcHJvY2Vz
c2luZzogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgbm90IGV4aXN0LgorQWZ0ZXIgc3RhdGlzdGlj
cyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuCisKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1k
YXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLXdlYnNpdGUtZGF0
YS1yZW1vdmVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc3MTk2OTJlMjhjMGFlOTNjYjg3MzY0ZjgyNjlh
NWZkMzM3N2ZjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLXdlYnNpdGUtZGF0YS1yZW1v
dmVkLmh0bWwKQEAgLTAsMCArMSwyNTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+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
JiYgaXNBZnRlckRlbGV0aW9uKQorICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5w
dXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzdGF0aXN0aWNz
IHByb2Nlc3Npbmc6IE5vIGNvb2tpZXMgZm91bmQuIik7CisgICAgICAgIGZvciAobGV0IGNvb2tp
ZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNvb2tpZS5uYW1lKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBodHRwT25seUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAg
IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRl
ciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogIiArIChpc0FmdGVyRGVs
ZXRpb24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBzZXJ2ZXJTaWRlQ29va2ll
TmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVz
aCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc3RhdGlzdGljcyBw
cm9jZXNzaW5nOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgY2xpZW50U2lkZUNvb2tp
ZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1
c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3Mg
cHJvY2Vzc2luZzogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGV0IHNvcnRl
ZFRlc3RQYXNzZWRNZXNzYWdlcyA9IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnNvcnQoc29y
dFN0cmluZ0FycmF5KTsKKyAgICAgICAgZm9yIChsZXQgdGVzdFBhc3NlZE1lc3NhZ2Ugb2Ygc29y
dGVkVGVzdFBhc3NlZE1lc3NhZ2VzKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQodGVzdFBhc3Nl
ZE1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgZGJOYW1lID0gIlRlc3RE
YXRhYmFzZSI7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVJREJEYXRhU3RvcmUoY2FsbGJhY2spIHsK
KyAgICAgICAgbGV0IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCgiQ291
bGRuJ3QgY3JlYXRlIGluZGV4ZWREQi4iKTsKKyAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAgICAgbGV0IGRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAg
ICAgIGxldCBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCJ0ZXN0Iiwge2F1dG9JbmNy
ZW1lbnQ6IHRydWV9KTsKKyAgICAgICAgICAgIG9ialN0b3JlLmFkZCgidmFsdWUiKTsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBtYXhJbnRl
cnZhbHMgPSAyMDsKKworICAgIGxldCBpbnRlcnZhbENvdW50ZXJJREI7CisgICAgbGV0IGNoZWNr
SURCQ2FsbGJhY2s7CisgICAgbGV0IGNoZWNrSURCSW50ZXJ2YWxJRDsKKyAgICBsZXQgc2VtYXBo
b3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICBmdW5jdGlvbiBjaGVja0lEQkRhdGFTdG9yZUV4aXN0
cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7CisgICAgICAgIGxldCByZXF1ZXN0OworICAg
ICAgICBpbnRlcnZhbENvdW50ZXJJREIgPSAwOworICAgICAgICBjaGVja0lEQkNhbGxiYWNrID0g
Y2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAgICAv
LyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2
YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1h
cGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2lu
dGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBh
ZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIG5v
dCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3Bl
bihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50
ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9w
ZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hl
Y2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVu
ZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhl
IG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1h
cGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzog
SURCIGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhv
cmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxs
YmFjaygpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1
bnRpbCB0aGVyZSBpcyBubyBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBz
ZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbWFwaG9yZUlE
QkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgc2Vt
YXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxD
b3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhcklu
dGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1
dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsK
KyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOwor
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERC
LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5j
dGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURC
SW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0
YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4gYmVj
YXVzZSBkZWxldGlvbiBtaWdodCBiZSBkZWxheWVkLgorICAgICAgICAgICAgICAgICAgICAgICAg
c2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDApOworICAgICAgICB9CisgICAgfQorCisg
ICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZTsKKyAgICBsZXQgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEOworICAg
IGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7CisgICAgY29uc3QgbG9jYWxTdG9yYWdl
VmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlz
QWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgaW50ZXJ2YWxDb3VudGVyTG9jYWxT
dG9yYWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNr
OworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sg
dW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3Jh
Z2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
aWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAg
ICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJ
RCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVt
KGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9y
ZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09
PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsK
KyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3Jh
Z2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFs
KGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2
YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAg
ICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2Fs
U3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6
ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2Nh
bFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEw
MCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBp
cyBubyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFs
SUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRl
cnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAg
ICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAg
ICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9y
YWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGlj
cyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9y
YWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAg
ICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5V
bmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2Nh
bFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9j
YWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50
cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3Qi
KSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2Fs
bGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAg
ICB9CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRp
bnVlKCkgeworICAgICAgICAvLyBXcml0ZSBjb29raWVzLgorICAgICAgICBhd2FpdCBmZXRjaCgi
L2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHktY29va2llLnBocD9jb29raWVOYW1lPSIg
KyBodHRwT25seUNvb2tpZU5hbWUsIHsgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7Cisg
ICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0Q29va2llcy5jZ2kiLCB7
IGhlYWRlcnM6IHsgIlNldC1Db29raWUiOiBzZXJ2ZXJTaWRlQ29va2llTmFtZSArICI9MTsgcGF0
aD0vOyIgfSwgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGRvY3VtZW50
LmNvb2tpZSA9IGNsaWVudFNpZGVDb29raWVOYW1lICsgIj0xIjsKKworICAgICAgICBjaGVja0Nv
b2tpZXMoZmFsc2UpOworCisgICAgICAgIC8vIFdyaXRlIExvY2FsU3RvcmFnZQorICAgICAgICBs
b2NhbFN0b3JhZ2Uuc2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lLCBsb2NhbFN0b3JhZ2VWYWx1ZSk7
CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKwor
ICAgICAgICAgICAgLy8gV3JpdGUgSW5kZXhlZERCLgorICAgICAgICAgICAgY3JlYXRlSURCRGF0
YVN0b3JlKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4
aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZExpbmVicmVh
a1RvT3V0cHV0KCk7CisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENv
bnRpbnVlKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUo
KSB7CisgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29y
ZHNDYWxsYmFjayhjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUpOworICAgICAgICB0ZXN0UnVu
bmVyLnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gY2hlY2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICBj
aGVja0Nvb2tpZXModHJ1ZSk7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3RzKHRydWUs
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKHRydWUs
IGZpbmlzaFRlc3QpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBjb25zdCBvcmlnaW5VbmRl
clRlc3QgID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgZnVuY3Rpb24gZmluaXNoVGVz
dCgpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzSGFkVXNlckludGVy
YWN0aW9uKG9yaWdpblVuZGVyVGVzdCkpCisgICAgICAgICAgICBhZGRPdXRwdXQoIkZBSUw6ICIg
KyBvcmlnaW5VbmRlclRlc3QgKyAiIHN0aWxsIGhhcyB1c2VyIGludGVyYWN0aW9uIGFmdGVyIHBy
b2Nlc3NpbmcuIik7CisgICAgICAgIHJlc2V0Q29va2llcygpOworICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgewor
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IC8vIGluc2VydFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKGRvbWFpbiwgaGFzSGFkVXNlcklu
dGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZh
bGVudCkKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0
aWMob3JpZ2luVW5kZXJUZXN0LCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNl
KG9yaWdpblVuZGVyVGVzdCkpCisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiRkFJTDog
IiArIG9yaWdpblVuZGVyVGVzdCArICIgZGlkIG5vdCBnZXQgaW5zZXJ0ZWQgaW50byBkYXRhYmFz
ZS4iKTsKKyAgICAgICAgICAgICAgICB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399870</attachid>
            <date>2020-05-20 12:19:59 -0700</date>
            <delta_ts>2020-05-20 15:14:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212034-20200520121958.patch</filename>
            <type>text/plain</type>
            <size>121043</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRjM2NmMDhkODljYjU0ZjNh
NTM1NGUyZTEwZDgwMWMzYjBjY2JkOTcuLjJhZWViZDI5NjM4MzdiN2Q3MWJmM2E3YzcyMGY4MzFh
YTZmNTE3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTQgQEAKKzIwMjAtMDUtMjAgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBvcGVy
YXRpbmcgZGF0ZXMgaW4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjAzNAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNjMzNDkyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtZGF0YWJhc2UuaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJh
dGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJz
aXRlLWRhdGEtcmVtb3ZlZC1kYXRhYmFzZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3Rz
L3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEt
cmVtb3ZlZC5odG1sCisKKyAgICAgICAgUGF0Y2ggdG8gc3VwcG9ydCBPcGVyYXRpbmcgRGF0ZXMg
aW4gdGhlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLgorICAgICAgICBNb3Zl
cyBmdW5jdGlvbnMgb3V0IG9mIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBub3cgdGhhdCBl
YWNoIHN0b3JlCisgICAgICAgIG5lZWRzIGl0cyBvd24gaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgQWRkcyBhIG5ldyBmdW5jdGlvbiBmb3IgdGVzdGluZyB3aGljaCBpbnNlcnRzIGFuIGV4cGly
ZWQgc3RhdGlzdGljCisgICAgICAgIGFuZCBtYWtlcyBzdXJlIHRoZSBwcm9wZXIgYmVoYXZpb3Ig
b2NjdXJzIGRlcGVuZGluZyBvbiBhZGRpdGlvbmFsCisgICAgICAgIHBhcmFtZXRlcnMuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlVGFibGVRdWVyaWVzKToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNoZWNrRm9yTWlzc2luZ1RhYmxlc0lu
U2NoZW1hKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmNyZWF0ZVVuaXF1ZUluZGljZXMpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y3JlYXRlU2NoZW1hKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldExlYXN0UmVjZW50T3Bl
cmF0aW5nRGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjptZXJnZU9wZXJhdGluZ0RhdGVzKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0
ZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0
aXN0aWNGb3JUZXN0aW5nKToKKyAgICAgICAgTWlncmF0ZWQgT3BlcmF0aW5nIERhdGVzIGZ1bmN0
aW9ucyBmcm9tIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBhbmQgaW1wbGVtZW50ZWQKKyAg
ICAgICAgdGhlbSB1c2luZyBTUUxpdGUgaW5zdGVhZCBvZiBhIHZlY3Rvci4gRnVuY3Rpb25hbGl0
eSBpcworICAgICAgICBpZGVudGljYWwgdG8gdGhlIG9yaWdpbmFsIGluLW1lbW9yeSBpbXBsZW1l
bnRhdGlvbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjptZXJnZU9wZXJhdGluZ0RhdGVzKToKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJh
dGluZ0RhdGVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omluc2VydEV4cGlyZWRT
dGF0aXN0aWNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgorICAgICAgICBNaWdyYXRlZCBP
cGVyYXRpbmcgRGF0ZXMgZnVuY3Rpb25zIGZyb20gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
CisgICAgICAgIG5vdyB0aGF0IHRoZSBkYXRhYmFzZSBzdG9yZSBkb2VzIG5vdCB1c2UgdGhlbS4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpwb3B1bGF0ZU1lbW9yeVN0b3JlRnJvbURpc2sp
OgorICAgICAgICBTcGVsbGluZyBlcnJvci4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0
ZUNvb2tpZUJsb2NraW5nRm9yRG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c3RhdGlzdGljc0VwaXJhdGlvblRpbWUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdlT3Bl
cmF0aW5nRGF0ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNT
dGF0aXN0aWNzRXhwaXJlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKFdl
YktpdDo6T3BlcmF0aW5nRGF0ZTo6eWVhciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok9wZXJh
dGluZ0RhdGU6Om1vbnRoIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6T3BlcmF0aW5nRGF0ZTo6
bW9udGhEYXkgY29uc3QpOgorICAgICAgICBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIGJlIHB1Ymxp
YyBub3cgdGhhdCB0aGV5IGFyZSBuZWVkZWQgb3V0c2lkZQorICAgICAgICBvZiB0aGlzIGZpbGUg
YWZ0ZXIgbWlncmF0aW5nIE9wZXJhdGluZ0RhdGVzIGZ1bmN0aW9ucy4KKworICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBhcmFtZXRlcnMgY29uc3QpOgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om9wZXJhdGluZ0RhdGVz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjbGVhck9wZXJhdGluZ0RhdGVzKTogRGVsZXRlZC4KKyAgICAgICAgTW92ZWQgT3Bl
cmF0aW5nRGF0ZXMgZnVuY3Rpb25zIHRvIHRoZSBtZW1vcnkgc3RvcmUuIE1vdmVkCisgICAgICAg
IG9wZXJhdGluZ0RhdGVzV2luZG93IGNvbnN0ZXhwciB2YXJpYWJsZXMgdG8gdGhlIGhlYWRlciBm
aWxlIHNvIHRoYXQKKyAgICAgICAgdGhlIGRhdGFiYXNlIGFuZCBtZW1vcnkgc3RvcmVzIGNhbiBi
b3RoIHVzZSB0aGVtLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5n
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omluc2VydEV4cGlyZWRTdGF0
aXN0aWNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwOgor
ICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0Zv
clRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9y
VGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6Omluc2VydEV4cGly
ZWRTdGF0aXN0aWNGb3JUZXN0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICBGdW5jdGlvbiB0byBhZGQgZXhwaXJlZCBzdGF0
aXN0aWMgdG8gdGhlIElUUCBzdG9yZS4KKwogMjAyMC0wNS0yMCAgS2F0ZSBDaGVuZXkgIDxrYXRo
ZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjYxODkyKSBb
IE1hYyBEZWJ1ZyBdIDQgQVBJIHRlc3RzIGZhaWxpbmcgcmVsYXRlZCB0byBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmNwcAppbmRleCAxNDdkNmU5MzRjODc2ZDc5ZTNmZjg3OTZhNDgxNjQ4ZWRiNjYx
OGY3Li4zNmM3ZWY5YzVhNzZlMGI1NDE0OWY0MjUwOTY4N2M3NTI3NTc2Y2M5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAg
LTIyMiw2ICsyMjIsMTAgQEAgY29uc3RleHByIGF1dG8gY3JlYXRlU3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNGcm9tID0gIkNSRUFURSBUQUJMRSBTdWJyZXNvdXJjZVUKICAgICAiRk9SRUlHTiBL
RVkoc3VicmVzb3VyY2VEb21haW5JRCkgUkVGRVJFTkNFUyBPYnNlcnZlZERvbWFpbnMoZG9tYWlu
SUQpIE9OIERFTEVURSBDQVNDQURFLCAiCiAgICAgIkZPUkVJR04gS0VZKGZyb21Eb21haW5JRCkg
UkVGRVJFTkNFUyBPYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFKTsi
X3M7CiAKK2NvbnN0ZXhwciBhdXRvIGNyZWF0ZU9wZXJhdGluZ0RhdGVzID0gIkNSRUFURSBUQUJM
RSBPcGVyYXRpbmdEYXRlcyAoIgorICAgICJ5ZWFyIElOVEVHRVIgTk9UIE5VTEwsIG1vbnRoIElO
VEVHRVIgTk9UIE5VTEwsIG1vbnRoRGF5IElOVEVHRVIgTk9UIE5VTEwpOyJfczsKKworCiAvLyBD
UkVBVEUgVU5JUVVFIElOREVYIFF1ZXJpZXMKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUlu
ZGV4U3RvcmFnZUFjY2Vzc1VuZGVyVG9wRnJhbWVEb21haW5zID0gIkNSRUFURSBVTklRVUUgSU5E
RVggSUYgTk9UIEVYSVNUUyBTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnNfZG9tYWlu
SURfdG9wTGV2ZWxEb21haW5JRCBvbiBTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFpbnMg
KCBkb21haW5JRCwgdG9wTGV2ZWxEb21haW5JRCApOyJfczsKIGNvbnN0ZXhwciBhdXRvIGNyZWF0
ZVVuaXF1ZUluZGV4VG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUbyA9ICJDUkVBVEUgVU5JUVVFIElO
REVYIElGIE5PVCBFWElTVFMgVG9wRnJhbWVVbmlxdWVSZWRpcmVjdHNUb19zb3VyY2VEb21haW5J
RF90b0RvbWFpbklEIG9uIFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RzVG8gKCBzb3VyY2VEb21haW5J
RCwgdG9Eb21haW5JRCApOyJfczsKQEAgLTIzMyw2ICsyMzcsNyBAQCBjb25zdGV4cHIgYXV0byBj
cmVhdGVVbmlxdWVJbmRleFN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMgPSAiQ1JFQVRFIFVO
SVFVRSBJTgogY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVEb21haW5zID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBTdWJy
ZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zX3N1YnJlc291cmNlRG9tYWluSURfdG9wRnJhbWVE
b21haW5JRCBvbiBTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zICggc3VicmVzb3VyY2VE
b21haW5JRCwgdG9wRnJhbWVEb21haW5JRCApOyJfczsKIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVu
aXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyA9ICJDUkVBVEUgVU5JUVVFIElO
REVYIElGIE5PVCBFWElTVFMgU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb19zdWJyZXNvdXJj
ZURvbWFpbklEX3RvRG9tYWluSUQgb24gU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyAoIHN1
YnJlc291cmNlRG9tYWluSUQsIHRvRG9tYWluSUQgKTsiX3M7CiBjb25zdGV4cHIgYXV0byBjcmVh
dGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSA9ICJDUkVBVEUgVU5J
UVVFIElOREVYIElGIE5PVCBFWElTVFMgU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tX3N1
YnJlc291cmNlRG9tYWluSURfZnJvbURvbWFpbklEIG9uIFN1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZURvbWFpbnMgKCBzdWJyZXNvdXJjZURvbWFpbklELCBmcm9tRG9tYWluSUQgKTsiX3M7Citjb25z
dGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleE9wZXJhdGluZ0RhdGVzID0gIkNSRUFURSBVTklR
VUUgSU5ERVggSUYgTk9UIEVYSVNUUyBPcGVyYXRpbmdEYXRlc195ZWFyX21vbnRoX21vbnRoRGF5
IG9uIE9wZXJhdGluZ0RhdGVzICggeWVhciwgbW9udGgsIG1vbnRoRGF5ICk7Il9zOwogCiBjb25z
dCB1bnNpZ25lZCBtaW5pbXVtUHJldmFsZW50UmVzb3VyY2VzRm9yVGVsZW1ldHJ5ID0gMzsKIApA
QCAtMjY1LDcgKzI3MCw4IEBAIHN0YXRpYyBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYg
Y3JlYXRlVGFibGVRdWVyaWVzKCkKICAgICAgICAgeyAiU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9t
YWlucyJfcywgY3JlYXRlU3ViZnJhbWVVbmRlclRvcEZyYW1lRG9tYWluc30sCiAgICAgICAgIHsg
IlN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMiX3MsIGNyZWF0ZVN1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZURvbWFpbnN9LAogICAgICAgICB7ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c1RvIl9zLCBjcmVhdGVTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvfSwKLSAgICAgICAgeyAi
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tIl9zLCBjcmVhdGVTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c0Zyb219CisgICAgICAgIHsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJv
bSJfcywgY3JlYXRlU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tfSwKKyAgICAgICAgeyAi
T3BlcmF0aW5nRGF0ZXMiX3MsIGNyZWF0ZU9wZXJhdGluZ0RhdGVzfQogICAgIH0pOwogICAgIAog
ICAgIHJldHVybiBjcmVhdGVUYWJsZVF1ZXJpZXM7CkBAIC0yOTIsNiArMjk4LDggQEAgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlKFdlYlJlc28KICAgICAgICAgaWYgKHdlYWtUaGlzKQogICAgICAgICAgICAgd2Vh
a1RoaXMtPmNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIH0pOworCisgICAgaW5j
bHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKTsKIH0KIAogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6On5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZSgpCkBAIC01NDAsNyArNTQ4LDggQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Y3JlYXRlVW5pcXVlSW5kaWNlcygpCiAgICAgICAgIHx8ICFtX2RhdGFiYXNl
LmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVuaXF1ZUluZGV4U3ViZnJhbWVVbmRlclRvcEZyYW1lRG9t
YWlucykKICAgICAgICAgfHwgIW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVl
SW5kZXhTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zKQogICAgICAgICB8fCAhbV9kYXRh
YmFzZS5leGVjdXRlQ29tbWFuZChjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzVG8pCi0gICAgICAgIHx8ICFtX2RhdGFiYXNlLmV4ZWN1dGVDb21tYW5kKGNyZWF0ZVVu
aXF1ZUluZGV4U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9tYWlucykpIHsKKyAgICAgICAgfHwg
IW1fZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVEb21haW5zKQorICAgICAgICB8fCAhbV9kYXRhYmFzZS5leGVjdXRlQ29tbWFu
ZChjcmVhdGVVbmlxdWVJbmRleE9wZXJhdGluZ0RhdGVzKSkgewogICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6Y3JlYXRlVW5pcXVlSW5kaWNlcyBmYWlsZWQgdG8gZXhlY3V0ZSwgZXJyb3IgbWVzc2FnZTog
JSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNjExLDYgKzYyMCwxMSBAQCBib29sIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjcmVhdGVTY2hlbWEoKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAorICAgIGlmICghbV9kYXRhYmFzZS5leGVjdXRl
Q29tbWFuZChjcmVhdGVPcGVyYXRpbmdEYXRlcykpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3Vs
ZCBub3QgY3JlYXRlIE9wZXJhdGluZ0RhdGVzIHRhYmxlIGluIGRhdGFiYXNlICglaSkgLSAlcyIs
IG1fZGF0YWJhc2UubGFzdEVycm9yKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAogICAgIGlmICghY3JlYXRlVW5pcXVlSW5k
aWNlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI0MTEsNyArMjQyNSw3IEBAIFZl
Y3Rvcjx1bnNpZ25lZD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmZpbmRF
eHBpcmVkVXNlckludGVyYWN0aW9uCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAK
ICAgICBWZWN0b3I8dW5zaWduZWQ+IHJlc3VsdHM7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gZXhw
aXJhdGlvbkRhdGVUaW1lID0gc3RhdGlzdGljc0VwaXJhdGlvblRpbWUoKTsKKyAgICBPcHRpb25h
bDxTZWNvbmRzPiBleHBpcmF0aW9uRGF0ZVRpbWUgPSBzdGF0aXN0aWNzRXhwaXJhdGlvblRpbWUo
KTsKICAgICBpZiAoIWV4cGlyYXRpb25EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdHM7
CiAgICAgCkBAIC0yOTI1LDYgKzI5MzksMTY3IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmRvbWFpbklERXhpc3RzSW5EYXRhYmFzZShpbnQgZG9tYWluSUQpCiAg
ICAgcmV0dXJuIG1fbGlua0RlY29yYXRpb25FeGlzdHNTdGF0ZW1lbnQtPmdldENvbHVtbkludCgw
KSB8fCBtX3NjcmlwdExvYWRFeGlzdHNTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSB8fCBtX3N1
YkZyYW1lRXhpc3RzU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCkgfHwgbV9zdWJSZXNvdXJjZUV4
aXN0c1N0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApIHx8IG1fdW5pcXVlUmVkaXJlY3RFeGlzdHNT
dGF0ZW1lbnQtPmdldENvbHVtbkludCgwKSB8fCBtX29ic2VydmVkRG9tYWluc0V4aXN0c1N0YXRl
bWVudC0+Z2V0Q29sdW1uSW50KDApOwogfQogCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVyYXRpbmdEYXRlc1BhcmFtZXRlcnMoKQoreworICAgIFNR
TGl0ZVN0YXRlbWVudCBjb3VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50KG1fZGF0YWJhc2UsICJT
RUxFQ1QgQ09VTlQoKikgRlJPTSBPcGVyYXRpbmdEYXRlczsiX3MpOworICAgIFNRTGl0ZVN0YXRl
bWVudCBnZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCAiU0VM
RUNUICogRlJPTSBPcGVyYXRpbmdEYXRlcyBPUkRFUiBCWSB5ZWFyIERFU0MsIG1vbnRoIERFU0Ms
IG1vbnRoRGF5IERFU0MgTElNSVQgMTsiX3MpOworICAgIFNRTGl0ZVN0YXRlbWVudCBnZXRMZWFz
dFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgIlNFTEVDVCAqIEZST00g
T3BlcmF0aW5nRGF0ZXMgT1JERVIgQlkgeWVhciwgbW9udGgsIG1vbnRoRGF5IExJTUlUIDE7Il9z
KTsKKworICAgIGlmIChjb3VudE9wZXJhdGluZ0RhdGVzU3RhdGVtZW50LnByZXBhcmUoKSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgfHwgY291bnRPcGVyYXRpbmdEYXRlc1N0YXRlbWVudC5zdGVwKCkg
IT0gU1FMSVRFX1JPVykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKG1f
c2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dXBk
YXRlT3BlcmF0aW5nRGF0ZXNQYXJhbWV0ZXJzIGNvdW50T3BlcmF0aW5nRGF0ZXNTdGF0ZW1lbnQg
ZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1zIiwgdGhpcywgbV9kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9vcGVyYXRpbmdEYXRlc1NpemUgPSBjb3VudE9w
ZXJhdGluZ0RhdGVzU3RhdGVtZW50LmdldENvbHVtbkludCgwKTsKKworICAgIGlmIChnZXRNb3N0
UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LCisgICAg
ICAgIHx8IGdldE1vc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LnN0ZXAoKSAhPSBTUUxJ
VEVfUk9XKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9u
SUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp1cGRhdGVPcGVy
YXRpbmdEYXRlc1BhcmFtZXRlcnMgZ2V0Rmlyc3RPcGVyYXRpbmdEYXRlU3RhdGVtZW50IGZhaWxl
ZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1fbW9zdFJlY2VudE9wZXJhdGluZ0RhdGUgPSBPcGVyYXRp
bmdEYXRlKGdldE1vc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmdldENvbHVtbkludCgw
KSwgZ2V0TW9zdFJlY2VudE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuZ2V0Q29sdW1uSW50KDEpLCBn
ZXRNb3N0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5nZXRDb2x1bW5JbnQoMikpOworCisg
ICAgaWYgKGdldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5wcmVwYXJlKCkgIT0g
U1FMSVRFX09LCisgICAgICAgIHx8IGdldExlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVu
dC5zdGVwKCkgIT0gU1FMSVRFX1JPVykgeworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKG1fc2Vzc2lvbklELCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VT
dG9yZTo6dXBkYXRlT3BlcmF0aW5nRGF0ZXNQYXJhbWV0ZXJzIGdldExlYXN0UmVjZW50T3BlcmF0
aW5nRGF0ZVN0YXRlbWVudCBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRl
fXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2xlYXN0UmVjZW50
T3BlcmF0aW5nRGF0ZSA9IE9wZXJhdGluZ0RhdGUoZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRl
U3RhdGVtZW50LmdldENvbHVtbkludCgwKSwgZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3Rh
dGVtZW50LmdldENvbHVtbkludCgxKSwgZ2V0TGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVt
ZW50LmdldENvbHVtbkludCgyKSk7Cit9CisKK09wdGlvbmFsPFNlY29uZHM+IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzdGF0aXN0aWNzRXhwaXJhdGlvblRpbWUoKSBjb25z
dAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgaWYgKHRoaXMtPnBh
cmFtZXRlcnMoKS50aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKQorICAgICAgICByZXR1cm4gV2Fs
bFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkgLSB0aGlzLT5wYXJhbWV0ZXJzKCkudGlt
ZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbi52YWx1ZSgpOworCisgICAgaWYgKG1fb3BlcmF0aW5nRGF0
ZXNTaXplID49IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZykKKyAgICAgICAgcmV0dXJuIG1fbGVh
c3RSZWNlbnRPcGVyYXRpbmdEYXRlLnNlY29uZHNTaW5jZUVwb2NoKCk7CisKKyAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpCit7CisgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgCisgICAgYXV0byB0b2RheSA9IE9wZXJhdGlu
Z0RhdGU6OnRvZGF5KCk7CisgICAgaWYgKG1fb3BlcmF0aW5nRGF0ZXNTaXplID4gMCkgeworICAg
ICAgICBpZiAodG9kYXkgPD0gbV9tb3N0UmVjZW50T3BlcmF0aW5nRGF0ZSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgcm93c1RvUHJ1bmUgPSBtX29wZXJhdGluZ0RhdGVz
U2l6ZSAtIG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZyArIDE7CisgICAgaWYgKHJvd3NUb1BydW5l
ID4gMCkgeworICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgZGVsZXRlTGVhc3RSZWNlbnRPcGVyYXRp
bmdEYXRlU3RhdGVtZW50KG1fZGF0YWJhc2UsICJERUxFVEUgRlJPTSBPcGVyYXRpbmdEYXRlcyBP
UkRFUiBCWSB5ZWFyLCBtb250aCwgbW9udGhEYXkgTElNSVQgPzsiX3MpOworICAgICAgICBpZiAo
ZGVsZXRlTGVhc3RSZWNlbnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgICAgIHx8IGRlbGV0ZUxlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRl
bWVudC5iaW5kSW50KDEsIHJvd3NUb1BydW5lKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8
IGRlbGV0ZUxlYXN0UmVjZW50T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRF
X0RPTkUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNz
aW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbmNsdWRl
VG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSBkZWxldGVMZWFzdFJlY2VudE9wZXJhdGlu
Z0RhdGVTdGF0ZW1lbnQgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICV7cHJpdmF0ZX1z
IiwgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBTUUxpdGVTdGF0ZW1l
bnQgaW5zZXJ0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCAiSU5TRVJUIE9SIElH
Tk9SRSBJTlRPIE9wZXJhdGluZ0RhdGVzICh5ZWFyLCBtb250aCwgbW9udGhEYXkpIFNFTEVDVCA/
LCA/LCA/OyJfcyk7CisgICAgaWYgKGluc2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQucHJlcGFy
ZSgpICE9IFNRTElURV9PSworICAgICAgICB8fCBpbnNlcnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50
LmJpbmRJbnQoMSwgdG9kYXkueWVhcigpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgaW5zZXJ0
T3BlcmF0aW5nRGF0ZVN0YXRlbWVudC5iaW5kSW50KDIsIHRvZGF5Lm1vbnRoKCkpICE9IFNRTElU
RV9PSworICAgICAgICB8fCBpbnNlcnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmJpbmRJbnQoMywg
dG9kYXkubW9udGhEYXkoKSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IGluc2VydE9wZXJhdGlu
Z0RhdGVTdGF0ZW1lbnQuc3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2Fy
eSBpbnNlcnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNz
YWdlOiAle3ByaXZhdGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICB1cGRhdGVPcGVyYXRpbmdE
YXRlc1BhcmFtZXRlcnMoKTsKK30KKworYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQoV2FsbFRpbWUgbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvblRpbWUsIE9wZXJhdGluZ0RhdGVzV2luZG93IG9wZXJhdGluZ0RhdGVzV2luZG93KSBj
b25zdAoreworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgdW5zaWduZWQg
b3BlcmF0aW5nRGF0ZXNXaW5kb3dJbkRheXMgPSAwOworICAgIHN3aXRjaCAob3BlcmF0aW5nRGF0
ZXNXaW5kb3cpIHsKKyAgICBjYXNlIE9wZXJhdGluZ0RhdGVzV2luZG93OjpMb25nOgorICAgICAg
ICBvcGVyYXRpbmdEYXRlc1dpbmRvd0luRGF5cyA9IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZzsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6U2hvcnQ6Cisg
ICAgICAgIG9wZXJhdGluZ0RhdGVzV2luZG93SW5EYXlzID0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dT
aG9ydDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6Rm9y
TGl2ZU9uVGVzdGluZzoKKyAgICAgICAgcmV0dXJuIFdhbGxUaW1lOjpub3coKSA+IG1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb25UaW1lICsgb3BlcmF0aW5nVGltZVdpbmRvd0ZvckxpdmVPblRlc3Rp
bmc7CisgICAgY2FzZSBPcGVyYXRpbmdEYXRlc1dpbmRvdzo6Rm9yUmVwcm9UZXN0aW5nOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAobV9vcGVyYXRpbmdEYXRlc1NpemUg
Pj0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dJbkRheXMpIHsKKyAgICAgICAgaWYgKE9wZXJhdGluZ0Rh
dGU6OmZyb21XYWxsVGltZShtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkgPCBtX2xlYXN0
UmVjZW50T3BlcmF0aW5nRGF0ZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIC8vIElmIHdlIGRvbid0IG1lZXQgdGhlIHJlYWwgY3JpdGVyaWEgZm9yIGFuIGV4cGlyZWQg
c3RhdGlzdGljLCBjaGVjayB0aGUgdXNlciBzZXR0aW5nIGZvciBhIHRpZ2h0ZXIgcmVzdHJpY3Rp
b24gKG1haW5seSBmb3IgdGVzdGluZykuCisgICAgaWYgKHRoaXMtPnBhcmFtZXRlcnMoKS50aW1l
VG9MaXZlVXNlckludGVyYWN0aW9uKSB7CisgICAgICAgIGlmIChXYWxsVGltZTo6bm93KCkgPiBt
b3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSArIHRoaXMtPnBhcmFtZXRlcnMoKS50aW1lVG9M
aXZlVXNlckludGVyYWN0aW9uLnZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluLCBib29sIGhhc1VzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1Nj
aGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50KQorewor
ICAgIC8vIFBvcHVsYXRlIHRoZSBPcGVyYXRpbmcgRGF0ZXMgdGFibGUgd2l0aCBlbm91Z2ggZGF5
cyB0byByZXF1aXJlIHBydW5pbmcuCisgICAgZG91YmxlIGRheXNBZ29JblNlY29uZHMgPSAwOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPD0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nOyBp
KyspIHsKKyAgICAgICAgZG91YmxlIGRheXNUb1N1YnRyYWN0ID0gU2Vjb25kczo6ZnJvbUhvdXJz
KDI0ICogaSkudmFsdWUoKTsKKyAgICAgICAgZGF5c0Fnb0luU2Vjb25kcyA9IFdhbGxUaW1lOjpu
b3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkgLSBkYXlzVG9TdWJ0cmFjdDsKKyAgICAg
ICAgYXV0byBkYXRlVG9JbnNlcnQgPSBPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUoV2FsbFRp
bWU6OmZyb21SYXdTZWNvbmRzKGRheXNBZ29JblNlY29uZHMpKTsKKworICAgICAgICBTUUxpdGVT
dGF0ZW1lbnQgaW5zZXJ0T3BlcmF0aW5nRGF0ZVN0YXRlbWVudChtX2RhdGFiYXNlLCAiSU5TRVJU
IE9SIElHTk9SRSBJTlRPIE9wZXJhdGluZ0RhdGVzICh5ZWFyLCBtb250aCwgbW9udGhEYXkpIFNF
TEVDVCA/LCA/LCA/OyJfcyk7CisgICAgICAgIGlmIChpbnNlcnRPcGVyYXRpbmdEYXRlU3RhdGVt
ZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IGluc2VydE9wZXJhdGlu
Z0RhdGVTdGF0ZW1lbnQuYmluZEludCgxLCBkYXRlVG9JbnNlcnQueWVhcigpKSAhPSBTUUxJVEVf
T0sKKyAgICAgICAgICAgIHx8IGluc2VydE9wZXJhdGluZ0RhdGVTdGF0ZW1lbnQuYmluZEludCgy
LCBkYXRlVG9JbnNlcnQubW9udGgoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBpbnNl
cnRPcGVyYXRpbmdEYXRlU3RhdGVtZW50LmJpbmRJbnQoMywgZGF0ZVRvSW5zZXJ0Lm1vbnRoRGF5
KCkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgaW5zZXJ0T3BlcmF0aW5nRGF0ZVN0YXRl
bWVudC5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyBpbnNlcnRPcGVy
YXRpbmdEYXRlU3RhdGVtZW50IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAle3ByaXZh
dGV9cyIsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgaW5zZXJ0T3BlcmF0aW5nRGF0
ZVN0YXRlbWVudC5yZXNldCgpOworICAgIH0KKworICAgIHVwZGF0ZU9wZXJhdGluZ0RhdGVzUGFy
YW1ldGVycygpOworCisgICAgLy8gTWFrZSBzdXJlIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25U
aW1lIGlzIHRoZSBsZWFzdCByZWNlbnQgb2YgYWxsIGVudHJpZXMuCisgICAgZGF5c0Fnb0luU2Vj
b25kcyAtPSBTZWNvbmRzOjpmcm9tSG91cnMoMjQpLnZhbHVlKCk7CisgICAgYXV0byBzY29wZWRJ
bnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2lu
c2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LCBpbnNlcnRPYnNlcnZlZERvbWFpblF1ZXJ5LCAi
aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmciX3MpOworICAgIGlmIChzY29wZWRJbnNl
cnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC0+YmluZFRleHQoUmVnaXN0cmFibGVEb21haW5JbmRl
eCwgZG9tYWluLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkSW5zZXJ0
T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQtPmJpbmREb3VibGUoTGFzdFNlZW5JbmRleCwgZGF5c0Fn
b0luU2Vjb25kcykgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZEluc2VydE9ic2VydmVk
RG9tYWluU3RhdGVtZW50LT5iaW5kSW50KEhhZFVzZXJJbnRlcmFjdGlvbkluZGV4LCBoYXNVc2Vy
SW50ZXJhY3Rpb24pICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRJbnNlcnRPYnNlcnZl
ZERvbWFpblN0YXRlbWVudC0+YmluZERvdWJsZShNb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGlt
ZUluZGV4LCBkYXlzQWdvSW5TZWNvbmRzKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVk
SW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQtPmJpbmRJbnQoR3JhbmRmYXRoZXJlZEluZGV4
LCBmYWxzZSkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8IHNjb3BlZEluc2VydE9ic2VydmVkRG9t
YWluU3RhdGVtZW50LT5iaW5kSW50KElzUHJldmFsZW50SW5kZXgsIGlzUHJldmFsZW50KSAhPSBT
UUxJVEVfT0sKKyAgICAgICAgfHwgc2NvcGVkSW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQt
PmJpbmRJbnQoSXNWZXJ5UHJldmFsZW50SW5kZXgsIGZhbHNlKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgfHwgc2NvcGVkSW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1lbnQtPmJpbmRJbnQoRGF0YVJl
Y29yZHNSZW1vdmVkSW5kZXgsIDApICE9IFNRTElURV9PSworICAgICAgICB8fCBzY29wZWRJbnNl
cnRPYnNlcnZlZERvbWFpblN0YXRlbWVudC0+YmluZEludChUaW1lc0FjY2Vzc2VkQXNGaXJzdFBh
cnR5RHVlVG9Vc2VySW50ZXJhY3Rpb25JbmRleCwgMCkgIT0gU1FMSVRFX09LCisgICAgICAgIHx8
IHNjb3BlZEluc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LT5iaW5kSW50KFRpbWVzQWNjZXNz
ZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUElJbmRleCwgMCkgIT0gU1FMSVRFX09L
CisgICAgICAgIHx8IHNjb3BlZEluc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50LT5iaW5kSW50
KElzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWxJbmRleCwgaXNTY2hlZHVsZWRG
b3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQobV9zZXNzaW9uSUQsICIlcCAtIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjppbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyBm
YWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc2NvcGVkSW5zZXJ0T2JzZXJ2ZWREb21haW5T
dGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcgZmFpbGVkIHRvIGNvbW1pdCwgZXJyb3Ig
bWVzc2FnZTogJXtwcml2YXRlfXMiLCB0aGlzLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXggNTg0MDY2MDMyZmEyMmU5
NzIzNmI1OGVjZDJjMWYyNmUzYjllZjM2MS4uYWI3ZmNjMDc2ZjM2N2VmYTBlOTNkYzBiNTExZGEx
YjU2YzU2ZDFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmgKQEAgLTE0Myw4ICsxNDMsMTUgQEAgcHVibGljOgogICAgIHZvaWQgcmVt
b3ZlRGF0YUZvckRvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIG92ZXJyaWRlOwogICAg
IGJvb2wgZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKGludCk7CiAgICAgT3B0aW9uYWw8VmVjdG9y
PFN0cmluZz4+IGNoZWNrRm9yTWlzc2luZ1RhYmxlc0luU2NoZW1hKCk7CisgICAgdm9pZCBpbnNl
cnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJv
b2wgaGFzVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0
YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgorICAgIHZv
aWQgaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGNsZWFyT3BlcmF0aW5nRGF0ZXMoKSBvdmVycmlkZSB7IH0KKyAgICBib29sIGhhc1N0
YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBP
cGVyYXRpbmdEYXRlc1dpbmRvdykgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8U2Vjb25k
cz4gc3RhdGlzdGljc0V4cGlyYXRpb25UaW1lKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVPcGVy
YXRpbmdEYXRlc1BhcmFtZXRlcnMoKTsKKwogICAgIHZvaWQgb3BlbklUUERhdGFiYXNlKCk7CiAg
ICAgdm9pZCBhZGRNaXNzaW5nVGFibGVzSWZOZWNlc3NhcnkoKTsKICAgICB2b2lkIGVuYWJsZUZv
cmVpZ25LZXlzKCk7CkBAIC0yNzcsNiArMjg0LDkgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ+IG1fcmVtb3ZlQWxsRGF0YVN0
YXRlbWVudDsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBib29sIG1faXNO
ZXdSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VGaWxlIHsgZmFsc2UgfTsKKyAgICB1bnNp
Z25lZCBtX29wZXJhdGluZ0RhdGVzU2l6ZSB7IDAgfTsKKyAgICBPcGVyYXRpbmdEYXRlIG1fbGVh
c3RSZWNlbnRPcGVyYXRpbmdEYXRlOworICAgIE9wZXJhdGluZ0RhdGUgbV9tb3N0UmVjZW50T3Bl
cmF0aW5nRGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCBhZjUwMDQxZDIz
N2I0MGM3NmQ1YjRkMWM3NjA4ODk1M2EzYWY4ZjU2Li45NjZlYjljZWU4YThkZDYyOWVlZDhlOTZj
NTQ0ZTJhOTQzMTgwZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlLmNwcApAQCAtODAsNiArODAsOCBAQCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZShXZWJSZXNv
dXJjZQogICAgICAgICBpZiAod2Vha1RoaXMpCiAgICAgICAgICAgICB3ZWFrVGhpcy0+Y2FsY3Vs
YXRlQW5kU3VibWl0VGVsZW1ldHJ5KCk7CiAgICAgfSk7CisKKyAgICBpbmNsdWRlVG9kYXlBc09w
ZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOwogfQogCiBib29sIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZTo6aXNFbXB0eSgpIGNvbnN0CkBAIC0xMDgxLDYgKzEwODMsMTA5IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpzZXRWZXJ5UHJldmFsZW50UmVz
b3VyY2UoY29uc3QgUmVnaXN0cmFiCiAgICAgc2V0UHJldmFsZW50UmVzb3VyY2UocmVzb3VyY2VT
dGF0aXN0aWMsIFJlc291cmNlTG9hZFByZXZhbGVuY2U6OlZlcnlIaWdoKTsKIH0KIAorVmVjdG9y
PE9wZXJhdGluZ0RhdGU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6bWVyZ2VP
cGVyYXRpbmdEYXRlcyhjb25zdCBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4mIGV4aXN0aW5nRGF0ZXMs
IFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYmIG5ld0RhdGVzKQoreworICAgIGlmIChleGlzdGluZ0Rh
dGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFdURk1vdmUobmV3RGF0ZXMpOworCisgICAg
VmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1lcmdlZERhdGVzKGV4aXN0aW5nRGF0ZXMuc2l6ZSgpICsg
bmV3RGF0ZXMuc2l6ZSgpKTsKKworICAgIC8vIE1lcmdlIHRoZSB0d28gc29ydGVkIHZlY3RvcnMg
b2YgZGF0ZXMuCisgICAgc3RkOjptZXJnZShleGlzdGluZ0RhdGVzLmJlZ2luKCksIGV4aXN0aW5n
RGF0ZXMuZW5kKCksIG5ld0RhdGVzLmJlZ2luKCksIG5ld0RhdGVzLmVuZCgpLCBtZXJnZWREYXRl
cy5iZWdpbigpKTsKKyAgICAvLyBSZW1vdmUgZHVwbGljYXRlIGRhdGVzLgorICAgIHJlbW92ZVJl
cGVhdGVkRWxlbWVudHMobWVyZ2VkRGF0ZXMpOworCisgICAgLy8gRHJvcCBvbGQgZGF0ZXMgdW50
aWwgdGhlIFZlY3RvciBzaXplIHJlYWNoZXMgb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nLgorICAg
IHdoaWxlIChtZXJnZWREYXRlcy5zaXplKCkgPiBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcpCisg
ICAgICAgIG1lcmdlZERhdGVzLnJlbW92ZSgwKTsKKworICAgIHJldHVybiBtZXJnZWREYXRlczsK
K30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Om1lcmdlT3BlcmF0
aW5nRGF0ZXMoVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiYgbmV3RGF0ZXMpCit7CisgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBtX29wZXJhdGluZ0RhdGVzID0gbWVyZ2VPcGVy
YXRpbmdEYXRlcyhtX29wZXJhdGluZ0RhdGVzLCBXVEZNb3ZlKG5ld0RhdGVzKSk7Cit9CisKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjppbmNsdWRlVG9kYXlBc09wZXJh
dGluZ0RhdGVJZk5lY2Vzc2FyeSgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7
CisKKyAgICBhdXRvIHRvZGF5ID0gT3BlcmF0aW5nRGF0ZTo6dG9kYXkoKTsKKyAgICBpZiAoIW1f
b3BlcmF0aW5nRGF0ZXMuaXNFbXB0eSgpICYmIHRvZGF5IDw9IG1fb3BlcmF0aW5nRGF0ZXMubGFz
dCgpKQorICAgICAgICByZXR1cm47CisKKyAgICB3aGlsZSAobV9vcGVyYXRpbmdEYXRlcy5zaXpl
KCkgPj0gb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25nKQorICAgICAgICBtX29wZXJhdGluZ0RhdGVz
LnJlbW92ZSgwKTsKKworICAgIG1fb3BlcmF0aW5nRGF0ZXMuYXBwZW5kKHRvZGF5KTsKK30KKwor
Ym9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBp
cmVkKFdhbGxUaW1lIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRpbmdEYXRl
c1dpbmRvdyBvcGVyYXRpbmdEYXRlc1dpbmRvdykgY29uc3QKK3sKKyAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKKworICAgIHVuc2lnbmVkIG9wZXJhdGluZ0RhdGVzV2luZG93SW5EYXlz
ID0gMDsKKyAgICBzd2l0Y2ggKG9wZXJhdGluZ0RhdGVzV2luZG93KSB7CisgICAgY2FzZSBPcGVy
YXRpbmdEYXRlc1dpbmRvdzo6TG9uZzoKKyAgICAgICAgb3BlcmF0aW5nRGF0ZXNXaW5kb3dJbkRh
eXMgPSBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
T3BlcmF0aW5nRGF0ZXNXaW5kb3c6OlNob3J0OgorICAgICAgICBvcGVyYXRpbmdEYXRlc1dpbmRv
d0luRGF5cyA9IG9wZXJhdGluZ0RhdGVzV2luZG93U2hvcnQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgT3BlcmF0aW5nRGF0ZXNXaW5kb3c6OkZvckxpdmVPblRlc3Rpbmc6CisgICAgICAgIHJl
dHVybiBXYWxsVGltZTo6bm93KCkgPiBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSArIG9w
ZXJhdGluZ1RpbWVXaW5kb3dGb3JMaXZlT25UZXN0aW5nOworICAgIGNhc2UgT3BlcmF0aW5nRGF0
ZXNXaW5kb3c6OkZvclJlcHJvVGVzdGluZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgaWYgKG1fb3BlcmF0aW5nRGF0ZXMuc2l6ZSgpID49IG9wZXJhdGluZ0RhdGVzV2luZG93
SW5EYXlzKSB7CisgICAgICAgIGlmIChPcGVyYXRpbmdEYXRlOjpmcm9tV2FsbFRpbWUobW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvblRpbWUpIDwgbV9vcGVyYXRpbmdEYXRlcy5maXJzdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gSWYgd2UgZG9uJ3QgbWVldCB0
aGUgcmVhbCBjcml0ZXJpYSBmb3IgYW4gZXhwaXJlZCBzdGF0aXN0aWMsIGNoZWNrIHRoZSB1c2Vy
IHNldHRpbmcgZm9yIGEgdGlnaHRlciByZXN0cmljdGlvbiAobWFpbmx5IGZvciB0ZXN0aW5nKS4K
KyAgICBpZiAodGhpcy0+cGFyYW1ldGVycygpLnRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24pIHsK
KyAgICAgICAgaWYgKFdhbGxUaW1lOjpub3coKSA+IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25U
aW1lICsgdGhpcy0+cGFyYW1ldGVycygpLnRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24udmFsdWUo
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0YXRpc3Rp
Y3NFeHBpcmVkKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGlj
LCBPcGVyYXRpbmdEYXRlc1dpbmRvdyBvcGVyYXRpbmdEYXRlc1dpbmRvdykgY29uc3QKK3sKKyAg
ICByZXR1cm4gaGFzU3RhdGlzdGljc0V4cGlyZWQocmVzb3VyY2VTdGF0aXN0aWMubW9zdFJlY2Vu
dFVzZXJJbnRlcmFjdGlvblRpbWUsIG9wZXJhdGluZ0RhdGVzV2luZG93KTsKK30KKwordm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNG
b3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIGJvb2wgaGFzVXNlcklu
dGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJv
b2wgaXNQcmV2YWxlbnQpCit7CisgICAgLy8gUG9wdWxhdGUgdGhlIE9wZXJhdGluZyBEYXRlcyB0
YWJsZSB3aXRoIGVub3VnaCBkYXlzIHRvIHJlcXVpcmUgcHJ1bmluZy4KKyAgICBkb3VibGUgZGF5
c0Fnb0luU2Vjb25kcyA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8PSBvcGVyYXRp
bmdEYXRlc1dpbmRvd0xvbmc7IGkrKykgeworICAgICAgICBkb3VibGUgZGF5c1RvU3VidHJhY3Qg
PSBTZWNvbmRzOjpmcm9tSG91cnMoMjQgKiBpKS52YWx1ZSgpOworICAgICAgICBkYXlzQWdvSW5T
ZWNvbmRzID0gV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSAtIGRh
eXNUb1N1YnRyYWN0OworICAgICAgICBhdXRvIGRhdGVUb0luc2VydCA9IE9wZXJhdGluZ0RhdGU6
OmZyb21XYWxsVGltZShXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZGF5c0Fnb0luU2Vjb25kcykp
OworICAgICAgICBtX29wZXJhdGluZ0RhdGVzLmFwcGVuZChPcGVyYXRpbmdEYXRlKGRhdGVUb0lu
c2VydC55ZWFyKCksIGRhdGVUb0luc2VydC5tb250aCgpLCBkYXRlVG9JbnNlcnQubW9udGhEYXko
KSkpOworICAgIH0KKworICAgIC8vIE1ha2Ugc3VyZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9u
VGltZSBpcyB0aGUgbGVhc3QgcmVjZW50IG9mIGFsbCBlbnRyaWVzLgorICAgIGRheXNBZ29JblNl
Y29uZHMgLT0gU2Vjb25kczo6ZnJvbUhvdXJzKDI0KS52YWx1ZSgpOworCisgICAgYXV0byBzdGF0
aXN0aWMgPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGRvbWFpbik7CisgICAgc3RhdGlzdGljLmxh
c3RTZWVuID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKGRheXNBZ29JblNlY29uZHMpOworICAg
IHN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rpb24gPSBoYXNVc2VySW50ZXJhY3Rpb247CisgICAg
c3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lID0gV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKGRheXNBZ29JblNlY29uZHMpOworICAgIHN0YXRpc3RpYy5pc1ByZXZhbGVudFJl
c291cmNlID0gaXNQcmV2YWxlbnQ7CisgICAgc3RhdGlzdGljLmdvdExpbmtEZWNvcmF0aW9uRnJv
bVByZXZhbGVudFJlc291cmNlID0gaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3Zh
bDsKKworICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuc3VyZShzdGF0aXN0aWMucmVnaXN0
cmFibGVEb21haW4sIFsmc3RhdGlzdGljXSB7CisgICAgICAgIHJldHVybiBXVEZNb3ZlKHN0YXRp
c3RpYyk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCAy
NDZlNzY3MWVhMTg1MDUyOTU3ZTMyMjBmN2JmMTFjNWUyNGIwOGI3Li41ZWIzNzMyMjM3NmU4ZGVm
NTRkNzU5Y2E1ZGU3ZWVmNzNjNzMwZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCkBAIC0xMTMsOCArMTEzLDE3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc2V0TGFzdFNlZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBTZWNvbmRzKSBv
dmVycmlkZTsKICAgICB2b2lkIHJlbW92ZURhdGFGb3JEb21haW4oY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBoYXNVc2VySW50ZXJhY3Rpb24sIGJv
b2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVu
dCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CisgICAgdm9pZCBpbmNsdWRlVG9kYXlBc09wZXJhdGlu
Z0RhdGVJZk5lY2Vzc2FyeSgpIG92ZXJyaWRlOworICAgIGNvbnN0IFZlY3RvcjxPcGVyYXRpbmdE
YXRlPiYgb3BlcmF0aW5nRGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX29wZXJhdGluZ0RhdGVzOyB9
CisgICAgdm9pZCBjbGVhck9wZXJhdGluZ0RhdGVzKCkgb3ZlcnJpZGUgeyBtX29wZXJhdGluZ0Rh
dGVzLmNsZWFyKCk7IH0KKyAgICB2b2lkIG1lcmdlT3BlcmF0aW5nRGF0ZXMoVmVjdG9yPE9wZXJh
dGluZ0RhdGU+JiYpOworICAgIGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQoY29uc3QgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYsIE9wZXJhdGluZ0RhdGVzV2luZG93KSBjb25zdDsKKyAgICBzdGF0
aWMgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1lcmdlT3BlcmF0aW5nRGF0ZXMoY29uc3QgVmVjdG9y
PE9wZXJhdGluZ0RhdGU+JiBleGlzdGluZ0RhdGVzLCBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4mJiBu
ZXdEYXRlcyk7CisgICAgYm9vbCBoYXNTdGF0aXN0aWNzRXhwaXJlZChXYWxsVGltZSBtb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uVGltZSwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cpIGNvbnN0IG92ZXJy
aWRlOworCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tBbmRLZWVwQ29va2llcyhjb25zdCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tBbmRQ
dXJnZUNvb2tpZXMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHN0YXRpYyBX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gaGFzVXNlckdyYW50ZWRTdG9yYWdl
QWNjZXNzVGhyb3VnaFByb21wdChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mKTsKQEAgLTEzNyw2ICsxNDYsNyBAQCBwcml2YXRlOgogCiAgICAg
V2Vha1B0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+IG1fcGVyc2lz
dGVudFN0b3JhZ2U7CiAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CisgICAgVmVjdG9yPE9wZXJhdGlu
Z0RhdGU+IG1fb3BlcmF0aW5nRGF0ZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZS5jcHAKaW5kZXggZGQ5NjM4ZmY4MTdmYjc2MTA2ODc2NDU0ODAxYzM0M2EzYzY5OGQ2ZC4u
NzNkYWU3MDZiZTkzYTRiYzkzZTBhZWI0ZGYzOWYzN2FmYTU3M2QwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAK
QEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZTo6cG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKENvbXBsZQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgLy8gRGVidWcgbW9kZSBoYXMgYSBwcmVwb3VsYXRlZCBtZW1vcnkg
c3RvcmUuCisgICAgLy8gRGVidWcgbW9kZSBoYXMgYSBwcmVwb3B1bGF0ZWQgbWVtb3J5IHN0b3Jl
LgogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9tZW1vcnlTdG9yZS5pc0VtcHR5KCkgfHwgbV9t
ZW1vcnlTdG9yZS5pc0RlYnVnTW9kZUVuYWJsZWQoKSwgIlRoaXMgaXMgdGhlIGluaXRpYWwgaW1w
b3J0IHNvIHRoZSBzdG9yZSBzaG91bGQgYmUgZW1wdHkiKTsKICAgICBtX21lbW9yeVN0b3JlLm1l
cmdlV2l0aERhdGFGcm9tRGVjb2RlcigqZGVjb2Rlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggZTM0YzVlOTYzY2QzY2JkMDVkYWYyNjZiMzkz
Yzc5Mjg5YjEzZWQxMC4uNDc5ZjUxNjE4NTlhODg2MzhhOGQyOGU1MDhjOTVkMThmNTE0ODhlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTUyLDkg
KzUyLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
Y29uc3RleHByIFNlY29uZHMgbWluaW11bVN0YXRpc3RpY3NQcm9jZXNzaW5nSW50ZXJ2YWwgeyA1
X3MgfTsKLWNvbnN0ZXhwciB1bnNpZ25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvd0xvbmcgeyAzMCB9
OwotY29uc3RleHByIHVuc2lnbmVkIG9wZXJhdGluZ0RhdGVzV2luZG93U2hvcnQgeyA3IH07Ci1j
b25zdGV4cHIgU2Vjb25kcyBvcGVyYXRpbmdUaW1lV2luZG93Rm9yTGl2ZU9uVGVzdGluZyB7IDFf
aCB9OwogCiBzdGF0aWMgU3RyaW5nIGRvbWFpbnNUb1N0cmluZyhjb25zdCBWZWN0b3I8UmVnaXN0
cmFibGVEb21haW4+JiBkb21haW5zKQogewpAQCAtMTMzLDggKzEzMCw2IEBAIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpCiAgICAgLCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3Qoc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlu
Y2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7CiB9CiAKIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6flJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpCkBAIC00NTEs
OTcgKzQ0Niw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29r
aWVCbG9ja2luZ0ZvckRvbWFpbnMoY29uc3QgUmVnaXN0cmFiCiAgICAgICAgIH0pOwogICAgIH0p
OwogfQotICAgIAotCi1PcHRpb25hbDxTZWNvbmRzPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnN0YXRpc3RpY3NFcGlyYXRpb25UaW1lKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChtX3BhcmFtZXRlcnMudGltZVRvTGl2ZVVzZXJJbnRl
cmFjdGlvbikKLSAgICAgICAgcmV0dXJuIFdhbGxUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9j
aCgpIC0gbV9wYXJhbWV0ZXJzLnRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24udmFsdWUoKTsKLSAg
ICAKLSAgICBpZiAobV9vcGVyYXRpbmdEYXRlcy5zaXplKCkgPj0gb3BlcmF0aW5nRGF0ZXNXaW5k
b3dMb25nKQotICAgICAgICByZXR1cm4gbV9vcGVyYXRpbmdEYXRlcy5maXJzdCgpLnNlY29uZHNT
aW5jZUVwb2NoKCk7Ci0gICAgCi0gICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLX0KLQotVmVjdG9y
PE9wZXJhdGluZ0RhdGU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VPcGVyYXRp
bmdEYXRlcyhjb25zdCBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4mIGV4aXN0aW5nRGF0ZXMsIFZlY3Rv
cjxPcGVyYXRpbmdEYXRlPiYmIG5ld0RhdGVzKQotewotICAgIGlmIChleGlzdGluZ0RhdGVzLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFdURk1vdmUobmV3RGF0ZXMpOwotICAgIAotICAgIFZl
Y3RvcjxPcGVyYXRpbmdEYXRlPiBtZXJnZWREYXRlcyhleGlzdGluZ0RhdGVzLnNpemUoKSArIG5l
d0RhdGVzLnNpemUoKSk7Ci0gICAgCi0gICAgLy8gTWVyZ2UgdGhlIHR3byBzb3J0ZWQgdmVjdG9y
cyBvZiBkYXRlcy4KLSAgICBzdGQ6Om1lcmdlKGV4aXN0aW5nRGF0ZXMuYmVnaW4oKSwgZXhpc3Rp
bmdEYXRlcy5lbmQoKSwgbmV3RGF0ZXMuYmVnaW4oKSwgbmV3RGF0ZXMuZW5kKCksIG1lcmdlZERh
dGVzLmJlZ2luKCkpOwotICAgIC8vIFJlbW92ZSBkdXBsaWNhdGUgZGF0ZXMuCi0gICAgcmVtb3Zl
UmVwZWF0ZWRFbGVtZW50cyhtZXJnZWREYXRlcyk7Ci0gICAgCi0gICAgLy8gRHJvcCBvbGQgZGF0
ZXMgdW50aWwgdGhlIFZlY3RvciBzaXplIHJlYWNoZXMgb3BlcmF0aW5nRGF0ZXNXaW5kb3dMb25n
LgotICAgIHdoaWxlIChtZXJnZWREYXRlcy5zaXplKCkgPiBvcGVyYXRpbmdEYXRlc1dpbmRvd0xv
bmcpCi0gICAgICAgIG1lcmdlZERhdGVzLnJlbW92ZSgwKTsKLSAgICAKLSAgICByZXR1cm4gbWVy
Z2VkRGF0ZXM7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXJnZU9w
ZXJhdGluZ0RhdGVzKFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYmIG5ld0RhdGVzKQotewotICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgbV9vcGVyYXRpbmdEYXRlcyA9IG1lcmdl
T3BlcmF0aW5nRGF0ZXMobV9vcGVyYXRpbmdEYXRlcywgV1RGTW92ZShuZXdEYXRlcykpOwotfQot
Ci12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVyYXRp
bmdEYXRlSWZOZWNlc3NhcnkoKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwot
Ci0gICAgYXV0byB0b2RheSA9IE9wZXJhdGluZ0RhdGU6OnRvZGF5KCk7Ci0gICAgaWYgKCFtX29w
ZXJhdGluZ0RhdGVzLmlzRW1wdHkoKSAmJiB0b2RheSA8PSBtX29wZXJhdGluZ0RhdGVzLmxhc3Qo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgd2hpbGUgKG1fb3BlcmF0aW5nRGF0ZXMuc2l6ZSgp
ID49IG9wZXJhdGluZ0RhdGVzV2luZG93TG9uZykKLSAgICAgICAgbV9vcGVyYXRpbmdEYXRlcy5y
ZW1vdmUoMCk7Ci0KLSAgICBtX29wZXJhdGluZ0RhdGVzLmFwcGVuZCh0b2RheSk7Ci19Ci0KLWJv
b2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdGF0aXN0aWNzRXhwaXJlZChXYWxs
VGltZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgT3BlcmF0aW5nRGF0ZXNXaW5kb3cg
b3BlcmF0aW5nRGF0ZXNXaW5kb3cpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7Ci0KLSAgICB1bnNpZ25lZCBvcGVyYXRpbmdEYXRlc1dpbmRvd0luRGF5cyA9IDA7Ci0g
ICAgc3dpdGNoIChvcGVyYXRpbmdEYXRlc1dpbmRvdykgewotICAgIGNhc2UgT3BlcmF0aW5nRGF0
ZXNXaW5kb3c6Okxvbmc6Ci0gICAgICAgIG9wZXJhdGluZ0RhdGVzV2luZG93SW5EYXlzID0gb3Bl
cmF0aW5nRGF0ZXNXaW5kb3dMb25nOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE9wZXJhdGlu
Z0RhdGVzV2luZG93OjpTaG9ydDoKLSAgICAgICAgb3BlcmF0aW5nRGF0ZXNXaW5kb3dJbkRheXMg
PSBvcGVyYXRpbmdEYXRlc1dpbmRvd1Nob3J0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE9w
ZXJhdGluZ0RhdGVzV2luZG93OjpGb3JMaXZlT25UZXN0aW5nOgotICAgICAgICByZXR1cm4gV2Fs
bFRpbWU6Om5vdygpID4gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgKyBvcGVyYXRpbmdU
aW1lV2luZG93Rm9yTGl2ZU9uVGVzdGluZzsKLSAgICBjYXNlIE9wZXJhdGluZ0RhdGVzV2luZG93
OjpGb3JSZXByb1Rlc3Rpbmc6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlm
IChtX29wZXJhdGluZ0RhdGVzLnNpemUoKSA+PSBvcGVyYXRpbmdEYXRlc1dpbmRvd0luRGF5cykg
ewotICAgICAgICBpZiAoT3BlcmF0aW5nRGF0ZTo6ZnJvbVdhbGxUaW1lKG1vc3RSZWNlbnRVc2Vy
SW50ZXJhY3Rpb25UaW1lKSA8IG1fb3BlcmF0aW5nRGF0ZXMuZmlyc3QoKSkKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICAvLyBJZiB3ZSBkb24ndCBtZWV0IHRoZSBy
ZWFsIGNyaXRlcmlhIGZvciBhbiBleHBpcmVkIHN0YXRpc3RpYywgY2hlY2sgdGhlIHVzZXIgc2V0
dGluZyBmb3IgYSB0aWdodGVyIHJlc3RyaWN0aW9uIChtYWlubHkgZm9yIHRlc3RpbmcpLgotICAg
IGlmIChtX3BhcmFtZXRlcnMudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbikgewotICAgICAgICBp
ZiAoV2FsbFRpbWU6Om5vdygpID4gbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgKyBtX3Bh
cmFtZXRlcnMudGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbi52YWx1ZSgpKQotICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0YXRpc3RpY3NFeHBpcmVkKGNvbnN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljLCBPcGVyYXRpbmdEYXRlc1dp
bmRvdyBvcGVyYXRpbmdEYXRlc1dpbmRvdykgY29uc3QKLXsKLSAgICByZXR1cm4gaGFzU3RhdGlz
dGljc0V4cGlyZWQocmVzb3VyY2VTdGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRp
bWUsIG9wZXJhdGluZ0RhdGVzV2luZG93KTsKLX0KIAogYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNob3VsZEVuZm9yY2VTYW1lU2l0ZVN0cmljdEZvclNwZWNpZmljRG9tYWluKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMmRiZTllNTBiYWU0NzBmOWM4MTA1YzUyYzlm
NTAzYWZiZGVmNzQ2OC4uZmJhZjZlODMyZWM3NTdjNTM3N2RlNjY0YzUwYjBlY2FjMjIwZTVkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtNTksMjIgKzU5
LDMwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgT3BlcmF0aW5nRGF0ZSBmcm9tV2FsbFRpbWUoV2Fs
bFRpbWUpOwogICAgIHN0YXRpYyBPcGVyYXRpbmdEYXRlIHRvZGF5KCk7CiAgICAgU2Vjb25kcyBz
ZWNvbmRzU2luY2VFcG9jaCgpIGNvbnN0OworICAgIGludCB5ZWFyKCkgY29uc3QgeyByZXR1cm4g
bV95ZWFyOyB9CisgICAgaW50IG1vbnRoKCkgY29uc3QgeyByZXR1cm4gbV9tb250aDsgfQorICAg
IGludCBtb250aERheSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9udGhEYXk7IH0KKwogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBPcGVyYXRpbmdEYXRlJiBvdGhlcikgY29uc3Q7CiAgICAgYm9vbCBv
cGVyYXRvcjwoY29uc3QgT3BlcmF0aW5nRGF0ZSYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgb3Bl
cmF0b3I8PShjb25zdCBPcGVyYXRpbmdEYXRlJiBvdGhlcikgY29uc3Q7CiAgICAgCi1wcml2YXRl
OgogICAgIE9wZXJhdGluZ0RhdGUoaW50IHllYXIsIGludCBtb250aCwgaW50IG1vbnRoRGF5KQog
ICAgICAgICA6IG1feWVhcih5ZWFyKQogICAgICAgICAsIG1fbW9udGgobW9udGgpCiAgICAgICAg
ICwgbV9tb250aERheShtb250aERheSkKICAgICB7IH0KIAorcHJpdmF0ZToKICAgICBpbnQgbV95
ZWFyIHsgMCB9OwogICAgIGludCBtX21vbnRoIHsgMCB9OyAvLyBbMCwgMTFdLgogICAgIGludCBt
X21vbnRoRGF5IHsgMCB9OyAvLyBbMSwgMzFdLgogfTsKIAorY29uc3RleHByIHVuc2lnbmVkIG9w
ZXJhdGluZ0RhdGVzV2luZG93TG9uZyB7IDMwIH07Citjb25zdGV4cHIgdW5zaWduZWQgb3BlcmF0
aW5nRGF0ZXNXaW5kb3dTaG9ydCB7IDcgfTsKK2NvbnN0ZXhwciBTZWNvbmRzIG9wZXJhdGluZ1Rp
bWVXaW5kb3dGb3JMaXZlT25UZXN0aW5nIHsgMV9oIH07CisKIGVudW0gY2xhc3MgT3BlcmF0aW5n
RGF0ZXNXaW5kb3cgOiB1aW50OF90IHsgTG9uZywgU2hvcnQsIEZvckxpdmVPblRlc3RpbmcsIEZv
clJlcHJvVGVzdGluZyB9OwogZW51bSBjbGFzcyBDb29raWVBY2Nlc3MgOiB1aW50OF90IHsgQ2Fu
bm90UmVxdWVzdCwgQmFzZWRPbkNvb2tpZVBvbGljeSwgT25seUlmR3JhbnRlZCB9OwogCkBAIC0x
MDUsNyArMTEzLDYgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQ29va2llQmxvY2tpbmdGb3JE
b21haW5zKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVzRm9yJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyQmxvY2tpbmdTdGF0ZUZvckRv
bWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKIAotICAgIHZvaWQgaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdE
YXRlSWZOZWNlc3NhcnkoKTsKICAgICB2b2lkIHByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHMoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjbGFzc2lmeVByZXZhbGVudFJlc291cmNlcygpID0g
MDsKQEAgLTE0OCw3ICsxNTUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNYXhTdGF0aXN0aWNz
RW50cmllcyhzaXplX3QgbWF4aW11bUVudHJ5Q291bnQpOwogICAgIHZvaWQgc2V0UHJ1bmVFbnRy
aWVzRG93blRvKHNpemVfdCBwcnVuZVRhcmdldENvdW50KTsKICAgICB2b2lkIHJlc2V0UGFyYW1l
dGVyc1RvRGVmYXVsdFZhbHVlcygpOwotICAgIE9wdGlvbmFsPFNlY29uZHM+IHN0YXRpc3RpY3NF
cGlyYXRpb25UaW1lKCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5kU3Vi
bWl0VGVsZW1ldHJ5KCkgY29uc3QgPSAwOwogCkBAIC0xOTYsMTggKzIwMiwxOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGlzTWVtb3J5U3RvcmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc0RhdGFiYXNlU3RvcmUoKWNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNl
c3NhcnkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyT3BlcmF0aW5nRGF0ZXMoKSA9IDA7
CisgICAgdmlydHVhbCBib29sIGhhc1N0YXRpc3RpY3NFeHBpcmVkKFdhbGxUaW1lIG1vc3RSZWNl
bnRVc2VySW50ZXJhY3Rpb25UaW1lLCBPcGVyYXRpbmdEYXRlc1dpbmRvdykgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaGFzVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1
bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wpID0gMDsKKwogcHJvdGVjdGVkOgog
ICAgIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlSW1wb3J0YW5jZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJik7Ci0gICAgc3RhdGljIFZlY3RvcjxPcGVyYXRpbmdEYXRlPiBt
ZXJnZU9wZXJhdGluZ0RhdGVzKGNvbnN0IFZlY3RvcjxPcGVyYXRpbmdEYXRlPiYgZXhpc3RpbmdE
YXRlcywgVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiYgbmV3RGF0ZXMpOwogCiAgICAgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIFdvcmtR
dWV1ZSYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwogICAgIAogICAgIGJvb2wgZGF0YVJlY29y
ZHNCZWluZ1JlbW92ZWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGFSZWNvcmRzQmVpbmdSZW1vdmVk
OyB9CiAKLSAgICBib29sIGhhc1N0YXRpc3RpY3NFeHBpcmVkKGNvbnN0IFJlc291cmNlTG9hZFN0
YXRpc3RpY3MmLCBPcGVyYXRpbmdEYXRlc1dpbmRvdykgY29uc3Q7Ci0gICAgYm9vbCBoYXNTdGF0
aXN0aWNzRXhwaXJlZChXYWxsVGltZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSwgT3Bl
cmF0aW5nRGF0ZXNXaW5kb3cpIGNvbnN0OwogICAgIHZvaWQgc2NoZWR1bGVTdGF0aXN0aWNzUHJv
Y2Vzc2luZ1JlcXVlc3RJZk5lY2Vzc2FyeSgpOwotICAgIHZvaWQgbWVyZ2VPcGVyYXRpbmdEYXRl
cyhWZWN0b3I8T3BlcmF0aW5nRGF0ZT4mJik7CiAgICAgYm9vbCBzaG91bGRFbmZvcmNlU2FtZVNp
dGVTdHJpY3RGb3JTcGVjaWZpY0RvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0
OwogICAgIHZpcnR1YWwgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2YWxlbnRS
ZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKSA9IDA7CiAgICAgdmlydHVhbCBSZWdpc3RyYWJsZURvbWFp
bnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciByZWdpc3RyYWJsZURvbWFpbnNUb0Rl
bGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvcigpID0gMDsKQEAgLTIzNyw4ICsyNDQsNiBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIGJvb2wgaXNSdW5uaW5nVGVzdCB7IGZhbHNlIH07CiAgICAgfTsK
ICAgICBjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzOyB9Ci0gICAgY29uc3QgVmVjdG9yPE9wZXJhdGluZ0RhdGU+JiBvcGVyYXRpbmdEYXRl
cygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW5nRGF0ZXM7IH0KLSAgICB2b2lkIGNsZWFyT3Bl
cmF0aW5nRGF0ZXMoKSB7IG1fb3BlcmF0aW5nRGF0ZXMuY2xlYXIoKTsgfQogICAgIFdhbGxUaW1l
JiBlbmRPZkdyYW5kZmF0aGVyaW5nVGltZXN0YW1wKCkgeyByZXR1cm4gbV9lbmRPZkdyYW5kZmF0
aGVyaW5nVGltZXN0YW1wOyB9CiAgICAgY29uc3QgV2FsbFRpbWUmIGVuZE9mR3JhbmRmYXRoZXJp
bmdUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3Rh
bXA7IH0KICAgICB2b2lkIHNldEVuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAoY29uc3QgV2Fs
bFRpbWUmIGdyYW5kZmF0aGVyaW5nVGltZSkgeyBtX2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3Rh
bXAgPSBncmFuZGZhdGhlcmluZ1RpbWU7IH0KQEAgLTI3Nyw3ICsyODIsNiBAQCBwcml2YXRlOgog
ICAgIEhhc2hTZXQ8dWludDY0X3Q+IG1fYWN0aXZlUGx1Z2luVG9rZW5zOwogI2VuZGlmCiAgICAg
UGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7Ci0gICAgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1fb3Bl
cmF0aW5nRGF0ZXM7CiAgICAgV2FsbFRpbWUgbV9lbmRPZkdyYW5kZmF0aGVyaW5nVGltZXN0YW1w
OwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG1fZGVidWdNYW51YWxQcmV2YWxlbnRSZXNvdXJjZTsK
ICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdFRpbWVEYXRhUmVjb3Jkc1dlcmVSZW1vdmVkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA1Mzg3
Yjc2OTI0YTdiNDA3YTM2MTIxYWI4OGM5ZGVlYzgyMjFmODFhLi43ZTg3YzEzODI4ZDBhNTUzYzBj
Zjc1YmNjZjJmMWM3MTc0YTc3YWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTQ1MSw2ICsxNDUxLDE3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1bWUoKQogICAgICAgICBzdXNwZW5kZWRTdGF0ZUNo
YW5nZUNvbmRpdGlvbi5ub3RpZnlPbmUoKTsKIH0KIAordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBkb21haW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2No
ZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgcG9zdFRhc2soW3RoaXMsIGRvbWFpbiA9IGRvbWFp
bi5pc29sYXRlZENvcHkoKSwgaGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1
dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1fc3RhdGlz
dGljc1N0b3JlKQorICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmluc2VydEV4cGlyZWRT
dGF0aXN0aWNGb3JUZXN0aW5nKFdURk1vdmUoZG9tYWluKSwgaGFkVXNlckludGVyYWN0aW9uLCBp
c1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCk7CisgICAg
ICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMzQ1ZmQyODc3YWM5ZWQyMDM0OTE0MTBl
M2JlMDFjNzYwZDZlMTg3Yi4uZGUyZjc2MDdhNWNlMGY5YzU2OTkxMDRhMTdhMWQ4YjY1ODgwNzlh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAt
Mjk3LDYgKzI5Nyw3IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAgICAgc3RhdGljIHZvaWQg
cmVzdW1lKCk7CiAgICAgCiAgICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNFcGhlbWVyYWwgPT0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVy
YWw6OlllczsgfTsKKyAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNT
Y2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcm
LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0LCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OjpJc0VwaGVtZXJhbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCmluZGV4IDViNDZkMzMzNDBlNTE2MGVmYzQ2MzQ1ZDZmNDVhOGYxZTk1YjFh
NzYuLjUxNjRjNjMzNWFkMTgzNTliNzk0NWZlNmM5YTU1NzdlMjExYWZhOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMDM0LDYg
KzEwMzQsMTkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmUKICAgICB9CiB9CiAKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6Omluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgYm9vbCBoYWRV
c2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3Zh
bCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQorICAg
ICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0Zv
clRlc3RpbmcoZG9tYWluLCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0
Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgfQorfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRBbGxTdG9y
YWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKaW5kZXggNmJkMzgxODdiMWQwYTRjNWFiZWI2OWYwN2QyMGI5NmQyMWQ2ZDU2OC4uMDc1OTRj
OTM4MWU4NTQxMmU4NmQwYmYzZTMzMzZkZWYxMzhkMzZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjQwLDYgKzI0MCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldExhc3RTZWVuKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBkb21haW5JREV4aXN0c0luRGF0YWJhc2UoUEFMOjpTZXNzaW9uSUQsIGludCBkb21haW5JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBtZXJnZVN0YXRpc3Rp
Y0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29u
c3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluMSwgY29uc3QgVG9wRnJhbWVEb21haW4m
IHRvcEZyYW1lRG9tYWluMiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rp
b24sIFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVy
ZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRh
UmVjb3Jkc1JlbW92ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBp
bnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxl
ZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJl
Y29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZChQQUw6OlNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHNldElzUnVubmluZ1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUZXN0KFBB
TDo6U2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggNTBiYWU0MzgyZmNkMWI0OTFkOTc0NTI3MDcxMjYzN2RiOGEyMzFj
Yi4uYjY2ZWEzMWE3YTcxOTdhNzYwMjgyNjE2YmJkMDViZTBlOWFlNjlhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCkBAIC05NSw2ICs5NSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJl
Y2VpdmVyIHsKICAgICBTZXRBZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvbmFsPFNlY29uZHM+IHNlY29uZHMpIC0+ICgpIEFzeW5jCiAgICAg
U2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiByZXNvdXJjZURvbWFpbiwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwogICAg
IE1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB0b3BGcmFtZURvbWFpbjEsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZy
YW1lRG9tYWluMiwgU2Vjb25kcyBsYXN0U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNl
Y29uZHMgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJv
b2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1aW50NjRfdCBkYXRhUmVjb3Jk
c1JlbW92ZWQpIC0+ICgpIEFzeW5jCisgICAgSW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBy
ZXNvdXJjZURvbWFpbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRG
b3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCkgLT4gKCkgQXN5bmMK
ICAgICBTZXRQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFNl
dFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCiAg
ICAgSXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRXBoZW1lcmFsKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkgLT4gKGJvb2wgaXNFcGhlbWVyYWwpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCAyY2Zk
M2ExZTQ1ZWVkMDI3NDM5ZTIzZWEwOTE1Yzg3ZTFmNzUwNTAwLi4wYTdkODA2NGRjODQyMDNkZGM1
MGYxZDA1YmMzODgyNmI4NjQ2MDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTE2OSw2ICsxNjksMTcg
QEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMoV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG8KICNlbmRpZgogfQogCit2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKFdLV2Vic2l0ZURhdGFTdG9yZVJl
ZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgaGFkVXNlckludGVyYWN0aW9u
LCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2
YWxlbnQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NNZXJnZVN0
YXRpc3RpY0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQoreworI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aW5z
ZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCho
b3N0KS0+c3RyaW5nKCkpLCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0
Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50LCBbY29udGV4dCwgY29tcGxldGlvbkhhbmRs
ZXJdIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29udGV4dCk7CisgICAgfSk7CisjZWxz
ZQorICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworI2VuZGlmCit9CisKIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wgdmFsdWUsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
V2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4IDcxYjk3ZjNjYmY2OTg0ZDU0MmI0ODhkNThjOTAy
NTdlNDczYTYwYjkuLjM1MjUyNjJmYTQxODUxMDg2NjkxN2RhZGI0NWE5ODE5Mzg4YjExODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oCkBAIC01NSw2ICs1NSw4IEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NMYXN0U2VlbkZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRlCiBXS19F
WFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTGFzdFNlZW4oV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgZG91YmxlIHNl
Y29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NMYXN0U2Vl
bkZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURh
dGFTdG9yZVN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpY0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNv
bnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc01l
cmdlU3RhdGlzdGljKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluMSwgV0tTdHJpbmdSZWYgdG9wRnJh
bWVEb21haW4yLCBkb3VibGUgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBkb3Vi
bGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wg
aXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1Jl
bW92ZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NNZXJnZVN0
YXRpc3RpY0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKK3R5cGVkZWYgdm9pZCAoKldLV2Vi
c2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljRnVuY3Rpb24pKHZvaWQqIGZ1
bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0
aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
LCBXS1N0cmluZ1JlZiBob3N0LCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVk
dWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCB2b2lkKiBj
b250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpY0Z1bmN0
aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRl
eHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5n
UmVmIGhvc3QsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5
cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVz
b3VyY2VGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDM2ZjdjNDVmMGJkYWE1MmI1ZDhmMTEwMmFhMzhiNmU3OWE1ZDY4NDAuLmQ4MDZiOTI1N2M5YTg2
Y2FkYjAyOWVmYTIyMTM0Njc5MTFlMTE4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtNTkzLDYgKzU5
MywxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbgogICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Ok1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhzZXNzaW9u
SUQsIHJlc291cmNlRG9tYWluLCB0b3BGcmFtZURvbWFpbjEsIHRvcEZyYW1lRG9tYWluMiwgbGFz
dFNlZW4sIGhhZFVzZXJJbnRlcmFjdGlvbiwgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgaXNH
cmFuZGZhdGhlcmVkLCBpc1ByZXZhbGVudCwgaXNWZXJ5UHJldmFsZW50LCBkYXRhUmVjb3Jkc1Jl
bW92ZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGJv
b2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0
YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpJbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhzZXNzaW9uSUQs
IHJlc291cmNlRG9tYWluLCBoYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0
Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNsZWFyUHJldmFsZW50UmVzb3Vy
Y2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVz
b3VyY2VEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggZWMzMDJi
YmYwODA3NTAxZDZhYjY4MmVkYzhlMjcyOTIxYzcwZjU1NC4uODU0N2NmNjNiMjgzMjY1ZTQzNTVk
ZTcwNDA0YzFmMDJmYTdiMWQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTEzNCw2ICsxMzQsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkb21haW5JREV4aXN0c0luRGF0YWJhc2UoUEFMOjpTZXNzaW9uSUQsIGlu
dCBkb21haW5JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBz
dGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJsZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiB0b3BGcmFtZURvbWFpbjEsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURv
bWFpbjIsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRz
IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlz
UHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVudCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1v
dmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgaW5zZXJ0RXhwaXJl
ZFN0YXRpc3RpY0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRD
b29raWVEYXRhUmVtb3ZhbCwgYm9vbCBpc1ByZXZhbGVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKFBBTDo6U2Vz
c2lvbklELCBPcHRpb25hbDxTZWNvbmRzPiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJlZChQQUw6
OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGlzR3JhbmRmYXRoZXJl
ZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMTQ4
MzdiZDYzNjRjZWFhZDI0ZmRhZDdiM2ZiNDI5NTI3ODczMzExOS4uM2U5NGRhNzBlM2NmZDJkY2Yw
YjQ4Y2YwMDhiY2IzNDg4M2NlNGJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE2MjIsNyArMTYy
Miw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZG9tYWluSURFeGlzdHNJbkRhdGFiYXNlKGlu
dCBkb21haW5JRCwgQ29tcGxldGlvbkhhbmRsZXI8CiAgICAgfQogfQogCi12b2lkIFdlYnNpdGVE
YXRhU3RvcmU6Om1lcmdlU3RhdGlzdGljRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCAsIGNvbnN0
IFVSTCYgdG9wRnJhbWVVcmwxLCBjb25zdCBVUkwmIHRvcEZyYW1lVXJsMiwgU2Vjb25kcyBsYXN0
U2VlbiwgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24sIFNlY29uZHMgbW9zdFJlY2VudFVzZXJJbnRl
cmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNW
ZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jkc1JlbW92ZWQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
bWVyZ2VTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHRvcEZy
YW1lVXJsMSwgY29uc3QgVVJMJiB0b3BGcmFtZVVybDIsIFNlY29uZHMgbGFzdFNlZW4sIGJvb2wg
aGFkVXNlckludGVyYWN0aW9uLCBTZWNvbmRzIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb24sIGJv
b2wgaXNHcmFuZGZhdGhlcmVkLCBib29sIGlzUHJldmFsZW50LCBib29sIGlzVmVyeVByZXZhbGVu
dCwgdW5zaWduZWQgZGF0YVJlY29yZHNSZW1vdmVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHVybC5wcm90b2NvbElzQWJvdXQoKSB8
fCB1cmwuaXNFbXB0eSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xNjM3
LDYgKzE2MzcsMjEgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjptZXJnZVN0YXRpc3RpY0ZvclRl
c3RpbmcoY29uc3QgVVJMJiB1cmwgLCBjb25zdCBVUkwmIHRvcEYKICAgICB9CiB9CiAKK3ZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6aW5zZXJ0RXhwaXJlZFN0YXRpc3RpY0ZvclRlc3RpbmcoY29uc3Qg
VVJMJiB1cmwsIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxs
QnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQcmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAodXJsLnByb3RvY29sSXNB
Ym91dCgpIHx8IHVybC5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Q2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAg
IGlmIChhdXRvKiBwcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCisgICAg
ICAgICAgICBwcm9jZXNzLT5pbnNlcnRFeHBpcmVkU3RhdGlzdGljRm9yVGVzdGluZyhtX3Nlc3Np
b25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyB1cmwgfSwgaGFkVXNlckludGVyYWN0
aW9uLCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCwg
W3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29w
eVJlZigpXSB7IH0pOworICAgIH0KK30KKwogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXROb3Rp
ZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wgdmFsdWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIGNhbGxiYWNr
QWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCBhMzViNjk3OTc1YTlmMTVkZTEyMjI5MWQ5YmQ4
ZGEzYTIzMTI0YWQ3Li5kYmRhMDQxODhjMTRjMTY1MzQ0ZGQ1MDg0MmI2YWM5NDRlMGQzOTBmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCkBAIC0xNzIsNiArMTcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZG9tYWlu
SURFeGlzdHNJbkRhdGFiYXNlKGludCBkb21haW5JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAgICAgdm9pZCBzdGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJsZXMoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBtZXJnZVN0YXRpc3RpY0ZvclRl
c3RpbmcoY29uc3QgVVJMJiwgY29uc3QgVVJMJiB0b3BGcmFtZVVybDEsIGNvbnN0IFVSTCYgdG9w
RnJhbWVVcmwyLCBTZWNvbmRzIGxhc3RTZWVuLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgU2Vj
b25kcyBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sIGlzR3JhbmRmYXRoZXJlZCwgYm9v
bCBpc1ByZXZhbGVudCwgYm9vbCBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGRhdGFSZWNvcmRz
UmVtb3ZlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGluc2VydEV4
cGlyZWRTdGF0aXN0aWNGb3JUZXN0aW5nKGNvbnN0IFVSTCYsIGJvb2wgaGFkVXNlckludGVyYWN0
aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wgaXNQ
cmV2YWxlbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXROb3Rp
ZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRJc1J1bm5pbmdSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGVzdChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJ1
bmVFbnRyaWVzRG93blRvKHNpemVfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMjUyNTZk
YTM5NWRiZmEwZmE0YmIwMjczMGI4YjgwNzgzZThkZDlmLi5hZTMyODIwYjkwZmJmMTI5ZWQ5YmI4
ZjQyZmFjNGJhOTZiMTBiYjNiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDUtMjAgIEthdGUgQ2hlbmV5ICA8
a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBvcGVyYXRpbmcg
ZGF0ZXMgaW4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMjAzNAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNjMzNDkyNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgdGVzdGluZyBmdW5jdGlvbiB0byBpbnNlcnQgYW4gZXhwaXJl
ZCBzdGF0aXN0aWMuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1
bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5u
ZXI6OnNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRFeHBpcmVkU3RhdGlzdGljQ2FsbGJhY2spOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6
VGVzdEludm9jYXRpb246OmRpZFNldEV4cGlyZWRTdGF0aXN0aWMpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKwogMjAyMC0wNS0yMCAgTGF1cm8gTW91cmEg
IDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtXZWJEcml2ZXJdIEFsbG93IHN1
YnZpZXdzIHRvIGNyZWF0ZSBuZXcgdmlld3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4
IDY4NThhMjkxODRmNjA0OWI2OWIwMzZmN2E1MDM0Y2NiYzcyMGZmOTIuLmRmMTFkOTc5YTQ2NmI0
NjdhMzY2NmNjODA3Y2I2NTUzMmMxNDVhMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApA
QCAtMzAzLDYgKzMwMyw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHNldFN0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShET01TdHJpbmcgaG9zdE5hbWUs
IG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTGFzdFNl
ZW4oRE9NU3RyaW5nIGhvc3ROYW1lLCBkb3VibGUgc2Vjb25kcywgb2JqZWN0IGNvbXBsZXRpb25I
YW5kbGVyKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NNZXJnZVN0YXRpc3RpYyhET01TdHJpbmcg
aG9zdE5hbWUsIERPTVN0cmluZyB0b3BGcmFtZURvbWFpbjEsIERPTVN0cmluZyB0b3BGcmFtZURv
bWFpbjIsIGRvdWJsZSBsYXN0U2VlbiwgYm9vbGVhbiBoYWRVc2VySW50ZXJhY3Rpb24sIGRvdWJs
ZSBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uLCBib29sZWFuIGlzR3JhbmRmYXRoZXJlZCwgYm9v
bGVhbiBpc1ByZXZhbGVudCwgYm9vbGVhbiBpc1ZlcnlQcmV2YWxlbnQsIHVuc2lnbmVkIGxvbmcg
ZGF0YVJlY29yZHNSZW1vdmVkLCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQg
c2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWMoRE9NU3RyaW5nIGhvc3ROYW1lLCBib29sZWFu
IGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbGVhbiBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURh
dGFSZW1vdmFsLCBib29sZWFuIGlzUHJldmFsZW50LCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIp
OwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKERPTVN0cmluZyBob3N0
TmFtZSwgYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lk
IHNldFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoRE9NU3RyaW5nIGhvc3ROYW1lLCBi
b29sZWFuIHZhbHVlLCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIGJvb2xlYW4gaXNT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UoRE9NU3RyaW5nIGhvc3ROYW1lKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAKaW5kZXggZmU1ZDc1NzRkNzFmMzNjZWNhYWEyYzc2YWM3MTQ0ZThlY2QzN2YyNy4uNTM2
OWNlMGFjYjZmNzgwYTdjZWEyNzFjMGFmM2IxMzYwNDZlZTg1YSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
QEAgLTM4Niw2ICszODYsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90
ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldE1lcmdlU3RhdGlzdGljQ2FsbGJhY2soKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRTZXRFeHBpcmVkU3RhdGlzdGljIikpIHsK
KyAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldEV4cGlyZWRTdGF0aXN0
aWNDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkU2V0UHJldmFsZW50UmVz
b3VyY2UiKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3RpY3NDYWxsRGlkU2V0UHJl
dmFsZW50UmVzb3VyY2VDYWxsYmFjaygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggOGIwMjFmOWM0NGM5NjgwNzVl
YmY2NjFmMThhYzAyNmU4NTE4YzIyYS4uOTM5ODI5NjgwYjQ5YjZjODM3MTI1MWYzMjgwODI1Y2Qx
ZjZmYzM5YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC03NDEsNiArNzQxLDcgQEAgZW51bSB7CiAgICAgU2V0U3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlQ2FsbGJhY2tJRCwKICAgICBTZXRT
dGF0aXN0aWNzTGFzdFNlZW5DYWxsYmFja0lELAogICAgIFNldFN0YXRpc3RpY3NNZXJnZVN0YXRp
c3RpY0NhbGxiYWNrSUQsCisgICAgU2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWNDYWxsYmFj
a0lELAogICAgIFNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUNhbGxiYWNrSUQsCiAgICAg
U2V0U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZUNhbGxiYWNrSUQsCiAgICAgU2V0U3Rh
dGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkNhbGxiYWNrSUQsCkBAIC0xNTc1LDYgKzE1NzYs
NDIgQEAgdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldE1lcmdlU3RhdGlzdGlj
Q2FsbGJhY2soKQogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU2V0U3RhdGlzdGljc01lcmdl
U3RhdGlzdGljQ2FsbGJhY2tJRCk7CiB9CiAKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGlj
c0V4cGlyZWRTdGF0aXN0aWMoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIGJvb2wgaGFkVXNlckludGVy
YWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwsIGJvb2wg
aXNQcmV2YWxlbnQsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY2FjaGVU
ZXN0UnVubmVyQ2FsbGJhY2soU2V0U3RhdGlzdGljc0V4cGlyZWRTdGF0aXN0aWNDYWxsYmFja0lE
LCBjb21wbGV0aW9uSGFuZGxlcik7CisKKyAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+PiBrZXlzOworICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CisK
KyAgICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJI
b3N0TmFtZSIpKSk7CisgICAgdmFsdWVzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aEpTU3RyaW5nKGhvc3ROYW1lKSkpOworCisgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSGFkVXNlckludGVyYWN0aW9uIikpKTsKKyAgICB2YWx1
ZXMuYXBwZW5kKGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGhhZFVzZXJJbnRlcmFjdGlvbikpKTsK
KworICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IklzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92YWwiKSkpOworICAgIHZhbHVlcy5h
cHBlbmQoYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVE
YXRhUmVtb3ZhbCkpKTsKKworICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIklzUHJldmFsZW50IikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKGFkb3B0
V0soV0tCb29sZWFuQ3JlYXRlKGlzUHJldmFsZW50KSkpOworICAgIAorICAgIFZlY3RvcjxXS1N0
cmluZ1JlZj4gcmF3S2V5cyhrZXlzLnNpemUoKSk7CisgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3
VmFsdWVzKHZhbHVlcy5zaXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrZXlz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIHJhd0tleXNbaV0gPSBrZXlzW2ldLmdldCgpOworICAg
ICAgICByYXdWYWx1ZXNbaV0gPSB2YWx1ZXNbaV0uZ2V0KCk7CisgICAgfQorICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIlNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljIikpOworICAgIFdLUmV0
YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLRGljdGlvbmFy
eUNyZWF0ZShyYXdLZXlzLmRhdGEoKSwgcmF3VmFsdWVzLmRhdGEoKSwgcmF3S2V5cy5zaXplKCkp
KTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5i
dW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwordm9p
ZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldEV4cGlyZWRTdGF0aXN0aWNDYWxsYmFj
aygpCit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTZXRTdGF0aXN0aWNzRXhwaXJlZFN0
YXRpc3RpY0NhbGxiYWNrSUQpOworfQorCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0YXRpc3RpY3NQ
cmV2YWxlbnRSZXNvdXJjZShKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCB2YWx1ZSwgSlNWYWx1
ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhT
ZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VDYWxsYmFja0lELCBjb21wbGV0aW9uSGFuZGxl
cik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oCmluZGV4IDFlNWY5MjA4ZTQ1NWY5NTU1MTVhNDNlOGM4ZjE4ZDAxNTVmMDFmYjguLmM2
ZDY4ZDYxYTZkYzIyZjEwMTc1MjU0NGEzY2Q1YzYxOGU0NGVmYjQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00MDMsNiAr
NDAzLDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRMYXN0U2VlbkNh
bGxiYWNrKCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzTWVyZ2VTdGF0aXN0aWMoSlNTdHJpbmdS
ZWYgaG9zdE5hbWUsIEpTU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluMSwgSlNTdHJpbmdSZWYgdG9w
RnJhbWVEb21haW4yLCBkb3VibGUgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBk
b3VibGUgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJv
b2wgaXNQcmV2YWxlbnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCB1bnNpZ25lZCBkYXRhUmVjb3Jk
c1JlbW92ZWQsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlz
dGljc0NhbGxEaWRTZXRNZXJnZVN0YXRpc3RpY0NhbGxiYWNrKCk7CisgICAgdm9pZCBzZXRTdGF0
aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9vbCBoYWRVc2Vy
SW50ZXJhY3Rpb24sIGJvb2wgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwg
Ym9vbCBpc1ByZXZhbGVudCwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgdm9p
ZCBzdGF0aXN0aWNzQ2FsbERpZFNldEV4cGlyZWRTdGF0aXN0aWNDYWxsYmFjaygpOwogICAgIHZv
aWQgc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKEpTU3RyaW5nUmVmIGhvc3ROYW1lLCBi
b29sIHZhbHVlLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRp
c3RpY3NDYWxsRGlkU2V0UHJldmFsZW50UmVzb3VyY2VDYWxsYmFjaygpOwogICAgIHZvaWQgc2V0
U3RhdGlzdGljc1ZlcnlQcmV2YWxlbnRSZXNvdXJjZShKU1N0cmluZ1JlZiBob3N0TmFtZSwgYm9v
bCB2YWx1ZSwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDI0NmZkNDcxNzcyY2Q0NGU3OTI3YjE0Y2Y2
ZTRkMGZkNzNlYWI0YmYuLmQzOGQ4NTRiNzYwMmRmNzU1Y2M2NzBmYTY0MTI3MTJkOWQxYWIzMGQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNDc4LDYg
KzM0NzgsMTQgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc01lcmdlU3RhdGlz
dGljKFdLU3RyaW5nUmVmIGhvc3QsIFdLU3RyaW5nUmVmIHQKICAgICBtX2N1cnJlbnRJbnZvY2F0
aW9uLT5kaWRNZXJnZVN0YXRpc3RpYygpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRT
dGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhXS1N0cmluZ1JlZiBob3N0LCBib29sIGhhZFVzZXJJ
bnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBi
b29sIGlzUHJldmFsZW50KQoreworICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4
dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzRXhw
aXJlZFN0YXRpc3RpYyh3ZWJzaXRlRGF0YVN0b3JlKCksIGhvc3QsIGhhZFVzZXJJbnRlcmFjdGlv
biwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQsICZj
b250ZXh0LCByZXNvdXJjZVN0YXRpc3RpY3NWb2lkUmVzdWx0Q2FsbGJhY2spOworICAgIHJ1blVu
dGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5k
aWRTZXRFeHBpcmVkU3RhdGlzdGljKCk7Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldFN0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShXS1N0cmluZ1JlZiBob3N0LCBib29sIHZhbHVlKQog
ewogICAgIFJlc291cmNlU3RhdGlzdGljc0NhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAzYzNhNWUxNzViMWE4
MTc3MTgxNTYxMTBjYTQ2YTYzYzNjNDk4NmQwLi40NzFlZmQ3NzVmYzg4YmI1NjE3YjYyZDA5ZTY4
MmU3Y2Y1NjdlODc1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBA
IC0yMjIsNiArMjIyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ByZXZhbGVu
dFJlc291cmNlRm9yRGVidWdNb2RlKFdLU3RyaW5nUmVmIGhvc3ROYW1lKTsKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NMYXN0U2VlbihXS1N0cmluZ1JlZiBob3N0TmFtZSwgZG91YmxlIHNlY29uZHMp
OwogICAgIHZvaWQgc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKFdLU3RyaW5nUmVmIGhvc3Qs
IFdLU3RyaW5nUmVmIHRvcEZyYW1lRG9tYWluMSwgV0tTdHJpbmdSZWYgdG9wRnJhbWVEb21haW4y
LCBkb3VibGUgbGFzdFNlZW4sIGJvb2wgaGFkVXNlckludGVyYWN0aW9uLCBkb3VibGUgbW9zdFJl
Y2VudFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQsIGJvb2wgaXNQcmV2YWxl
bnQsIGJvb2wgaXNWZXJ5UHJldmFsZW50LCBpbnQgZGF0YVJlY29yZHNSZW1vdmVkKTsKKyAgICB2
b2lkIHNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKFdLU3RyaW5nUmVmIGhvc3QsIGJvb2wg
aGFkVXNlckludGVyYWN0aW9uLCBib29sIGlzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJl
bW92YWwsIGJvb2wgaXNQcmV2YWxlbnQpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc1ByZXZhbGVu
dFJlc291cmNlKFdLU3RyaW5nUmVmIGhvc3ROYW1lLCBib29sIHZhbHVlKTsKICAgICB2b2lkIHNl
dFN0YXRpc3RpY3NWZXJ5UHJldmFsZW50UmVzb3VyY2UoV0tTdHJpbmdSZWYgaG9zdE5hbWUsIGJv
b2wgdmFsdWUpOwogICAgIFN0cmluZyBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCBlMzIyN2VlMDlkMzFh
NzhhYjZlMGQ3YzQ3OWE1MTFiNmVlYzAzNGFmLi4zMDE2MTA3ZjE5MmFmNmUzMTEyMmMyNDlkYjNl
ZTU3ZjM0YTFlMDlmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtODcxLDYgKzg3MSwyNSBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICBU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc01lcmdlU3RhdGlzdGljKGhv
c3ROYW1lLCB0b3BGcmFtZURvbWFpbjEsIHRvcEZyYW1lRG9tYWluMiwgV0tEb3VibGVHZXRWYWx1
ZShsYXN0U2VlbiksIFdLQm9vbGVhbkdldFZhbHVlKGhhZFVzZXJJbnRlcmFjdGlvbiksIFdLRG91
YmxlR2V0VmFsdWUobW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvbiksIFdLQm9vbGVhbkdldFZhbHVl
KGlzR3JhbmRmYXRoZXJlZCksIFdLQm9vbGVhbkdldFZhbHVlKGlzUHJldmFsZW50KSwgV0tCb29s
ZWFuR2V0VmFsdWUoaXNWZXJ5UHJldmFsZW50KSwgV0tVSW50NjRHZXRWYWx1ZShkYXRhUmVjb3Jk
c1JlbW92ZWQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NFeHBpcmVk
U3RhdGlzdGljIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9
PSBXS0RpY3Rpb25hcnlHZXRUeXBlSUQoKSk7CisKKyAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1l
c3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2Fn
ZUJvZHkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaG9zdE5hbWVLZXkgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJIb3N0TmFtZSIpKTsKKyAgICAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGhhZFVzZXJJbnRlcmFjdGlvbktleSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhhZFVzZXJJbnRlcmFjdGlvbiIpKTsK
KyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b25LZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNb3N0UmVjZW50
VXNlckludGVyYWN0aW9uIikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gaXNT
Y2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEtleSA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIklzU2NoZWR1bGVkRm9yQWxsQnV0Q29va2llRGF0YVJlbW92
YWwiKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBpc1ByZXZhbGVudEtleSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIklzUHJldmFsZW50IikpOwor
CisgICAgICAgIFdLU3RyaW5nUmVmIGhvc3ROYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+
KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCBob3N0TmFt
ZUtleS5nZXQoKSkpOworICAgICAgICBXS0Jvb2xlYW5SZWYgaGFkVXNlckludGVyYWN0aW9uID0g
c3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSwgaGFkVXNlckludGVyYWN0aW9uS2V5LmdldCgpKSk7CisgICAgICAg
IFdLQm9vbGVhblJlZiBpc1NjaGVkdWxlZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsID0gc3Rh
dGljX2Nhc3Q8V0tCb29sZWFuUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KG1lc3NhZ2VC
b2R5RGljdGlvbmFyeSwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbEtleS5n
ZXQoKSkpOworICAgICAgICBXS0Jvb2xlYW5SZWYgaXNQcmV2YWxlbnQgPSBzdGF0aWNfY2FzdDxX
S0Jvb2xlYW5SZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkobWVzc2FnZUJvZHlEaWN0aW9u
YXJ5LCBpc1ByZXZhbGVudEtleS5nZXQoKSkpOworCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhob3N0TmFtZSwgV0tCb29s
ZWFuR2V0VmFsdWUoaGFkVXNlckludGVyYWN0aW9uKSwgV0tCb29sZWFuR2V0VmFsdWUoaXNTY2hl
ZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCksIFdLQm9vbGVhbkdldFZhbHVlKGlzUHJl
dmFsZW50KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZSIpKSB7CiAgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9keSkgPT0gV0tE
aWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwpAQCAtMTk3Nyw2ICsxOTk2LDEyIEBAIHZvaWQgVGVzdElu
dm9jYXRpb246OmRpZE1lcmdlU3RhdGlzdGljKCkKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5q
ZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBh
Z2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpk
aWRTZXRFeHBpcmVkU3RhdGlzdGljKCkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxs
RGlkU2V0RXhwaXJlZFN0YXRpc3RpYyIpKTsKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0
ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2Uo
KSwgbWVzc2FnZU5hbWUuZ2V0KCksIDApOworfQorCiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRT
ZXRQcmV2YWxlbnRSZXNvdXJjZSgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1l
c3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERp
ZFNldFByZXZhbGVudFJlc291cmNlIikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5oCmluZGV4IDI5MzQ0MGMzNjFiNjFkMjQ4YTNmZTNmOTRjMjhhMDViMWNmNDlmZDIuLjYy
MzFiMGMyMDQ0NDVhZDYwYzk1ZDNlODE3ZmIzMGY0NzZmOGUxYTUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTgzLDYgKzgzLDcgQEAgcHVibGljOgogICAgIHZv
aWQgZGlkU2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoKTsKICAgICB2b2lkIGRpZFNl
dExhc3RTZWVuKCk7CiAgICAgdm9pZCBkaWRNZXJnZVN0YXRpc3RpYygpOworICAgIHZvaWQgZGlk
U2V0RXhwaXJlZFN0YXRpc3RpYygpOwogICAgIHZvaWQgZGlkU2V0UHJldmFsZW50UmVzb3VyY2Uo
KTsKICAgICB2b2lkIGRpZFNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZSgpOwogICAgIHZvaWQgZGlk
U2V0SGFzSGFkVXNlckludGVyYWN0aW9uKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzBjNzQ4ZjdhMTU3MWRjZTFlNmZk
NTU1MGQ4MzZjZThjZDBlMTg3MC4uYjI3ZDExNGUzMjJhOTU2ZjllNWYxNDMwYjE0MmFmNzkxZmRk
MTdiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA1LTE4ICBLYXRlIENoZW5leSAgPGth
dGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgb3BlcmF0aW5nIGRh
dGVzIGluIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIwMzQKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzYzMzQ5MjQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgbWVtb3J5IGFuZCBkYXRhYmFzZSBzdG9yZXMuCisK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRh
dGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLWRhdGFiYXNlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1k
YXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC1kYXRhYmFzZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFs
bC1idXQtY29va2llcy1yZW1vdmVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNv
b2tpZXMtcmVtb3ZlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEtcmVtb3ZlZC1k
YXRhYmFzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLXdlYnNpdGUtZGF0YS1yZW1vdmVk
LWRhdGFiYXNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxsLXdlYnNpdGUtZGF0YS1yZW1vdmVkLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQuaHRtbDogQWRkZWQu
CisKIDIwMjAtMDUtMjAgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgRGlzYWJsZSBzdXBwb3J0IGZvciBCZWZvcmVMb2FkRXZlbnQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0
ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtZGF0YWJhc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1h
bGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC1kYXRhYmFzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjVhNWVhMjQxMDg1ZTRiNTExYTgxMGY4OTZhYzRlMzQ5OWE4NDc0MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRp
bmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtZGF0YWJhc2UtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKKworQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogQ2xpZW50LXNp
ZGUgY29va2llIGV4aXN0cy4KK0JlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IEh0dHBPbmx5
IGNvb2tpZSBleGlzdHMuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBSZWd1bGFyIHNl
cnZlci1zaWRlIGNvb2tpZSBleGlzdHMuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBM
b2NhbFN0b3JhZ2UgZW50cnkgZG9lcyBleGlzdC4KK0JlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Np
bmc6IElEQiBlbnRyeSBkb2VzIGV4aXN0LgorCitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6
IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMuCitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IENs
aWVudC1zaWRlIGNvb2tpZSBleGlzdHMuCitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IFJl
Z3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIHN0YXRpc3RpY3MgcHJvY2Vz
c2luZzogTG9jYWxTdG9yYWdlIGVudHJ5IGRvZXMgbm90IGV4aXN0LgorQWZ0ZXIgc3RhdGlzdGlj
cyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuCisKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1k
YXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC1kYXRhYmFzZS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0
LWNvb2tpZXMtcmVtb3ZlZC1kYXRhYmFzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3ZTMxMjgxOWUxOWY5
ZGRkODY4YmE2Y2E3MzM3ODI1MmEwYmFhOTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1i
dXQtY29va2llcy1yZW1vdmVkLWRhdGFiYXNlLmh0bWwKQEAgLTAsMCArMSwyNTIgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2Nvb2tpZXMvcmVz
b3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InNldFRp
bWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxicj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8
YnI+Cis8c2NyaXB0PgorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIuc2V0VXNlSVRQRGF0YWJhc2UodHJ1
ZSk7CisKKyAgICBjb25zdCBodHRwT25seUNvb2tpZU5hbWUgPSAiaHR0cC1vbmx5LWNvb2tpZSI7
CisgICAgY29uc3Qgc2VydmVyU2lkZUNvb2tpZU5hbWUgPSAic2VydmVyLXNpZGUtY29va2llIjsK
KyAgICBjb25zdCBjbGllbnRTaWRlQ29va2llTmFtZSA9ICJjbGllbnQtc2lkZS1jb29raWUiOwor
CisgICAgZnVuY3Rpb24gc29ydFN0cmluZ0FycmF5KGEsIGIpIHsKKyAgICAgICAgYSA9IGEudG9M
b3dlckNhc2UoKTsKKyAgICAgICAgYiA9IGIudG9Mb3dlckNhc2UoKTsKKworICAgICAgICByZXR1
cm4gYSA+IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRk
TGluZWJyZWFrVG9PdXRwdXQoKSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiYnIiKTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQpOwor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZE91dHB1dChtZXNzYWdlKSB7CisgICAgICAgIGxldCBl
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGVsZW1lbnQu
aW5uZXJUZXh0ID0gbWVzc2FnZTsKKyAgICAgICAgb3V0cHV0LmFwcGVuZENoaWxkKGVsZW1lbnQp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llcyhpc0FmdGVyRGVsZXRpb24pIHsK
KyAgICAgICAgbGV0IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gW107CisgICAgICAgIGxl
dCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAgICAgICAgaWYgKCFjb29raWVz
Lmxlbmd0aCAmJiBpc0FmdGVyRGVsZXRpb24pCisgICAgICAgICAgICBhZGRPdXRwdXQoIkZBSUw6
ICIgKyAiTm8gY29va2llcyBmb3VuZC4iKTsKKyAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNv
b2tpZXMpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29va2llLm5hbWUpIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIGh0dHBPbmx5Q29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0
ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJC
ZWZvcmUiKSArICIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiAiICsgKGlzQWZ0ZXJEZWxldGlvbiA/
ICIgIiA6ICIiKSArICJIdHRwT25seSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIHNlcnZlclNpZGVDb29raWVOYW1lOgor
ICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0Fm
dGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzdGF0aXN0aWNzIHByb2Nlc3Np
bmc6IFJlZ3VsYXIgc2VydmVyLXNpZGUgY29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBjbGllbnRTaWRlQ29va2llTmFtZToK
KyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNB
ZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc3RhdGlzdGljcyBwcm9jZXNz
aW5nOiBDbGllbnQtc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsZXQgc29ydGVkVGVzdFBh
c3NlZE1lc3NhZ2VzID0gdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMuc29ydChzb3J0U3RyaW5n
QXJyYXkpOworICAgICAgICBmb3IgKGxldCB0ZXN0UGFzc2VkTWVzc2FnZSBvZiBzb3J0ZWRUZXN0
UGFzc2VkTWVzc2FnZXMpIHsKKyAgICAgICAgICAgIGFkZE91dHB1dCh0ZXN0UGFzc2VkTWVzc2Fn
ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBkYk5hbWUgPSAiVGVzdERhdGFiYXNl
IjsKKworICAgIGZ1bmN0aW9uIGNyZWF0ZUlEQkRhdGFTdG9yZShjYWxsYmFjaykgeworICAgICAg
ICBsZXQgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgIHJlcXVlc3Qu
b25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBj
cmVhdGUgaW5kZXhlZERCLiIpOworICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICB9
OworICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgICAgICAgICBsZXQgZGIgPSBldmVudC50YXJnZXQucmVzdWx0OworICAgICAgICAgICAgbGV0
IG9ialN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoInRlc3QiLCB7YXV0b0luY3JlbWVudDog
dHJ1ZX0pOworICAgICAgICAgICAgb2JqU3RvcmUuYWRkKCJ2YWx1ZSIpOworICAgICAgICAgICAg
Y2FsbGJhY2soKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IG1heEludGVydmFscyA9
IDIwOworCisgICAgbGV0IGludGVydmFsQ291bnRlcklEQjsKKyAgICBsZXQgY2hlY2tJREJDYWxs
YmFjazsKKyAgICBsZXQgY2hlY2tJREJJbnRlcnZhbElEOworICAgIGxldCBzZW1hcGhvcmVJREJD
aGVjayA9IGZhbHNlOworICAgIGZ1bmN0aW9uIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGlzQWZ0
ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3Q7CisgICAgICAgIGlu
dGVydmFsQ291bnRlcklEQiA9IDA7CisgICAgICAgIGNoZWNrSURCQ2FsbGJhY2sgPSBjYWxsYmFj
azsKKyAgICAgICAgaWYgKCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNr
IHVudGlsIHRoZXJlIGlzIGEgSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElEID0g
c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbWFwaG9yZUlE
QkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgc2Vt
YXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxD
b3VudGVySURCID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhcklu
dGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1
dCgiQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0
LiIpOworICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFt
ZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElE
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRl
eGVkREIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBp
bnRlcnZhbCBjaGVjayBhZ2Fpbi4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlE
QkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50
cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNo
ZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7
CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSwgMjAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRo
ZXJlIGlzIG5vIElEQi4KKyAgICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVy
dmFsKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2sp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJ
REJDaGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJ
REIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwo
Y2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRl
ciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAg
ICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAg
ICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAg
ICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZh
bElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGlj
cyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2FpbiBiZWNhdXNlIGRl
bGV0aW9uIG1pZ2h0IGJlIGRlbGF5ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhv
cmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQg
aW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUNh
bGxiYWNrOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQ7CisgICAgY29uc3Qg
bG9jYWxTdG9yYWdlTmFtZSA9ICJ0ZXN0IjsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VWYWx1ZSA9
ICJ2YWx1ZSI7CisgICAgZnVuY3Rpb24gY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoaXNBZnRlckRl
bGV0aW9uLCBjYWxsYmFjaykgeworICAgICAgICBpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2Ug
PSAwOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAg
ICAgIGlmICghaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0
aGVyZSBpcyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVy
dmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytp
bnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAg
ICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxT
dG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0YXRp
c3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2Fs
U3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAg
ICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmln
aW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tM
b2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0g
bG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAg
ICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdl
IGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMg
bm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFn
ZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMTAwKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIG5vIExv
Y2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNl
dEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291
bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAg
ICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nl
c3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1
ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVz
dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFn
ZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3Jh
Z2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0
cHV0KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAiICsg
KHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBl
eGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7
CisgICAgICAgIC8vIFdyaXRlIGNvb2tpZXMuCisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2ll
cy9yZXNvdXJjZXMvc2V0LWh0dHAtb25seS1jb29raWUucGhwP2Nvb2tpZU5hbWU9IiArIGh0dHBP
bmx5Q29va2llTmFtZSwgeyBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAg
YXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291cmNlcy9zZXRDb29raWVzLmNnaSIsIHsgaGVhZGVy
czogeyAiU2V0LUNvb2tpZSI6IHNlcnZlclNpZGVDb29raWVOYW1lICsgIj0xOyBwYXRoPS87IiB9
LCBjcmVkZW50aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgZG9jdW1lbnQuY29va2ll
ID0gY2xpZW50U2lkZUNvb2tpZU5hbWUgKyAiPTEiOworCisgICAgICAgIGNoZWNrQ29va2llcyhm
YWxzZSk7CisKKyAgICAgICAgLy8gV3JpdGUgTG9jYWxTdG9yYWdlCisgICAgICAgIGxvY2FsU3Rv
cmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUsIGxvY2FsU3RvcmFnZVZhbHVlKTsKKyAgICAg
ICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworCisgICAgICAg
ICAgICAvLyBXcml0ZSBJbmRleGVkREIuCisgICAgICAgICAgICBjcmVhdGVJREJEYXRhU3RvcmUo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGZh
bHNlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRw
dXQoKTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUo
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAg
ICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxi
YWNrKGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc3Rh
dGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBjaGVja1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIGNoZWNrQ29v
a2llcyh0cnVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1ZSwgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHModHJ1ZSwgZmluaXNo
VGVzdCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIGNvbnN0IG9yaWdpblVuZGVyVGVzdCAg
PSAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIjsKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewor
ICAgICAgICBpZiAodGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24o
b3JpZ2luVW5kZXJUZXN0KSkKKyAgICAgICAgICAgIGFkZE91dHB1dCgiRkFJTDogIiArIG9yaWdp
blVuZGVyVGVzdCArICIgc3RpbGwgaGFzIHVzZXIgaW50ZXJhY3Rpb24gYWZ0ZXIgcHJvY2Vzc2lu
Zy4iKTsKKyAgICAgICAgcmVzZXRDb29raWVzKCk7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
ZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGVzdFJ1
bm5lci5zZXRTdGF0aXN0aWNzRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUodHJ1ZSwg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIC8vIGluc2VydFN0YXRpc3RpY3NFeHBpcmVk
U3RhdGlzdGljKGRvbWFpbiwgaGFzSGFkVXNlckludGVyYWN0aW9uLCBpc1NjaGVkdWxlZEZvckFs
bEJ1dENvb2tpZURhdGFSZW1vdmFsLCBpc1ByZXZhbGVudCkKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKG9yaWdpblVuZGVyVGVzdCwgdHJ1
ZSwgdHJ1ZSwgZmFsc2UsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB3cml0ZVdl
YnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9v
cGVyYXRpbmctZGF0ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRl
cy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjVhNWVh
MjQxMDg1ZTRiNTExYTgxMGY4OTZhYzRlMzQ5OWE4NDc0MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0
ZXMtYWxsLWJ1dC1jb29raWVzLXJlbW92ZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAK
KworQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogQ2xpZW50LXNpZGUgY29va2llIGV4aXN0
cy4KK0JlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IEh0dHBPbmx5IGNvb2tpZSBleGlzdHMu
CitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNvb2tp
ZSBleGlzdHMuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50
cnkgZG9lcyBleGlzdC4KK0JlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBk
b2VzIGV4aXN0LgorCitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IEh0dHBPbmx5IGNvb2tp
ZSBleGlzdHMuCitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IENsaWVudC1zaWRlIGNvb2tp
ZSBleGlzdHMuCitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IFJlZ3VsYXIgc2VydmVyLXNp
ZGUgY29va2llIGV4aXN0cy4KK0FmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9y
YWdlIGVudHJ5IGRvZXMgbm90IGV4aXN0LgorQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJ
REIgZW50cnkgZG9lcyBub3QgZXhpc3QuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNv
b2tpZXMtcmVtb3ZlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtYnV0LWNvb2tpZXMtcmVtb3ZlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjkzZGVhNzhlNjEwMmI3YTExNzYwOTNjNTFkMTdhYTI0MzFjZGU5MTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC1idXQtY29va2llcy1yZW1vdmVkLmh0bWwKQEAgLTAsMCAr
MSwyNTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNy
Yz0iL2Nvb2tpZXMvcmVzb3VyY2VzL2Nvb2tpZS11dGlsaXRpZXMuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InNldFRpbWVvdXQoJ3J1blRlc3QoKScsIDApIj4KKzxicj4KKzxkaXYgaWQ9Im91
dHB1dCI+PC9kaXY+Cis8YnI+Cis8c2NyaXB0PgorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgY29uc3QgaHR0cE9ubHlD
b29raWVOYW1lID0gImh0dHAtb25seS1jb29raWUiOworICAgIGNvbnN0IHNlcnZlclNpZGVDb29r
aWVOYW1lID0gInNlcnZlci1zaWRlLWNvb2tpZSI7CisgICAgY29uc3QgY2xpZW50U2lkZUNvb2tp
ZU5hbWUgPSAiY2xpZW50LXNpZGUtY29va2llIjsKKworICAgIGZ1bmN0aW9uIHNvcnRTdHJpbmdB
cnJheShhLCBiKSB7CisgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNlKCk7CisgICAgICAgIGIgPSBi
LnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgcmV0dXJuIGEgPiBiID8gMSA6IGIgPiBhID8gLTEg
OiAwOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZExpbmVicmVha1RvT3V0cHV0KCkgeworICAg
ICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJyIik7CisgICAgICAg
IG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRP
dXRwdXQobWVzc2FnZSkgeworICAgICAgICBsZXQgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmlubmVyVGV4dCA9IG1lc3NhZ2U7CisgICAg
ICAgIG91dHB1dC5hcHBlbmRDaGlsZChlbGVtZW50KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBj
aGVja0Nvb2tpZXMoaXNBZnRlckRlbGV0aW9uKSB7CisgICAgICAgIGxldCB1bnNvcnRlZFRlc3RQ
YXNzZWRNZXNzYWdlcyA9IFtdOworICAgICAgICBsZXQgY29va2llcyA9IGludGVybmFscy5nZXRD
b29raWVzKCk7CisgICAgICAgIGlmICghY29va2llcy5sZW5ndGggJiYgaXNBZnRlckRlbGV0aW9u
KQorICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsgIk5vIGNvb2tpZXMgZm91bmQuIik7
CisgICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiBjb29raWVzKSB7CisgICAgICAgICAgICBzd2l0
Y2ggKGNvb2tpZS5uYW1lKSB7CisgICAgICAgICAgICAgICAgY2FzZSBodHRwT25seUNvb2tpZU5h
bWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2go
KGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJv
Y2Vzc2luZzogIiArIChpc0FmdGVyRGVsZXRpb24gPyAiICIgOiAiIikgKyAiSHR0cE9ubHkgY29v
a2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY2FzZSBzZXJ2ZXJTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0
ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJC
ZWZvcmUiKSArICIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBSZWd1bGFyIHNlcnZlci1zaWRlIGNv
b2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgY2xpZW50U2lkZUNvb2tpZU5hbWU6CisgICAgICAgICAgICAgICAgICAgIHVuc29y
dGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIgOiAi
QmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogQ2xpZW50LXNpZGUgY29va2llIGV4
aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgbGV0IHNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcyA9IHVuc29ydGVkVGVz
dFBhc3NlZE1lc3NhZ2VzLnNvcnQoc29ydFN0cmluZ0FycmF5KTsKKyAgICAgICAgZm9yIChsZXQg
dGVzdFBhc3NlZE1lc3NhZ2Ugb2Ygc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzKSB7CisgICAgICAg
ICAgICBhZGRPdXRwdXQodGVzdFBhc3NlZE1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorCisg
ICAgY29uc3QgZGJOYW1lID0gIlRlc3REYXRhYmFzZSI7CisKKyAgICBmdW5jdGlvbiBjcmVhdGVJ
REJEYXRhU3RvcmUoY2FsbGJhY2spIHsKKyAgICAgICAgbGV0IHJlcXVlc3QgPSBpbmRleGVkREIu
b3BlbihkYk5hbWUpOworICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGFkZE91dHB1dCgiQ291bGRuJ3QgY3JlYXRlIGluZGV4ZWREQi4iKTsKKyAgICAg
ICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmVxdWVzdC5vbnVwZ3Jh
ZGVuZWVkZWQgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgbGV0IGRiID0gZXZlbnQu
dGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAgIGxldCBvYmpTdG9yZSA9IGRiLmNyZWF0ZU9iamVj
dFN0b3JlKCJ0ZXN0Iiwge2F1dG9JbmNyZW1lbnQ6IHRydWV9KTsKKyAgICAgICAgICAgIG9ialN0
b3JlLmFkZCgidmFsdWUiKTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBjb25zdCBtYXhJbnRlcnZhbHMgPSAyMDsKKworICAgIGxldCBpbnRlcnZhbENv
dW50ZXJJREI7CisgICAgbGV0IGNoZWNrSURCQ2FsbGJhY2s7CisgICAgbGV0IGNoZWNrSURCSW50
ZXJ2YWxJRDsKKyAgICBsZXQgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICBmdW5jdGlv
biBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24sIGNhbGxiYWNrKSB7Cisg
ICAgICAgIGxldCByZXF1ZXN0OworICAgICAgICBpbnRlcnZhbENvdW50ZXJJREIgPSAwOworICAg
ICAgICBjaGVja0lEQkNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRl
bGV0aW9uKSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBhIElEQi4KKyAg
ICAgICAgICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gdHJ1ZTsKKwor
ICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBtYXhJbnRlcnZhbHMp
IHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQp
OworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nl
c3Npbmc6IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAg
c2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJD
YWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBj
bGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhZGRPdXRwdXQoIkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQgaW50ZXJ2YWwgY2hlY2sgYWdhaW4uCisgICAg
ICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJ
REJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3Jl
IHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOworICAgICAgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIwMCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBJREIuCisgICAgICAgICAg
ICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOworCisgICAgICAg
ICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFscykgeworICAg
ICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAg
ICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJ
REIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURC
Q2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tJREJDYWxsYmFjaygpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBp
bmRleGVkREIub3BlbihkYk5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uZXJy
b3IgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFs
KGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQo
IkNvdWxkbid0IG9wZW4gaW5kZXhlZERCLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2Vt
YXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRl
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5vbnVwZ3JhZGVuZWVkZWQgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRv
ZXMgbm90IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hl
Y2sgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbnN1Y2Nlc3Mg
PSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMZXQgdGhlIG5leHQg
aW50ZXJ2YWwgY2hlY2sgYWdhaW4gYmVjYXVzZSBkZWxldGlvbiBtaWdodCBiZSBkZWxheWVkLgor
ICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDAp
OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGludGVydmFsQ291bnRlckxvY2FsU3RvcmFn
ZTsKKyAgICBsZXQgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tMb2Nh
bFN0b3JhZ2VJbnRlcnZhbElEOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZU5hbWUgPSAidGVzdCI7
CisgICAgY29uc3QgbG9jYWxTdG9yYWdlVmFsdWUgPSAidmFsdWUiOworICAgIGZ1bmN0aW9uIGNo
ZWNrTG9jYWxTdG9yYWdlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsKKyAgICAg
ICAgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdlID0gMDsKKyAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikg
eworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgTG9jYWxTdG9yYWdlLgorICAg
ICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9yYWdl
ID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNo
ZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1
ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAg
ICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3Rv
cmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJk
b2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0
b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgeworICAgICAgICAg
ICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7Cisg
ICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2Fs
U3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0
aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2Nh
bFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBubyBMb2NhbFN0b3JhZ2UuCisgICAgICAgICAgICBj
aGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPj0gbWF4SW50
ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0
b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxT
dG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFk
ZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkg
IiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSAr
ICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJh
Y2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAg
IGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAg
ICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFt
ZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9j
ZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFs
dWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAg
ICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9LCAxMDApOworICAgICAgICB9CisgICAgfQorCisgICAgYXN5bmMgZnVuY3Rpb24g
d3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICAvLyBXcml0ZSBjb29raWVz
LgorICAgICAgICBhd2FpdCBmZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1odHRwLW9ubHkt
Y29va2llLnBocD9jb29raWVOYW1lPSIgKyBodHRwT25seUNvb2tpZU5hbWUsIHsgY3JlZGVudGlh
bHM6ICJzYW1lLW9yaWdpbiIgfSk7CisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNv
dXJjZXMvc2V0Q29va2llcy5jZ2kiLCB7IGhlYWRlcnM6IHsgIlNldC1Db29raWUiOiBzZXJ2ZXJT
aWRlQ29va2llTmFtZSArICI9MTsgcGF0aD0vOyIgfSwgY3JlZGVudGlhbHM6ICJzYW1lLW9yaWdp
biIgfSk7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNsaWVudFNpZGVDb29raWVOYW1lICsg
Ij0xIjsKKworICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UpOworCisgICAgICAgIC8vIFdyaXRl
IExvY2FsU3RvcmFnZQorICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsb2NhbFN0b3JhZ2VO
YW1lLCBsb2NhbFN0b3JhZ2VWYWx1ZSk7CisgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlRXhpc3Rz
KGZhbHNlLCBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgLy8gV3JpdGUgSW5kZXhlZERCLgor
ICAgICAgICAgICAgY3JlYXRlSURCRGF0YVN0b3JlKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgIGFkZExpbmVicmVha1RvT3V0cHV0KCk7CisgICAgICAgICAgICAgICAgICAg
IHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJvY2Vz
c1dlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0
YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjaGVja1dlYnNpdGVEYXRhQW5kQ29u
dGludWUpOworICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0Fu
ZERhdGFSZWNvcmRzKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tXZWJzaXRlRGF0YUFu
ZENvbnRpbnVlKCkgeworICAgICAgICBjaGVja0Nvb2tpZXModHJ1ZSk7CisgICAgICAgIGNoZWNr
TG9jYWxTdG9yYWdlRXhpc3RzKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGNoZWNr
SURCRGF0YVN0b3JlRXhpc3RzKHRydWUsIGZpbmlzaFRlc3QpOworICAgICAgICB9KTsKKyAgICB9
CisKKyAgICBjb25zdCBvcmlnaW5VbmRlclRlc3QgID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7
CisgICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKG9yaWdpblVuZGVyVGVzdCkpCisgICAgICAg
ICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5VbmRlclRlc3QgKyAiIHN0aWxsIGhhcyB1
c2VyIGludGVyYWN0aW9uIGFmdGVyIHByb2Nlc3NpbmcuIik7CisgICAgICAgIHJlc2V0Q29va2ll
cygpOworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBydW5UZXN0KCkgeworICAgICAgICBzZXRFbmFibGVGZWF0dXJlKHRydWUsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0ZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
ICAgICAvLyBpbnNlcnRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhkb21haW4sIGhhc0hhZFVz
ZXJJbnRlcmFjdGlvbiwgaXNTY2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQ
cmV2YWxlbnQpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzRXhwaXJl
ZFN0YXRpc3RpYyhvcmlnaW5VbmRlclRlc3QsIHRydWUsIHRydWUsIGZhbHNlLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRl
LWRhdGEtcmVtb3ZlZC1kYXRhYmFzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRh
dGEtcmVtb3ZlZC1kYXRhYmFzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTczMDk2YzgyZTNh
ZjE4MTUyM2I3OTg2NDc2NmNmNGM1NTEwZTY1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMtYWxs
LXdlYnNpdGUtZGF0YS1yZW1vdmVkLWRhdGFiYXNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEy
IEBACisKK0JlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IENsaWVudC1zaWRlIGNvb2tpZSBl
eGlzdHMuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBIdHRwT25seSBjb29raWUgZXhp
c3RzLgorQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogUmVndWxhciBzZXJ2ZXItc2lkZSBj
b29raWUgZXhpc3RzLgorQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdl
IGVudHJ5IGRvZXMgZXhpc3QuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50
cnkgZG9lcyBleGlzdC4KKworQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBObyBjb29raWVz
IGZvdW5kLgorQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkg
ZG9lcyBub3QgZXhpc3QuCitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBk
b2VzIG5vdCBleGlzdC4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEtcmVt
b3ZlZC1kYXRhYmFzZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQtZGF0YWJh
c2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yZTdmNTZmODIxYzZlNGFkNmRmMDg5NGYxNmNiNDNhY2QwOWVh
YjRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL29wZXJhdGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQtZGF0
YWJhc2UuaHRtbApAQCAtMCwwICsxLDI1MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9yZXNvdXJjZXMvY29va2llLXV0aWxpdGll
cy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0VGltZW91dCgncnVuVGVzdCgpJywgMCki
PgorPGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4KKzxicj4KKzxzY3JpcHQ+CisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cisg
ICAgdGVzdFJ1bm5lci5zZXRVc2VJVFBEYXRhYmFzZSh0cnVlKTsKKworICAgIGNvbnN0IGh0dHBP
bmx5Q29va2llTmFtZSA9ICJodHRwLW9ubHktY29va2llIjsKKyAgICBjb25zdCBzZXJ2ZXJTaWRl
Q29va2llTmFtZSA9ICJzZXJ2ZXItc2lkZS1jb29raWUiOworICAgIGNvbnN0IGNsaWVudFNpZGVD
b29raWVOYW1lID0gImNsaWVudC1zaWRlLWNvb2tpZSI7CisKKyAgICBmdW5jdGlvbiBzb3J0U3Ry
aW5nQXJyYXkoYSwgYikgeworICAgICAgICBhID0gYS50b0xvd2VyQ2FzZSgpOworICAgICAgICBi
ID0gYi50b0xvd2VyQ2FzZSgpOworCisgICAgICAgIHJldHVybiBhID4gYiA/IDEgOiBiID4gYSA/
IC0xIDogMDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGRMaW5lYnJlYWtUb091dHB1dCgpIHsK
KyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpOworICAg
ICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
YWRkT3V0cHV0KG1lc3NhZ2UpIHsKKyAgICAgICAgbGV0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZWxlbWVudC5pbm5lclRleHQgPSBtZXNzYWdlOwor
ICAgICAgICBvdXRwdXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gY2hlY2tDb29raWVzKGlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICBsZXQgdW5zb3J0ZWRU
ZXN0UGFzc2VkTWVzc2FnZXMgPSBbXTsKKyAgICAgICAgbGV0IGNvb2tpZXMgPSBpbnRlcm5hbHMu
Z2V0Q29va2llcygpOworICAgICAgICBpZiAoIWNvb2tpZXMubGVuZ3RoICYmIGlzQWZ0ZXJEZWxl
dGlvbikKKyAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRl
bGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBO
byBjb29raWVzIGZvdW5kLiIpOworICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgY29va2llcykg
eworICAgICAgICAgICAgc3dpdGNoIChjb29raWUubmFtZSkgeworICAgICAgICAgICAgICAgIGNh
c2UgaHR0cE9ubHlDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQ
YXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIp
ICsgIiBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6ICIgKyAoaXNBZnRlckRlbGV0aW9uID8gIiAiIDog
IiIpICsgIkh0dHBPbmx5IGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2Ugc2VydmVyU2lkZUNvb2tpZU5hbWU6CisgICAgICAg
ICAgICAgICAgICAgIHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxl
dGlvbiA/ICJBZnRlciIgOiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogUmVn
dWxhciBzZXJ2ZXItc2lkZSBjb29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIGNsaWVudFNpZGVDb29raWVOYW1lOgorICAgICAg
ICAgICAgICAgICAgICB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVs
ZXRpb24gPyAiQWZ0ZXIiIDogIkJlZm9yZSIpICsgIiBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IENs
aWVudC1zaWRlIGNvb2tpZSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGxldCBzb3J0ZWRUZXN0UGFzc2VkTWVz
c2FnZXMgPSB1bnNvcnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5zb3J0KHNvcnRTdHJpbmdBcnJheSk7
CisgICAgICAgIGZvciAobGV0IHRlc3RQYXNzZWRNZXNzYWdlIG9mIHNvcnRlZFRlc3RQYXNzZWRN
ZXNzYWdlcykgeworICAgICAgICAgICAgYWRkT3V0cHV0KHRlc3RQYXNzZWRNZXNzYWdlKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGRiTmFtZSA9ICJUZXN0RGF0YWJhc2UiOworCisg
ICAgZnVuY3Rpb24gY3JlYXRlSURCRGF0YVN0b3JlKGNhbGxiYWNrKSB7CisgICAgICAgIGxldCBy
ZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9y
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhZGRPdXRwdXQoIkNvdWxkbid0IGNyZWF0ZSBp
bmRleGVkREIuIik7CisgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgIH07CisgICAg
ICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAg
ICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAgICBsZXQgb2JqU3Rv
cmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgidGVzdCIsIHthdXRvSW5jcmVtZW50OiB0cnVlfSk7
CisgICAgICAgICAgICBvYmpTdG9yZS5hZGQoInZhbHVlIik7CisgICAgICAgICAgICBjYWxsYmFj
aygpOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgbWF4SW50ZXJ2YWxzID0gMjA7CisK
KyAgICBsZXQgaW50ZXJ2YWxDb3VudGVySURCOworICAgIGxldCBjaGVja0lEQkNhbGxiYWNrOwor
ICAgIGxldCBjaGVja0lEQkludGVydmFsSUQ7CisgICAgbGV0IHNlbWFwaG9yZUlEQkNoZWNrID0g
ZmFsc2U7CisgICAgZnVuY3Rpb24gY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoaXNBZnRlckRlbGV0
aW9uLCBjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdDsKKyAgICAgICAgaW50ZXJ2YWxD
b3VudGVySURCID0gMDsKKyAgICAgICAgY2hlY2tJREJDYWxsYmFjayA9IGNhbGxiYWNrOworICAg
ICAgICBpZiAoIWlzQWZ0ZXJEZWxldGlvbikgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwg
dGhlcmUgaXMgYSBJREIuCisgICAgICAgICAgICBjaGVja0lEQkludGVydmFsSUQgPSBzZXRJbnRl
cnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2sp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJ
REJDaGVjayA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJ
REIgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwo
Y2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZv
cmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBub3QgZXhpc3QuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFs
IGNoZWNrIGFnYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBj
bGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhZGRPdXRwdXQoIkJlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2Vz
IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrSURCQ2FsbGJhY2soKTsKKyAgICAg
ICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAyMDAp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMg
bm8gSURCLgorICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVu
Y3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGlmIChzZW1hcGhvcmVJREJDaGVjaykKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNr
ID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlcklEQiA+PSBt
YXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lE
QkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRp
c3RpY3MgcHJvY2Vzc2luZzogSURCIGVudHJ5IGRvZXMgZXhpc3QuIik7CisgICAgICAgICAgICAg
ICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNo
ZWNrSURCQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4oZGJOYW1lKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBvcGVuIGluZGV4ZWREQi4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0lEQkludGVydmFsSUQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nl
c3Npbmc6IElEQiBlbnRyeSBkb2VzIG5vdCBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBm
aW5pc2hUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gTGV0IHRoZSBuZXh0IGludGVydmFsIGNoZWNrIGFnYWluIGJlY2F1c2UgZGVsZXRpb24g
bWlnaHQgYmUgZGVsYXllZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNo
ZWNrID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBpbnRlcnZh
bENvdW50ZXJMb2NhbFN0b3JhZ2U7CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2s7
CisgICAgbGV0IGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRDsKKyAgICBjb25zdCBsb2NhbFN0
b3JhZ2VOYW1lID0gInRlc3QiOworICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZhbHVlID0gInZhbHVl
IjsKKyAgICBmdW5jdGlvbiBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyhpc0FmdGVyRGVsZXRpb24s
IGNhbGxiYWNrKSB7CisgICAgICAgIGludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA9IDA7Cisg
ICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYg
KCFpc0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlz
IExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9
IHNldEludGVydmFsKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFs
Q291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJbnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAg
ICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VO
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBw
cm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgIiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdl
VmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSArICIgZXhpc3QuIik7CisgICAgICAgICAgICAg
ICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJhY2soKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKHRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVy
VGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3Rv
cmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0
b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRk
T3V0cHV0KCJCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkg
IiArICh2YWx1ZSA9PT0gbG9jYWxTdG9yYWdlVmFsdWUgPyAiZG9lcyIgOiAiZG9lcyBub3QiKSAr
ICIgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrTG9jYWxTdG9yYWdlQ2FsbGJh
Y2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LCAxMDApOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgdW50aWwgdGhlcmUgaXMgbm8gTG9jYWxTdG9y
YWdlLgorICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEID0gc2V0SW50ZXJ2
YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVyTG9j
YWxTdG9yYWdlID49IG1heEludGVydmFscykgeworICAgICAgICAgICAgICAgICAgICBjbGVhcklu
dGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCk7CisgICAgICAgICAgICAgICAgICAg
IGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAg
ICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFmdGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzog
TG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRv
ZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVj
a0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGVz
dFJ1bm5lci5pc1N0YXRpc3RpY3NIYXNMb2NhbFN0b3JhZ2Uob3JpZ2luVW5kZXJUZXN0KSkgewor
ICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2
YWxJRCk7CisgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGxvY2FsU3RvcmFnZS5nZXRJ
dGVtKGxvY2FsU3RvcmFnZU5hbWUpOworICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkFm
dGVyIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUg
PT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIp
OworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAg
ICAgLy8gV3JpdGUgY29va2llcy4KKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jlc291
cmNlcy9zZXQtaHR0cC1vbmx5LWNvb2tpZS5waHA/Y29va2llTmFtZT0iICsgaHR0cE9ubHlDb29r
aWVOYW1lLCB7IGNyZWRlbnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBhd2FpdCBm
ZXRjaCgiL2Nvb2tpZXMvcmVzb3VyY2VzL3NldENvb2tpZXMuY2dpIiwgeyBoZWFkZXJzOiB7ICJT
ZXQtQ29va2llIjogc2VydmVyU2lkZUNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LzsiIH0sIGNyZWRl
bnRpYWxzOiAic2FtZS1vcmlnaW4iIH0pOworICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjbGll
bnRTaWRlQ29va2llTmFtZSArICI9MSI7CisKKyAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlKTsK
KworICAgICAgICAvLyBXcml0ZSBMb2NhbFN0b3JhZ2UKKyAgICAgICAgbG9jYWxTdG9yYWdlLnNl
dEl0ZW0obG9jYWxTdG9yYWdlTmFtZSwgbG9jYWxTdG9yYWdlVmFsdWUpOworICAgICAgICBjaGVj
a0xvY2FsU3RvcmFnZUV4aXN0cyhmYWxzZSwgZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgIC8v
IFdyaXRlIEluZGV4ZWREQi4KKyAgICAgICAgICAgIGNyZWF0ZUlEQkRhdGFTdG9yZShmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgY2hlY2tJREJEYXRhU3RvcmVFeGlzdHMoZmFsc2UsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBhZGRMaW5lYnJlYWtUb091dHB1dCgpOwor
ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHByb2Nlc3NXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCkgeworICAgICAgICB0
ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soY2hl
Y2tXZWJzaXRlRGF0YUFuZENvbnRpbnVlKTsKKyAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNz
UHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOworICAgIH0KKworICAgIGZ1bmN0aW9u
IGNoZWNrV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgY2hlY2tDb29raWVzKHRy
dWUpOworICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUV4aXN0cyh0cnVlLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgICAgICBjaGVja0lEQkRhdGFTdG9yZUV4aXN0cyh0cnVlLCBmaW5pc2hUZXN0KTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgY29uc3Qgb3JpZ2luVW5kZXJUZXN0ICA9ICJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAiOworICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgICAg
IGlmICh0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihvcmlnaW5V
bmRlclRlc3QpKQorICAgICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsgb3JpZ2luVW5kZXJU
ZXN0ICsgIiBzdGlsbCBoYXMgdXNlciBpbnRlcmFjdGlvbiBhZnRlciBwcm9jZXNzaW5nLiIpOwor
ICAgICAgICByZXNldENvb2tpZXMoKTsKKyAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAg
ICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAvLyBpbnNlcnRTdGF0
aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhkb21haW4sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbiwgaXNT
Y2hlZHVsZWRGb3JBbGxCdXRDb29raWVEYXRhUmVtb3ZhbCwgaXNQcmV2YWxlbnQpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NFeHBpcmVkU3RhdGlzdGljKG9yaWdpblVuZGVy
VGVzdCwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlm
ICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShvcmlnaW5VbmRlclRl
c3QpKQorICAgICAgICAgICAgICAgICAgICBhZGRPdXRwdXQoIkZBSUw6ICIgKyBvcmlnaW5VbmRl
clRlc3QgKyAiIGRpZCBub3QgZ2V0IGluc2VydGVkIGludG8gZGF0YWJhc2UuIik7CisgICAgICAg
ICAgICAgICAgd3JpdGVXZWJzaXRlRGF0YUFuZENvbnRpbnVlKCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSk7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0
aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEtcmVtb3ZlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFs
bC13ZWJzaXRlLWRhdGEtcmVtb3ZlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTczMDk2Yzgy
ZTNhZjE4MTUyM2I3OTg2NDc2NmNmNGM1NTEwZTY1MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9vcGVyYXRpbmctZGF0ZXMt
YWxsLXdlYnNpdGUtZGF0YS1yZW1vdmVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACisK
K0JlZm9yZSBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IENsaWVudC1zaWRlIGNvb2tpZSBleGlzdHMu
CitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBIdHRwT25seSBjb29raWUgZXhpc3RzLgor
QmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogUmVndWxhciBzZXJ2ZXItc2lkZSBjb29raWUg
ZXhpc3RzLgorQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5
IGRvZXMgZXhpc3QuCitCZWZvcmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9l
cyBleGlzdC4KKworQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBObyBjb29raWVzIGZvdW5k
LgorQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBMb2NhbFN0b3JhZ2UgZW50cnkgZG9lcyBu
b3QgZXhpc3QuCitBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IElEQiBlbnRyeSBkb2VzIG5v
dCBleGlzdC4KKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3Mvb3BlcmF0aW5nLWRhdGVzLWFsbC13ZWJzaXRlLWRhdGEtcmVtb3ZlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJh
dGluZy1kYXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Nzcx
OTY5MmUyOGMwYWU5M2NiODczNjRmODI2OWE1ZmQzMzc3ZmM5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL29wZXJhdGluZy1k
YXRlcy1hbGwtd2Vic2l0ZS1kYXRhLXJlbW92ZWQuaHRtbApAQCAtMCwwICsxLDI1MSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvY29va2llcy9y
ZXNvdXJjZXMvY29va2llLXV0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ic2V0
VGltZW91dCgncnVuVGVzdCgpJywgMCkiPgorPGJyPgorPGRpdiBpZD0ib3V0cHV0Ij48L2Rpdj4K
Kzxicj4KKzxzY3JpcHQ+CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBjb25zdCBodHRwT25seUNvb2tpZU5hbWUgPSAi
aHR0cC1vbmx5LWNvb2tpZSI7CisgICAgY29uc3Qgc2VydmVyU2lkZUNvb2tpZU5hbWUgPSAic2Vy
dmVyLXNpZGUtY29va2llIjsKKyAgICBjb25zdCBjbGllbnRTaWRlQ29va2llTmFtZSA9ICJjbGll
bnQtc2lkZS1jb29raWUiOworCisgICAgZnVuY3Rpb24gc29ydFN0cmluZ0FycmF5KGEsIGIpIHsK
KyAgICAgICAgYSA9IGEudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgYiA9IGIudG9Mb3dlckNhc2Uo
KTsKKworICAgICAgICByZXR1cm4gYSA+IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7CisgICAgfQor
CisgICAgZnVuY3Rpb24gYWRkTGluZWJyZWFrVG9PdXRwdXQoKSB7CisgICAgICAgIGxldCBlbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKTsKKyAgICAgICAgb3V0cHV0LmFwcGVu
ZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFkZE91dHB1dChtZXNzYWdl
KSB7CisgICAgICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgICAgIGVsZW1lbnQuaW5uZXJUZXh0ID0gbWVzc2FnZTsKKyAgICAgICAgb3V0cHV0LmFw
cGVuZENoaWxkKGVsZW1lbnQpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGNoZWNrQ29va2llcyhp
c0FmdGVyRGVsZXRpb24pIHsKKyAgICAgICAgbGV0IHVuc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2Vz
ID0gW107CisgICAgICAgIGxldCBjb29raWVzID0gaW50ZXJuYWxzLmdldENvb2tpZXMoKTsKKyAg
ICAgICAgaWYgKCFjb29raWVzLmxlbmd0aCAmJiBpc0FmdGVyRGVsZXRpb24pCisgICAgICAgIHVu
c29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzLnB1c2goKGlzQWZ0ZXJEZWxldGlvbiA/ICJBZnRlciIg
OiAiQmVmb3JlIikgKyAiIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTm8gY29va2llcyBmb3VuZC4i
KTsKKyAgICAgICAgZm9yIChsZXQgY29va2llIG9mIGNvb2tpZXMpIHsKKyAgICAgICAgICAgIHN3
aXRjaCAoY29va2llLm5hbWUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIGh0dHBPbmx5Q29va2ll
TmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5zb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVz
aCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6ICJCZWZvcmUiKSArICIgc3RhdGlzdGljcyBw
cm9jZXNzaW5nOiAiICsgKGlzQWZ0ZXJEZWxldGlvbiA/ICIgIiA6ICIiKSArICJIdHRwT25seSBj
b29raWUgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIHNlcnZlclNpZGVDb29raWVOYW1lOgorICAgICAgICAgICAgICAgICAgICB1bnNv
cnRlZFRlc3RQYXNzZWRNZXNzYWdlcy5wdXNoKChpc0FmdGVyRGVsZXRpb24gPyAiQWZ0ZXIiIDog
IkJlZm9yZSIpICsgIiBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IFJlZ3VsYXIgc2VydmVyLXNpZGUg
Y29va2llIGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBjbGllbnRTaWRlQ29va2llTmFtZToKKyAgICAgICAgICAgICAgICAgICAgdW5z
b3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMucHVzaCgoaXNBZnRlckRlbGV0aW9uID8gIkFmdGVyIiA6
ICJCZWZvcmUiKSArICIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBDbGllbnQtc2lkZSBjb29raWUg
ZXhpc3RzLiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBsZXQgc29ydGVkVGVzdFBhc3NlZE1lc3NhZ2VzID0gdW5zb3J0ZWRU
ZXN0UGFzc2VkTWVzc2FnZXMuc29ydChzb3J0U3RyaW5nQXJyYXkpOworICAgICAgICBmb3IgKGxl
dCB0ZXN0UGFzc2VkTWVzc2FnZSBvZiBzb3J0ZWRUZXN0UGFzc2VkTWVzc2FnZXMpIHsKKyAgICAg
ICAgICAgIGFkZE91dHB1dCh0ZXN0UGFzc2VkTWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBjb25zdCBkYk5hbWUgPSAiVGVzdERhdGFiYXNlIjsKKworICAgIGZ1bmN0aW9uIGNyZWF0
ZUlEQkRhdGFTdG9yZShjYWxsYmFjaykgeworICAgICAgICBsZXQgcmVxdWVzdCA9IGluZGV4ZWRE
Qi5vcGVuKGRiTmFtZSk7CisgICAgICAgIHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgYWRkT3V0cHV0KCJDb3VsZG4ndCBjcmVhdGUgaW5kZXhlZERCLiIpOworICAg
ICAgICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICB9OworICAgICAgICByZXF1ZXN0Lm9udXBn
cmFkZW5lZWRlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBsZXQgZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0OworICAgICAgICAgICAgbGV0IG9ialN0b3JlID0gZGIuY3JlYXRlT2Jq
ZWN0U3RvcmUoInRlc3QiLCB7YXV0b0luY3JlbWVudDogdHJ1ZX0pOworICAgICAgICAgICAgb2Jq
U3RvcmUuYWRkKCJ2YWx1ZSIpOworICAgICAgICAgICAgY2FsbGJhY2soKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGNvbnN0IG1heEludGVydmFscyA9IDIwOworCisgICAgbGV0IGludGVydmFs
Q291bnRlcklEQjsKKyAgICBsZXQgY2hlY2tJREJDYWxsYmFjazsKKyAgICBsZXQgY2hlY2tJREJJ
bnRlcnZhbElEOworICAgIGxldCBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgIGZ1bmN0
aW9uIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGlzQWZ0ZXJEZWxldGlvbiwgY2FsbGJhY2spIHsK
KyAgICAgICAgbGV0IHJlcXVlc3Q7CisgICAgICAgIGludGVydmFsQ291bnRlcklEQiA9IDA7Cisg
ICAgICAgIGNoZWNrSURCQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgaWYgKCFpc0FmdGVy
RGVsZXRpb24pIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIGEgSURCLgor
ICAgICAgICAgICAgY2hlY2tJREJJbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgaWYgKHNlbWFwaG9yZUlEQkNoZWNrKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgc2VtYXBob3JlSURCQ2hlY2sgPSB0cnVlOwor
CisgICAgICAgICAgICAgICAgaWYgKCsraW50ZXJ2YWxDb3VudGVySURCID49IG1heEludGVydmFs
cykgeworICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSURCSW50ZXJ2YWxJ
RCk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0YXRpc3RpY3MgcHJv
Y2Vzc2luZzogSURCIGVudHJ5IGRvZXMgbm90IGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAg
ICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGVja0lE
QkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFkZE91dHB1dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICAgICAgZmluaXNoVGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4dCBpbnRlcnZhbCBjaGVjayBhZ2Fpbi4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0g
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVj
a0lEQkludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJCZWZv
cmUgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkgZG9lcyBleGlzdC4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbWFwaG9yZUlEQkNoZWNrID0gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgMjAwKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIG5vIElEQi4KKyAgICAgICAg
ICAgIGNoZWNrSURCSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoc2VtYXBob3JlSURCQ2hlY2spCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IHRydWU7CisKKyAgICAg
ICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJJREIgPj0gbWF4SW50ZXJ2YWxzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAg
ICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6
IElEQiBlbnRyeSBkb2VzIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJ
REJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGVja0lEQkNhbGxiYWNrKCk7
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9
IGluZGV4ZWREQi5vcGVuKGRiTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qub25l
cnJvciA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2
YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1
dCgiQ291bGRuJ3Qgb3BlbiBpbmRleGVkREIuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBz
ZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNo
VGVzdCgpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0Lm9udXBncmFkZW5lZWRlZCA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tJREJJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGFkZE91dHB1dCgiQWZ0ZXIgc3RhdGlzdGljcyBwcm9jZXNzaW5nOiBJREIgZW50cnkg
ZG9lcyBub3QgZXhpc3QuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJD
aGVjayA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOworICAg
ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIExldCB0aGUgbmV4
dCBpbnRlcnZhbCBjaGVjayBhZ2FpbiBiZWNhdXNlIGRlbGV0aW9uIG1pZ2h0IGJlIGRlbGF5ZWQu
CisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmVJREJDaGVjayA9IGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIDIw
MCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgaW50ZXJ2YWxDb3VudGVyTG9jYWxTdG9y
YWdlOworICAgIGxldCBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrOworICAgIGxldCBjaGVja0xv
Y2FsU3RvcmFnZUludGVydmFsSUQ7CisgICAgY29uc3QgbG9jYWxTdG9yYWdlTmFtZSA9ICJ0ZXN0
IjsKKyAgICBjb25zdCBsb2NhbFN0b3JhZ2VWYWx1ZSA9ICJ2YWx1ZSI7CisgICAgZnVuY3Rpb24g
Y2hlY2tMb2NhbFN0b3JhZ2VFeGlzdHMoaXNBZnRlckRlbGV0aW9uLCBjYWxsYmFjaykgeworICAg
ICAgICBpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3JhZ2UgPSAwOworICAgICAgICBjaGVja0xvY2Fs
U3RvcmFnZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIGlmICghaXNBZnRlckRlbGV0aW9u
KSB7CisgICAgICAgICAgICAvLyBDaGVjayB1bnRpbCB0aGVyZSBpcyBMb2NhbFN0b3JhZ2UuCisg
ICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQgPSBzZXRJbnRlcnZhbChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytpbnRlcnZhbENvdW50ZXJMb2NhbFN0b3Jh
Z2UgPj0gbWF4SW50ZXJ2YWxzKSB7CisgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwo
Y2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHZh
bHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9jYWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAg
ICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxT
dG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxvY2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDog
ImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAgICAgICAgICAgICAgICAgICBjaGVja0xvY2Fs
U3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXN0UnVubmVy
LmlzU3RhdGlzdGljc0hhc0xvY2FsU3RvcmFnZShvcmlnaW5VbmRlclRlc3QpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tMb2NhbFN0b3JhZ2VJbnRlcnZhbElEKTsK
KyAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obG9j
YWxTdG9yYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGFkZE91dHB1dCgiQmVmb3JlIHN0
YXRpc3RpY3MgcHJvY2Vzc2luZzogTG9jYWxTdG9yYWdlIGVudHJ5ICIgKyAodmFsdWUgPT09IGxv
Y2FsU3RvcmFnZVZhbHVlID8gImRvZXMiIDogImRvZXMgbm90IikgKyAiIGV4aXN0LiIpOworICAg
ICAgICAgICAgICAgICAgICBjaGVja0xvY2FsU3RvcmFnZUNhbGxiYWNrKCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIENoZWNrIHVudGlsIHRoZXJlIGlzIG5vIExvY2FsU3RvcmFnZS4KKyAgICAgICAgICAg
IGNoZWNrTG9jYWxTdG9yYWdlSW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIGlmICgrK2ludGVydmFsQ291bnRlckxvY2FsU3RvcmFnZSA+PSBtYXhJ
bnRlcnZhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2Fs
U3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2Nh
bFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAg
YWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNzIHByb2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRy
eSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VWYWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIp
ICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxs
YmFjaygpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0
aWNzSGFzTG9jYWxTdG9yYWdlKG9yaWdpblVuZGVyVGVzdCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2xlYXJJbnRlcnZhbChjaGVja0xvY2FsU3RvcmFnZUludGVydmFsSUQpOworICAgICAgICAg
ICAgICAgICAgICBsZXQgdmFsdWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsb2NhbFN0b3JhZ2VO
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkT3V0cHV0KCJBZnRlciBzdGF0aXN0aWNzIHBy
b2Nlc3Npbmc6IExvY2FsU3RvcmFnZSBlbnRyeSAiICsgKHZhbHVlID09PSBsb2NhbFN0b3JhZ2VW
YWx1ZSA/ICJkb2VzIiA6ICJkb2VzIG5vdCIpICsgIiBleGlzdC4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlv
biB3cml0ZVdlYnNpdGVEYXRhQW5kQ29udGludWUoKSB7CisgICAgICAgIC8vIFdyaXRlIGNvb2tp
ZXMuCisgICAgICAgIGF3YWl0IGZldGNoKCIvY29va2llcy9yZXNvdXJjZXMvc2V0LWh0dHAtb25s
eS1jb29raWUucGhwP2Nvb2tpZU5hbWU9IiArIGh0dHBPbmx5Q29va2llTmFtZSwgeyBjcmVkZW50
aWFsczogInNhbWUtb3JpZ2luIiB9KTsKKyAgICAgICAgYXdhaXQgZmV0Y2goIi9jb29raWVzL3Jl
c291cmNlcy9zZXRDb29raWVzLmNnaSIsIHsgaGVhZGVyczogeyAiU2V0LUNvb2tpZSI6IHNlcnZl
clNpZGVDb29raWVOYW1lICsgIj0xOyBwYXRoPS87IiB9LCBjcmVkZW50aWFsczogInNhbWUtb3Jp
Z2luIiB9KTsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gY2xpZW50U2lkZUNvb2tpZU5hbWUg
KyAiPTEiOworCisgICAgICAgIGNoZWNrQ29va2llcyhmYWxzZSk7CisKKyAgICAgICAgLy8gV3Jp
dGUgTG9jYWxTdG9yYWdlCisgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxvY2FsU3RvcmFn
ZU5hbWUsIGxvY2FsU3RvcmFnZVZhbHVlKTsKKyAgICAgICAgY2hlY2tMb2NhbFN0b3JhZ2VFeGlz
dHMoZmFsc2UsIGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAvLyBXcml0ZSBJbmRleGVkREIu
CisgICAgICAgICAgICBjcmVhdGVJREJEYXRhU3RvcmUoZnVuY3Rpb24gKCkgeworICAgICAgICAg
ICAgICAgIGNoZWNrSURCRGF0YVN0b3JlRXhpc3RzKGZhbHNlLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgYWRkTGluZWJyZWFrVG9PdXRwdXQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHJvY2Vzc1dlYnNpdGVEYXRhQW5kQ29udGludWUoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBwcm9j
ZXNzV2Vic2l0ZURhdGFBbmRDb250aW51ZSgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxs
U3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKGNoZWNrV2Vic2l0ZURhdGFBbmRD
b250aW51ZSk7CisgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNz
QW5kRGF0YVJlY29yZHMoKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja1dlYnNpdGVEYXRh
QW5kQ29udGludWUoKSB7CisgICAgICAgIGNoZWNrQ29va2llcyh0cnVlKTsKKyAgICAgICAgY2hl
Y2tMb2NhbFN0b3JhZ2VFeGlzdHModHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgY2hl
Y2tJREJEYXRhU3RvcmVFeGlzdHModHJ1ZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0pOworICAg
IH0KKworICAgIGNvbnN0IG9yaWdpblVuZGVyVGVzdCAgPSAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
IjsKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICBpZiAodGVzdFJ1bm5lci5p
c1N0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24ob3JpZ2luVW5kZXJUZXN0KSkKKyAgICAg
ICAgICAgIGFkZE91dHB1dCgiRkFJTDogIiArIG9yaWdpblVuZGVyVGVzdCArICIgc3RpbGwgaGFz
IHVzZXIgaW50ZXJhY3Rpb24gYWZ0ZXIgcHJvY2Vzc2luZy4iKTsKKyAgICAgICAgcmVzZXRDb29r
aWVzKCk7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwg
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgLy8gaW5zZXJ0U3RhdGlzdGljc0V4cGlyZWRTdGF0
aXN0aWMoZG9tYWluLCBoYXNIYWRVc2VySW50ZXJhY3Rpb24sIGlzU2NoZWR1bGVkRm9yQWxsQnV0
Q29va2llRGF0YVJlbW92YWwsIGlzUHJldmFsZW50KQorICAgICAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTdGF0aXN0aWNzRXhwaXJlZFN0YXRpc3RpYyhvcmlnaW5VbmRlclRlc3QsIHRydWUsIGZhbHNl
LCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNT
dGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uob3JpZ2luVW5kZXJUZXN0KSkKKyAgICAgICAgICAg
ICAgICAgICAgYWRkT3V0cHV0KCJGQUlMOiAiICsgb3JpZ2luVW5kZXJUZXN0ICsgIiBkaWQgbm90
IGdldCBpbnNlcnRlZCBpbnRvIGRhdGFiYXNlLiIpOworICAgICAgICAgICAgICAgIHdyaXRlV2Vi
c2l0ZURhdGFBbmRDb250aW51ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAg
IH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>